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

akn*_*non 28 oauth-2.0

通过新的OAuth2.0规范(rfc 6749),我看到隐式授权协议工作流使用Url Hash Fragments来交换授权服务器和公共客户端之间的"access_token".

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

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

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

Bas*_*hdy 22

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


Vay*_*aya 8

加我2美分..

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

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

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