我正在尝试使用micronaut中的Bitbucket Oauth设置Oauth2 Authoization Code流。 我已经在我的Mirconaut配置中为auth设置了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添加到令牌请求中?这是错误吗?据我所知,token_uri在令牌请求中是必需的,如果它也存在于先前的授权请求中(请参阅https://tools.ietf.org/html/rfc6749#section-4.1.3)
谢谢
丹尼
答案 0 :(得分:0)
使用Tornado在Bitbucket上设置OAuth2时遇到此问题。希望它可以帮助您在micronaut中专门找到该问题
如您所知,身份验证分为两个阶段。
它们都在POST正文中带有redirect_uri,但是对于两个调用,它们必须相同。只要它们以Bitbucket的OAuth使用者设置中指定的相同的uri开头(例如https://f.q.d.n/),它们就可以指向更特定的路径(例如https://f.q.d.n/some/specific/end-point)
重要的是,两个调用的它们必须相同,否则您将是redirect_uri不匹配的错误。