为什么访问令牌请求需要redirect_uri?

the*_*hai 8 oauth-2.0 rfc6749 oauth2

我正在开发一个基于rfc6749的oauth2提供程序,我想知道,为什么访问令牌请求需要redirect_uri ?/ token端点没有重定向,并且假定状态已经过验证(即针对CSRF),因此redirectURI的副本对我没有多大意义.

cyb*_*est 5

在身份验证代码流中,它用于验证第一个身份验证请求中的 redirect_uri。 https://www.oauth.com/oauth2-servers/redirect-uris/redirect-uri-validation/

授予访问令牌

令牌端点将收到一个请求,以交换访问令牌的授权代码。此请求将包含重定向 URL 以及授权代码。作为一项额外的安全措施,服务器应验证此请求中的重定向 URL 是否与此授权代码的初始授权请求中包含的重定向 URL 完全匹配。如果重定向 URL 不匹配,服务器将拒绝请求并显示错误。

  • 这确实违反直觉,但可能非常重要。我在一个项目中重构了一个 OAuth2 消费者,结果因此而崩溃,花费了数小时的调试时间。同时,我非常怀疑额外支票的安全价值。假设 OAuth 代码(不可暴力破解)因为有人复制粘贴了整个 URL 而泄露,那么 redirect_uri 不是也泄露了?? (2认同)

dvs*_*gec -1

在以下情况下需要重定向 URI: 1. 授权代码流,其中服务器使用代码重定向到重定向 URI,例如对授权请求的响应示例为:

HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA
           &state=xyz
Run Code Online (Sandbox Code Playgroud)

Authz 代码流的错误响应也是如此:

HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=access_denied&state=xyz
Run Code Online (Sandbox Code Playgroud)

在隐式授予的情况下,服务器也会将哈希“#”片段中的访问令牌返回到请求中提供的重定向 URI