OAuth2:查询字符串与片段

刚刚注意到,在OAuth2中,当请求的授权类型为“代码”时,回调将其包含在查询字符串参数中(在'?'之后)。 但是,当授予是“令牌”时,它将作为片段传递(在'#'之后)。

这看起来是规范的一部分(http://tools.ietf.org/html/draft-ietf-oauth-v2-26#section-4.2)

这个决定背后的理由是什么?

谢谢,彼得


当浏览器被网站重定向到带有查询参数的URL时,查询字符串也是浏览器现在发送给主机的请求的一部分。 碎片只在您的网络浏览器本地进行评估,不包含在对主机的请求中。

如果授权代码授权 (通常有一个Web应用程序)直接与提供商通话,则将数据发送到主机正是您需要的:

  • Web应用程序将您的浏览器重定向到您登录的提供程序。
  • 提供者现在告诉浏览器一个Web应用程序的回调URL,并附加一个授权码。 此代码必须发送到Web应用程序,因此它作为查询参数包含在对回调URL的请求中。
  • Web应用程序现在自己在后台与提供者进行交谈,并使用授权代码验证他是否确实允许向提供者查询访问令牌。
  • 隐式授权的情况下,您通常会在浏览器中直接运行一些JavaScript应用程序。 不需要将任何授权代码传递给主机,并且在大多数情况下,也不需要将访问令牌发送到主机,因为浏览器中的JS可以直接与提供者交谈。 通过这种方式,您可以在服务器上创建网站,该服务器使用从其他提供商查询的信息,并经过用户同意,而服务器永远不会访问用户的任何机密数据。 (如果是可信网站,则不会将访问令牌发送到服务器。)

    链接地址: http://www.djcxy.com/p/48007.html

    上一篇: OAuth2: query string vs. fragment

    下一篇: Can OAuth 2.0 support multiple grants in a single redirection journey?