我们目前有一个使用Windows身份验证的内部API。我一直在考虑将此API公之于众,其中一个要求是应该可以在没有域用户的情况下登录。域用户仍然可以登录,并且应该被视为超级管理员(访问所有内容)。
很明显,不久之后,我们将需要基于角色或声明的授权。作为原型,我使用ASP.NET Identity实现了一个系统。使用JWT令牌和基于声明的授权。
但是,如何确保使用Windows身份验证进行身份验证的用户可以跳过令牌步骤并直接使用API?
答案 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
[...]
}