oauth2.0 OIDC:代码流和隐式流中的url差异

ddrv8njm  于 2023-10-15  发布在  其他
关注(0)|答案(2)|浏览(125)

我是OIDC的新手。我指的是video在我的应用程序中使用OIDC
查看代码流的URL(响应类型:代码)和隐式流(响应类型:Id_token)我注意到一些奇怪的事情,在重定向URL中,code被提供为query parameter(后跟?),但id_token后跟#。同样的事情也发生在我的应用程序中。为什么id_token也不作为query parameter提供。我google了一下,但没有找到答案。
代码流url:

隐式流url:

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

pxq42qpu

pxq42qpu1#

隐式流已被弃用,并将令牌直接返回到浏览器。它在(客户端)哈希片段上执行此操作,Web服务器不包括在其日志文件中。
当单页应用程序是新的并且授权服务器不支持CORS时,这曾经是解决方案。
这些天授权代码流是标准的,我会把所有的努力都集中在这一点上。在此模型中,在查询参数中返回授权代码,但:

  • 它是一次性使用的,因此即使包含在服务器日志中,通常也不会被利用
  • 它通常还需要一个客户端密码,以便将其交换为令牌

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

efzxgjgh

efzxgjgh2#

授权代码流使用?code=...的原因是,此代码是为接收查询的 * 服务器 * 准备的。相反,隐式流使用#id_token=...,因为这是针对 * 客户端 * 的。浏览器只将哈希后没有片段部分的URL发送到服务器。
虽然关于(访问)token的隐式流在OAuth2.1中已被弃用,但关于id_token的隐式流却没有。
也就是说,最好的做法是在隐式验证代码流上使用验证代码流,以避免令牌出现在URL中。

相关问题