OAuth2.0隐式授权流程。为什么要使用url哈希片段?

时间:2013-05-24 11:24:20

标签: oauth-2.0

通过新的OAuth2.0规范(rfc 6749),我看到Implicit Grant协议工作流使用Url Hash Fragments在Authorization服务器和公共客户端之间交换'access_token'。

参见规格:http://tools.ietf.org/html/rfc6749#section-4.2

授权授权响应不能作为“查询参数”而不是Url片段发送,保持流的其他部分不变吗?

基本上我无法理解OAuth2的规范作者为隐式授权流授权选择url哈希片段的限制吗?

2 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:7)

加我2美分..

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

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

如果是查询参数,查询参数也将通过网络发送。即使使用TLS,查询参数也会在您的代理日志中显示,使我们的访问令牌为非预期人员所知,从而导致访问令牌泄露。