[英]get OWIN bearer token before returning the response
我已經使用OWIN和不記名令牌實現了身份驗證,並且在用戶登錄時工作正常。
調用\\ Token URL並將用戶名/密碼傳遞給它時,會給出令牌作為響應。 但是我想將此令牌存儲在數據庫中,所以無需再次調用服務器,我可以用代碼獲取令牌嗎? 我無法在票證或任何其他對象中獲取生成的令牌的值。
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
return Task.Factory.StartNew(() =>
{
var username = context.UserName;
var password = context.Password;
var userService = new UserService();
User user = userService.GetUserByCredentials(username, password);
if (user != null)
{
var claims = new List<Claim>()
{
new Claim(ClaimTypes.Name, user.userName),
new Claim("UserID", user.userName)
};
ClaimsIdentity oAutIdentity = new ClaimsIdentity(claims, Startup.OAuthOptions.AuthenticationType);
var ticket = new AuthenticationTicket(oAutIdentity, new AuthenticationProperties() { });
context.Validated(ticket);
}
else
{
context.SetError("invalid_grant", "Error");
}
});
}
我正在調試代碼,但是令人驚訝的是,access_token似乎只有在郵遞員結果中才能看到。
令牌永遠無效。 每次身份驗證都會給出一個新令牌,並且該令牌在一定時間內有效。 將此令牌保存到數據庫沒有用。
你當然可以。 您只需要在TokenEndpointResponse
重寫方法authServerProvider : OAuthAuthorizationServerProvider
。
在OAuthTokenEndpointResponseContext
內部,有一個名為accessToken
的字段,您可以檢索令牌值。
public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
{
// Summary:
// Called before the TokenEndpoint redirects its response to the caller.
return Task.FromResult<object>(null);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.