OAuth重定向URL

OAuth重定向URL,oauth,oauth-2.0,Oauth,Oauth 2.0,在OAuth2中,当您添加客户端时,会给它一个重定向url e、 g http://example.com 但是,当您为用户请求授权时,您也会将重定向url作为请求的一部分传回 e、 g authorize?response\u type=code&client\u id=client\u id&return\u url=http%3A%2F%2fexame.com%2Fsecure%2F&state=state 我的问题基本上是,针对客户端存储重定向url有什么意义?这是否只是为了安全起见,以

在OAuth2中,当您添加客户端时,会给它一个重定向url

e、 g

http://example.com

但是,当您为用户请求授权时,您也会将重定向url作为请求的一部分传回

e、 g

authorize?response\u type=code&client\u id=client\u id&return\u url=http%3A%2F%2fexame.com%2Fsecure%2F&state=state

我的问题基本上是,针对客户端存储重定向url有什么意义?这是否只是为了安全起见,以确保您只重定向到原始网站,而不是作为请求的一部分传递的任何内容

在任何情况下,我发现作为请求的一部分发送的return url参数都没有得到满足,例如
http://example.com/secure
并且始终使用针对客户端保存的重定向url。。。因此,您不会被重定向到原始请求,只会被重定向到主页

该怎么办?为什么我们有两次返回url


它不应该只是针对客户端存储的域,然后使用传回的返回url,然后比较域的安全性吗?

这确实是一种安全措施,因此响应只发送到在注册/管理时与客户端显式关联的url

客户端可以注册多个重定向uri,在这种情况下,在请求中使用
Redirect\u uri
查询参数指示服务器需要向哪个已注册值发送响应是很有用的。如果只有一个注册值,则可以从请求中省略
重定向\u uri
查询参数

此机制可防止网络钓鱼攻击,即攻击者通过单击包含精心编制的
重定向\u uri
参数的链接来钓鱼用户,该参数指向攻击者控制的域/服务器

该规范确实允许注册一个模式,该模式可用于匹配请求中的
重定向\u uri
值,因此可以配置一个域范围的策略。这是一个特定于实现的选项。请注意,在这种情况下,您需要确保域上所有可能的URL/路径实际上都由客户端所有者和其他人控制(例如,不包括从外部域加载内容的页面,或潜在危险的wiki/论坛页面)。因为这在现实生活中相当困难,所以推荐/默认匹配非常严格