【问题标题】:What are example use cases for OpenID implicit flow vs standard flow?OpenID 隐式流与标准流的示例用例是什么?
【发布时间】:2016-07-20 06:51:25
【问题描述】:
【问题讨论】:
标签:
authentication
single-sign-on
openid
keycloak
【解决方案1】:
授权代码流向用户隐藏生成的令牌,并确保只有正确的客户端应用程序才能访问它。这是一种三向通信:
- 用户向 openid 提供者进行身份验证。
- openid 提供程序向用户的浏览器返回一个授权码。
- 用户的浏览器将授权码传递给客户端应用程序。
- 客户端应用程序使用 授权码 和 客户端密码 调用 openid 提供程序,以确保它确实是客户端应用程序。
- openid 提供程序返回实际的访问令牌。
此流程对于基于服务器的应用程序更安全,因为访问令牌永远不会暴露给客户端浏览器。服务器应用程序还使用客户端密钥对自己进行身份验证,因此其他人无法使用它。
当整个客户端在浏览器中以Javascript运行时使用隐式流。 javascript 客户端无法保持“客户端机密”,因此没有任何用处,并且 javascript 客户端应该获取浏览器中可用的令牌。简单的解决方案是让 openid 提供者直接将访问令牌返回给浏览器。