我是OIDC
的新手。我指的是video在我的应用程序中使用OIDC
。
查看代码流的URL(响应类型:代码)和隐式流(响应类型:Id_token)我注意到一些奇怪的事情,在重定向URL中,code
被提供为query parameter
(后跟?
),但id_token
后跟#
。同样的事情也发生在我的应用程序中。为什么id_token
也不作为query parameter
提供。我google了一下,但没有找到答案。
代码流url:
隐式流url:
(视频参考:39:03,53:35)
2条答案
按热度按时间pxq42qpu1#
隐式流已被弃用,并将令牌直接返回到浏览器。它在(客户端)哈希片段上执行此操作,Web服务器不包括在其日志文件中。
当单页应用程序是新的并且授权服务器不支持CORS时,这曾经是解决方案。
这些天授权代码流是标准的,我会把所有的努力都集中在这一点上。在此模型中,在查询参数中返回授权代码,但:
如今,代码流也应该使用PKCE,它可以与客户端密码结合使用。
efzxgjgh2#
授权代码流使用
?code=...
的原因是,此代码是为接收查询的 * 服务器 * 准备的。相反,隐式流使用#id_token=...
,因为这是针对 * 客户端 * 的。浏览器只将哈希后没有片段部分的URL发送到服务器。虽然关于(访问)
token
的隐式流在OAuth2.1中已被弃用,但关于id_token
的隐式流却没有。也就是说,最好的做法是在隐式验证代码流上使用验证代码流,以避免令牌出现在URL中。