将基于令牌的身份验证与Windows身份验证相结

时间:2015-05-28 09:13:35

标签: asp.net authentication authorization

我们目前有一个使用Windows身份验证的内部API。我一直在考虑将此API公之于众,其中一个要求是应该可以在没有域用户的情况下登录。域用户仍然可以登录,并且应该被视为超级管理员(访问所有内容)。

很明显,不久之后,我们将需要基于角色或声明的授权。作为原型,我使用ASP.NET Identity实现了一个系统。使用JWT令牌和基于声明的授权。

但是,如何确保使用Windows身份验证进行身份验证的用户可以跳过令牌步骤并直接使用API​​?

1 个答案:

答案 0 :(得分:2)

找到一个解决方案,我将自定义AuthorizationFilterAttributes添加到我的端点。在属性中,我检查Principal类型:

    public override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
    {
        if (actionContext.RequestContext.Principal is WindowsPrincipal)
        {
            return Task.FromResult<object>(null);
        }
        //Custom logic here
        [...]
    }