在添加客户端的OAuth 2中,您可以为其指定重定向网址。
e.g。
http://example.com
但是,当您请求授权用户时,您还会将请求重新发送回来作为请求的一部分。
e.g。
authorize?response_type=code&client_id=CLIENT_ID&return_url=http%3A%2F%2Fexample.com%2Fsecure%2F&state=STATE
我的问题基本上是,将重定向网址存储到客户端有什么意义?这仅仅是为了安全,以确保您只能重定向到原始网站,而不是作为请求的一部分传递的任何内容?
在任何情况下,我发现的是作为请求的一部分发送的return url参数不被视为例如始终使用http://example.com/secure
和针对客户端保存的重定向网址...因此,您不会被重定向到原始请求,只会重定向到主页。
应该怎么办?为什么我们有两次返回网址?
是不是只是存储了针对客户端的域,然后使用了传回的返回URL,然后对域进行了安全性比较?
答案 0 :(得分:1)
这确实是一项安全措施,因此只会将响应发送到在注册/管理时明确与客户关联的网址。
客户端可以注册多个重定向URI,在这种情况下,在请求中使用redirect_uri
查询参数来指示服务器需要向哪个注册值发送响应是有用的。如果只有一个注册值,则可以从请求中省略redirect_uri
查询参数。
此机制可防止网络钓鱼攻击,攻击者将网络钓鱼用户点击链接,该链接包含指向攻击者控制的域/服务器的精心设计的redirect_uri
参数。
规范确实允许注册可用于匹配请求中的redirect_uri
值的模式,例如,可以配置域范围的策略。这是一个特定于实现的选项。请注意,在这种情况下,您需要确保域中所有可能的URL /路径实际上是由客户端所有者控制的,而不是其他人(例如,不包括从外部域加载内容的页面,或者潜在的危险维基/论坛页面)。由于在现实生活中这很难,推荐/默认匹配非常严格。