刚刚注意到,在 OAuth2 中,当请求的授权类型为:“code”时,回调将其包含在查询字符串参数中(在“?”之后)。但是,当授权是“令牌”时,它作为片段传递(在“#”之后)。
这看起来是规范的一部分(https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-26#section-4.2)
这种决定背后的理由是什么?
谢谢,彼得
刚刚注意到,在 OAuth2 中,当请求的授权类型为:“code”时,回调将其包含在查询字符串参数中(在“?”之后)。但是,当授权是“令牌”时,它作为片段传递(在“#”之后)。
这看起来是规范的一部分(https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-26#section-4.2)
这种决定背后的理由是什么?
谢谢,彼得
当您的浏览器被网站重定向到带有查询参数的 URL 时,查询字符串也是您的浏览器现在发送到主机的请求的一部分。片段仅由您的 Web 浏览器在本地评估,不包含在对主机的请求中。
在授权代码授予的情况下,您通常有一个直接与提供者对话的 Web 应用程序,将数据发送到主机正是您所需要的:
在隐式授权的情况下,您通常会在浏览器中直接运行一些 Javascript 应用程序。无需向主机传递任何授权码,在大多数情况下也无需向主机发送访问令牌,因为浏览器中的 JS 可以直接与提供者对话。这样,您可以例如在服务器上创建一个网站,该网站使用从另一个提供商查询的信息,并征得用户同意,其中服务器永远不会访问用户的任何机密数据。(如果是受信任的网站,则不会将访问令牌发送到服务器。)