通过新的OAuth2.0规范(rfc 6749),我看到Implicit Grant协议工作流使用Url Hash Fragments在Authorization服务器和公共客户端之间交换'access_token' .
见规格:http://tools.ietf.org/html/rfc6749#section-4.2
授权授权响应不能作为“查询参数”而不是Url片段发送,保持流的其他部分不变吗?
基本上我无法理解OAuth2的规范作者为隐式授权流授权选择url哈希片段的限制?
通过新的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 回答
隐式授权流程是为java脚本客户端完成的,我认为他们使用'#'而不是'?'不将访问令牌发送到重定向URL的服务器端,但它仍然可以访问javascript,在我们的情况下客户端可能出于安全原因“不通过网络共享您的访问令牌可能是不安全的,就像用于重定向URL一样”
加我2美分..
从安全的角度来看,使用URI Fragment代替查询参数 . URI段永远不会通过网络发送到重定向网址 . 对于例如在Oauth授权服务器上登录后,位置 Headers 将具有“ur redirect url”#access_token = uraccesstoken,响应代码将为302.当浏览器看到302时,它将自动重定向到位置标头值(用户代理)自动执行并且javascript无法阻止此(afaik)) .
由于它是一个URI片段,只有重定向url通过网络发送,uri片段不是 .
如果它是查询参数,则查询参数也将通过网络发送 . 即使使用TLS,查询参数也会在您的代理日志中显示,使我们的访问令牌为非预期人员所知,从而导致访问令牌泄露 .