1

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

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

4

1 回答 1

1

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

  1. 用户向 openid 提供者进行身份验证。
  2. openid 提供者返回一个授权码给用户的浏览器。
  3. 用户的浏览器将授权代码传递给客户端应用程序。
  4. 客户端应用程序使用授权代码客户端密码调用 openid 提供程序,以确保它确实是客户端应用程序。
  5. openid 提供者返回实际的访问令牌。

此流程对于基于服务器的应用程序更安全,因为访问令牌永远不会暴露给客户端浏览器。服务器应用程序还使用客户端密码对自己进行身份验证,因此其他人无法使用它。

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

于 2016-04-01T05:37:35.073 回答