OAuth 2.0“隐式流程”如何比“资源所有者密码”更好?

时间:2017-08-21 04:46:09

标签: oauth-2.0 identityserver4

我刚刚开始使用IdentityServer4,并通过不同的教程和文章。

我知道不同的架构有不同的流程。我主要构建单页应用程序(使用Angular)。据我所知,我基本上有两种选项可以进行身份​​验证,然后进行授权:

  • 隐含流量
  • 资源所有者密码(仅调用令牌端点)

我看到的每个地方都表明,隐含流量会更好(在一方面或另一方面)。

为什么?

我将成为API和SPA的产品所有者。

2 个答案:

答案 0 :(得分:1)

Implicit流程优于资源所有者密码有几个原因:

  1. /token端点应该要求客户端密码,单页应用程序(SPA)无法保密其安全。
  2. 用户通常比使用它的应用程序更信任OAuth2服务器。使用资源所有者密码流时,您的应用程序会读取用户名和密码,因此用户可能不愿意输入它。
  3. 您的应用程序可能存在安全问题,会将密码泄露给攻击者 - 不必要的风险。
  4. 使用资源所有者密码流,很难实现多种不同的身份验证方法。使用隐式流程,您可以免费获得它。
  5. 也许其他人会添加其他没有出现在我脑海中的理由。

答案 1 :(得分:0)

除了Ján所做的好处之外,值得注意的是,如果您使用资源所有者密码流,您将无法获得SSO。如果使用隐式流,Identity Server可以像任何网站一样存储用户,而使用资源所有者密码则无法查看用户之前是否已使用Identity Server对其他服务进行了身份验证。