OAuth2 refresh_token grant

时间:2017-08-14 10:09:40

标签: c# authentication oauth-2.0 authorization

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>

1 个答案:

答案 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以验证给定的凭据是否正确