32

Going through the new OAuth2.0 Specs ( rfc 6749 ), I see that Implicit Grant protocol workflow uses Url Hash Fragments to exchange the 'access_token' between the Authorisation server and the public client.

See Specs: https://www.rfc-editor.org/rfc/rfc6749#section-4.2

Cannot the Authorisation grant response be send as 'Query Params' instead of the Url fragment, keeping other parts of the flow as it is ?

Basically I cannot understand the limitation that made spec authors of OAuth2 chose url hash fragments for Implicit grant flow authorisation ?

4

2 回答 2

25

隐式授予流程是为 java 脚本客户端完成的,我认为他们使用的是 '#' 而不是 '?' 不将访问令牌发送到您的重定向 URL 的服务器端,但它仍然可以访问 javascript,在我们的例子中是客户端可能是出于安全原因“不通过网络共享您的访问令牌可能像用于重定向 URL 的那样不安全”

于 2013-05-25T08:32:17.760 回答
10

加上我的 2 美分 ..

从安全的角度来看,使用 URI Fragment 代替查询参数。URI 段永远不会通过网络发送到重定向 url。例如在Oauth授权服务器上登录后,位置标头将有“ur redirect url”#access_token=uraccesstoken,响应码为302。当浏览器看到302时,它会自动重定向到位置标头值(用户代理会自动执行此操作,并且 javascript 无法阻止此操作(afaik))。

由于它是一个 URI 片段,因此只有重定向 url 会通过网络发送,而不是 uri 片段。

如果是查询参数,查询参数也将通过网络发送。即使使用 TLS,查询参数也会在您的代理日志中可见,从而使我们的访问令牌被无意中的人知道,从而导致访问令牌泄漏。

于 2016-12-06T16:08:40.680 回答