Web API - 获取在令牌,ExpiresUtc和IssuedUtc中加密的信息

时间:2015-05-08 16:28:23

标签: asp.net-web-api oauth asp.net-web-api2 access-token

我使用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

1 个答案:

答案 0 :(得分:3)

您可以使用AuthenticationProperties轻松检索IAuthenticationManager.AuthenticateAsync字典,该字典会返回AuthenticateResult个对象:https://msdn.microsoft.com/en-us/library/dn270674(v=vs.113).aspx

从Web API控制器,您需要GetOwinContext扩展名才能从请求消息中获取OWIN上下文并使用IOwinContext.Authenticationhttps://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来电,但我认为这是一个例子。