我正在尝试使用authorization_code
授权流程设置我的身份验证。我以前使用过它grant_type=password
,所以我有点知道这些东西应该如何工作。但是在使用时grant_type=authorization_code
,我不能让它返回任何东西invalid_grant
这是我的设置:
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/auth/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(5),
Provider = new SampleAuthProvider()
});
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
AuthenticationType = "Bearer"
});
SampleAuthProvider 是以下类:https ://gist.github.com/anonymous/8a0079b705423b406c00
基本上,它只是记录每一步并验证它。我尝试了请求:
POST http://localhost:12345/auth/token
grant_type=authorization_code&code=xxxxxx&client_id=xxxxx&redirect_uri=https://xxxx.com/
Content-Type: application/x-www-form-urlencoded
它正在经历:
OnMatchEndpoint
OnValidateClientAuthentication
就这样。我预计它会调用OnValidateTokenRequest
和OnGrantAuthorizationCode
下一个,但它没有。我不知道为什么。
请求中的xxxx
' 不是占位符,我这样尝试过。也许中间件会自行进行一些检查并因此拒绝请求?redirect_uri
我尝试了with的变体http
,没有任何协议,没有斜杠......
它也适用于自定义grant_type
. 所以如果我太绝望了,我想我可以用它来模拟authorization_code
,但我宁愿不必那样做。
TL;博士
我使用后的OAuthAuthorizationServerProvider
回报。{"error":"invalid_grant"}
OnValidateClientAuthentication
grant_type=authorization_code
- 为什么停在那里?
- 我怎样才能使整个该死的事情发挥作用?
谢谢你的帮助!
编辑
正如 RajeshKannan 所指出的,我在配置中犯了一个错误。我没有提供AuthorizationCodeProvider
实例。但是,这并没有完全解决问题,因为在我的情况下,代码不是由 发布的AuthorizationCodeProvider
,我不能只是反序列化它。我对我开始工作的解决方法感到满意。