我ve created an OAuth2 authorization in my application, but still i don
了解刷新令牌授权的工作原理。
我设法使用密码grant_type生成并存储refresh_token。
(在:
public async Task CreateAsync(AuthenticationTokenCreateContext context)
)
在第一个/令牌请求的结果中,响应如下:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiasFzI1NiJ9.eyJyb2xlIjoibWVtYmVyIiwidW5pcXVlX25hbWUiOiIyIiwiZ2l2ZW5fbmFtZSI6IkpvaG4iLCJmYW1pbHlfbmFtZSI6IlNtaXRoIiwiRXhlcmNpc2UiOiJBbWF6b24gRXhlcmNpc2UiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjUxMDAvdG9rZW4iLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjUxMDAvdG9rZW4iLCJleHAiOjE1MDI3MDg1ODYsIm5iZiI6MTUwMjcwNDk4Nn0.H7GOcSiqp9H53ckx5_3anwEEqhXCk_UAlOcorM_2vgs",
"token_type": "bearer",
"expires_in": 3599,
"refresh_token": "bf183e7d-b120-475f-881b-91a32d344e58"
}
但是,当我创建另一个/令牌POST时:
[{"key":"grant_type","value":"refresh_token","description":""},
{"key":"refresh_token","value":"00a4d77d-52a7-4b32-aa8c-6c7ad1d65696","description":""}]
我不知道如何处理这个refresh_token以创建和发送新的访问令牌。 有许多事情会自动发生,让我更加困惑。
此管理层应该在:
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
在CustomOAuthProvider中?
如果不是,那么哪个方法应检查传入的请求;以及如何处理它?</ p>
答案 0 :(得分:0)
我误解了ValidateClientAuthentication
方法。它仅适用于CLIENT(例如API,网站,WPF客户端),不适用于用户验证目的。
我设法做了以下事情:
中验证逻辑正确Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
另一件事是,我使用了自定义标题参数而不是默认值(我认为魔法绑定:) :)&#39;密码&#39;,&#39;用户名&#39;和&#39;范围&#39;
现在我可以访问OAuthGrantResourceOwnerCredentialsContext
对象中的所有内容,而无需使用context.OwinContext.Set("", ob)...
TL; DR ValidateClientAuthentication用于验证客户端(Api,网站等)
GrantResourceOwnerCredentials以验证给定的凭据是否正确