不记名令牌授权

问题描述:

我遇到了Identity Server 3和不记名令牌验证问题。不记名令牌授权

基本上,我可以用过期的访问令牌调用我的Web API方法,并且Web API验证用户并返回数据。

我已经设置我的客户端有一个360秒的访问令牌生存期,这确实是我检查索赔时的情况。

如何确保我的Web API无法使用过期的访问令牌调用。我需要在我的IdentityServerBearerTokenAuthenticationOptions中设置什么吗?

谢谢。

+0

您是否检查请求上下文中的主体标识是否已通过身份验证? –

+0

@丹哈是的,它是验证,这是问题。我会想如果令牌已经过期,用户将不会被认证。目前为止,直到我有时间弄清楚,我才会写一个动作过滤器来检查访问令牌的失效日期,并在令牌过期时返回401。 –

+0

有趣的...你可以添加你的令牌配置代码的问题? –

当请求到来时,我们要做的第一件事就是检查身份是否已通过身份验证,身份验证类型是“持有者”。

private static bool RequestIsAuthenticated(HttpActionContext actionContext) 
    { 
     return (actionContext.RequestContext.Principal.Identity.AuthenticationType == "Bearer" && actionContext.RequestContext.Principal.Identity.IsAuthenticated); 
    } 

如果这返回false,我们返回一个HttpStatusCode.Unauthorized。