OIDC:代码流和隐式流的url差异

问题描述

我是 OIDC 的新手。我指的是 video 在我的应用程序中使用 OIDC

查看代码流(响应类型:代码)和隐式流(响应类型:Id_token)的 URL 我注意到一些奇怪的东西,在重定向 URL 中,code 是作为 query parameter 提供的(后面是由 ?) 但 id_token 后跟 #。同样的事情也在我的应用程序中发生。为什么 id_token 也不作为 query parameter 提供。我用谷歌搜索但没有找到任何答案。

代码流网址:

code flow

隐式流网址:

implicit flow

(视频参考:39:03、53:35)

解决方法

隐式流已弃用,并将令牌直接返回到浏览器。它在一个(客户端)散列片段上执行此操作,而 Web 服务器并未将其包含在其日志文件中。

当单页应用程序是新的并且授权服务器不支持 CORS 时,这曾经是解决方案。

如今,授权代码流是标准流程,我会将您的所有精力集中在这方面。在此模型中,授权代码在查询参数中返回,但:

  • 它是一次性使用,因此即使包含在服务器日志中,通常也无法被利用
  • 通常还需要一个客户端密钥才能将其交换为令牌

如今,代码流还应该使用 PKCE,它可以与客户端密钥结合使用。