不记名令牌授权
问题描述:
我遇到了Identity Server 3和不记名令牌验证问题。不记名令牌授权
基本上,我可以用过期的访问令牌调用我的Web API方法,并且Web API验证用户并返回数据。
我已经设置我的客户端有一个360秒的访问令牌生存期,这确实是我检查索赔时的情况。
如何确保我的Web API无法使用过期的访问令牌调用。我需要在我的IdentityServerBearerTokenAuthenticationOptions
中设置什么吗?
谢谢。
答
当请求到来时,我们要做的第一件事就是检查身份是否已通过身份验证,身份验证类型是“持有者”。
private static bool RequestIsAuthenticated(HttpActionContext actionContext)
{
return (actionContext.RequestContext.Principal.Identity.AuthenticationType == "Bearer" && actionContext.RequestContext.Principal.Identity.IsAuthenticated);
}
如果这返回false,我们返回一个HttpStatusCode.Unauthorized。
您是否检查请求上下文中的主体标识是否已通过身份验证? –
@丹哈是的,它是验证,这是问题。我会想如果令牌已经过期,用户将不会被认证。目前为止,直到我有时间弄清楚,我才会写一个动作过滤器来检查访问令牌的失效日期,并在令牌过期时返回401。 –
有趣的...你可以添加你的令牌配置代码的问题? –