OAuth2:使用哪个流程?
OAuth2: Which flow to use?
OAuth2 中似乎有四个不同的流程,即 (link),
- 授权代码流 - 与服务器端应用程序一起使用
- 隐式 - 与移动应用程序或 Web 应用程序一起使用(应用程序
运行 在用户设备上)
- 资源所有者密码凭据 - 与受信任的应用程序一起使用
例如服务本身拥有的那些。
- 客户端凭据 - 用于应用程序 API 访问。
如果我正在开发一个移动应用程序,该应用程序将消耗其自身的资源 API,即该移动应用程序是由开发 API 的同一个团队开发的,四个 OAuth 中的哪一个我应该使用 flows 以及如何使用?
鉴于我的情况,在我看来选项 3 是可行的方法。如果是这样的话,你会采用以下流程吗:
- 发布您的移动应用程序,其中存储了 ClientId 和 ClientSecret
它(被认为是好的,因为应用程序是可信的)。
- 要求用户使用基于 cookie 的方式登录他们的帐户
身份验证(立即删除他们的用户名和密码)。
- 缓存在
基于 cookie 的身份验证的响应。
- 使用缓存的用户名和密码,以及 ClientId 和
ClientSecret,从令牌中请求访问和刷新令牌
OAuth 服务器端点。
这看起来合理吗?很高兴知道我在上述思考过程中是否走在正确的轨道上,或者我是否正在做一些非常愚蠢的事情并且应该以其他方式来做。
Resource Owner Password Credentials flow 适合您的情况。
顺便说一句,移动应用程序很难对其客户端机密保密 (RFC 6749, 2.1. Client Types, RFC 6749, 9. Native Applications)。因此,在正常情况下,客户端机密不应嵌入到移动应用程序中。换句话说,嵌入客户端密钥在安全方面几乎没有意义。
2- Implicit - used with Mobile Apps or Web Applications (applications
that run on the user's device)
如果您的应用程序完全在移动设备上运行,那么我们鼓励您使用此流程,因为您的移动应用程序无法保证其客户端凭据的机密性。
OAuth2 中似乎有四个不同的流程,即 (link),
- 授权代码流 - 与服务器端应用程序一起使用
- 隐式 - 与移动应用程序或 Web 应用程序一起使用(应用程序 运行 在用户设备上)
- 资源所有者密码凭据 - 与受信任的应用程序一起使用 例如服务本身拥有的那些。
- 客户端凭据 - 用于应用程序 API 访问。
如果我正在开发一个移动应用程序,该应用程序将消耗其自身的资源 API,即该移动应用程序是由开发 API 的同一个团队开发的,四个 OAuth 中的哪一个我应该使用 flows 以及如何使用?
鉴于我的情况,在我看来选项 3 是可行的方法。如果是这样的话,你会采用以下流程吗:
- 发布您的移动应用程序,其中存储了 ClientId 和 ClientSecret 它(被认为是好的,因为应用程序是可信的)。
- 要求用户使用基于 cookie 的方式登录他们的帐户 身份验证(立即删除他们的用户名和密码)。
- 缓存在 基于 cookie 的身份验证的响应。
- 使用缓存的用户名和密码,以及 ClientId 和 ClientSecret,从令牌中请求访问和刷新令牌 OAuth 服务器端点。
这看起来合理吗?很高兴知道我在上述思考过程中是否走在正确的轨道上,或者我是否正在做一些非常愚蠢的事情并且应该以其他方式来做。
Resource Owner Password Credentials flow 适合您的情况。
顺便说一句,移动应用程序很难对其客户端机密保密 (RFC 6749, 2.1. Client Types, RFC 6749, 9. Native Applications)。因此,在正常情况下,客户端机密不应嵌入到移动应用程序中。换句话说,嵌入客户端密钥在安全方面几乎没有意义。
2- Implicit - used with Mobile Apps or Web Applications (applications that run on the user's device)
如果您的应用程序完全在移动设备上运行,那么我们鼓励您使用此流程,因为您的移动应用程序无法保证其客户端凭据的机密性。