【问题标题】:Oauth2 token request does not contain redirect_uriOauth2 令牌请求不包含 redirect_uri
【发布时间】:2019-12-04 18:01:22
【问题描述】:

我正在尝试在 micronaut 中使用 Bitbucket Oauth 设置 Oauth2 授权代码流。 我已经在我的 Mirconaut 配置中为身份验证设置了 Github 和 Bitbucket。

每当我(尝试)使用 Bitbucket 登录时,都会收到 redirect_uri 不匹配错误。

{"message":"Internal Server Error: error: invalid_request, errorDescription: redirect_uri does not match, errorUri: null"}

在进行一些研究并启用一些跟踪日志记录后,我发现访问令牌请求中缺少 redirect_uri。

09:33:53.263 [nioEventLoopGroup-1-5] DEBUG i.m.http.client.DefaultHttpClient - Sending HTTP Request: POST /site/oauth2/access_token
09:33:53.263 [nioEventLoopGroup-1-5] DEBUG i.m.http.client.DefaultHttpClient - Chosen Server: bitbucket.org(-1)
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - Accept: application/json
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - Authorization: Basic xxxxxxx
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - content-type: application/x-www-form-urlencoded
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - host: bitbucket.org
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - connection: close
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - content-length: 53
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - Request Body
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - ----
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - code=PuaUDFGTmQ4Gh9gJPM&grant_type=authorization_code
09:33:53.264 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - ----
09:33:53.762 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - HTTP Client Response Received for Request: POST https://bitbucket.org/site/oauth2/access_token
09:33:53.762 [nioEventLoopGroup-1-5] TRACE i.m.http.client.DefaultHttpClient - Status Code: 400 Bad Request

每当我使用 curl 之类的东西重新创建调用并添加(默认)redirect_uri 时,我都会取回正确的访问令牌并能够使用它。

有没有办法将redirect_uri 添加到令牌请求中?这是一个错误吗?据我所知,如果之前的授权请求中也存在redirect_uri,则令牌请求中需要redirect_uri(请参阅https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3

谢谢,

丹尼

【问题讨论】:

标签: oauth-2.0 bitbucket micronaut


【解决方案1】:

我在使用 Tornado 在 Bitbucket 上设置 OAuth2 时遇到了这个问题。我希望它可以帮助您专门在 micronaut 中找到这个问题

如您所知,身份验证分为两个阶段。

  1. 授权 (https://bitbucket.org/site/oauth2/authorize) 返回一个令牌和
  2. 授权码授予 (https://bitbucket.org/site/oauth2/access_token)

它们都在 POST 正文中使用了一个 redirect_uri,但它们必须在两个调用中相同。只要它们以 Bitbucket 的 OAuth 使用者设置中指定的相同 uri 开头(例如 https://f.q.d.n/),它们就可以指向更具体的路径(例如 https://f.q.d.n/some/specific/end-point

重要的是,这两个调用必须相同,否则您将出现 redirect_uri 不匹配错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2019-09-13
    • 2018-08-13
    • 2012-06-08
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多