OpenID隐式流与标准流的示例用例是什么?

时间:2016-03-31 17:22:40

标签: authentication single-sign-on openid keycloak

在什么情况下你会使用OpenID Connect Implicit流程: http://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth

与标准流程相比? http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth

1 个答案:

答案 0 :(得分:1)

授权代码流隐藏用户生成的令牌,并确保只有正确的客户端应用程序才能访问它。这是一种三方沟通:

  1. 用户向openid提供程序进行身份验证。
  2. openid提供程序将授权代码返回给用户的浏览器。
  3. 用户的浏览器将授权代码传递给客户端应用程序。
  4. 客户端应用程序使用授权代码客户端密钥调用openid提供程序,以确保它确实是客户端应用程序。
  5. openid提供程序返回实际的访问权限。
  6. 此流程对于基于服务器的应用程序更安全,因为访问令牌永远不会暴露给客户端浏览器。服务器应用程序还使用客户端密钥对自身进行身份验证,因此其他任何人都无法使用它。

    当整个客户端在浏览器中使用Javascript运行时,将使用隐式流。 javascript客户端无法保持“客户端机密”,因此没有用,javascript客户端应该在浏览器中获取令牌。简单的解决方案是让openid提供程序将访问令牌直接返回给浏览器。