问题描述
我是 OIDC
的新手。我指的是 video 在我的应用程序中使用 OIDC
。
查看代码流(响应类型:代码)和隐式流(响应类型:Id_token)的 URL 我注意到一些奇怪的东西,在重定向 URL 中,code
是作为 query parameter
提供的(后面是由 ?
) 但 id_token
后跟 #
。同样的事情也在我的应用程序中发生。为什么 id_token
也不作为 query parameter
提供。我用谷歌搜索但没有找到任何答案。
代码流网址:
隐式流网址:
(视频参考:39:03、53:35)
解决方法
隐式流已弃用,并将令牌直接返回到浏览器。它在一个(客户端)散列片段上执行此操作,而 Web 服务器并未将其包含在其日志文件中。
当单页应用程序是新的并且授权服务器不支持 CORS 时,这曾经是解决方案。
如今,授权代码流是标准流程,我会将您的所有精力集中在这方面。在此模型中,授权代码在查询参数中返回,但:
- 它是一次性使用,因此即使包含在服务器日志中,通常也无法被利用
- 通常还需要一个客户端密钥才能将其交换为令牌
如今,代码流还应该使用 PKCE,它可以与客户端密钥结合使用。