我使用Web API作为我的后端,并使用内置机制实现令牌安全性。在模板代码中,当发出访问令牌时,我可以获得令牌的已发布和过期日期:
public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
var issued = context.Properties.IssuedUtc;
var expired = context.Properties.ExpiresUtc;
.
.
.
}
现在,当一个需要授权的方法发出请求时,我想做类似的事情:
[Authorize]
public async Task<string> GetTokenInfo()
{
//var issued = GetCurrentTicket().Properties.ExpiresUtc;
//var issued = GetCurrentTicket().Properties.IssuedUtc;
.
.
.
}
那么如何在令牌内加密信息,更具体地说是 ExpireUtc 和 IssuedUtc ?
答案 0 :(得分:3)
您可以使用AuthenticationProperties
轻松检索IAuthenticationManager.AuthenticateAsync
字典,该字典会返回AuthenticateResult
个对象:https://msdn.microsoft.com/en-us/library/dn270674(v=vs.113).aspx
从Web API控制器,您需要GetOwinContext
扩展名才能从请求消息中获取OWIN上下文并使用IOwinContext.Authentication
:https://msdn.microsoft.com/en-us/library/system.net.http.owinhttprequestmessageextensions.getowincontext(v=vs.118).aspx
var context = Request.GetOwinContext();
var result = await context.Authentication.AuthenticateAsync(OAuthDefaults.AuthenticationType);
if (result == null) {
throw new InvalidOperationException();
}
var properties = result.Properties;
(当然,您还需要在app.UseOAuthBearerAuthentication
课程中进行正确配置的Startup
来电,但我认为这是一个例子。