我正在配置我的OAUTH2服务器以支持authorization_code流程,但我正试图交换access_token的访问代码。每次我测试电话时都会收到invalid_grant错误。
以下是我理解工作流程的方法:
我的代码中触发的最后一个方法是AuthenticationTokenProvider.Receive方法,但我收到invalid_grant错误而不是生成令牌。我认为这个方法应该在某个地方触发另一个调用,也许我只是在我的配置中遗漏了一些东西。
以下是我在我的环境中配置OAuth的方法:
var oAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = allowInsecureHttp,
TokenEndpointPath = new PathString("/oauth2/token"),
AuthorizeEndpointPath = new PathString("/oauth2/authorize"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = new CustomOAuthProvider(HlGlobals.Kernel),
AccessTokenFormat = new CustomJwtFormat(_baseUrl, HlGlobals.Kernel),
AuthorizationCodeProvider = new SimpleAuthenticationTokenProvider()
};
// OAuth 2.0 Bearer Access Token Generation
app.UseOAuthAuthorizationServer(oAuthServerOptions);
我能够获得一个授权代码,该代码可以毫无问题地发送到回调网址。
邮递员内部我使用https://www.getpostman.com/oauth2/callback作为我的回调网址。但是,我也尝试通过postman POST请求将后续请求发送到我的令牌端点。两种方法都产生相同的结果。
第二个调用,对oauth服务器的POST调用,包括正文中的代码,在返回400之前触发以下事件:
在receive方法中,我在调用context.DeserializeTicket(value)之前验证代码是否有效。
我理解ReceiveCode方法除了启动令牌创建过程之外,还要从数据存储中删除一次性使用代码....但我不确定。
有关我缺少什么的想法,以及如何使用authorization_code grant_type实现服务器代码以交换auth代码的auth代码?
我很乐意根据要求提供任何其他信息。谢谢!