我们目前有一个使用Windows身份验证的内部API . 我一直在考虑将此API公之于众,其中一个要求是应该可以在没有域用户的情况下登录 . 域用户仍应该能够登录,并且应该被视为超级管理员(访问所有内容) .
很明显,不久之后,我们将需要角色或基于声明的授权 . 作为原型,我使用ASP.NET Identity实现了一个系统 . 使用JWT令牌和基于声明的授权 .
但是,如何确保使用Windows身份验证进行身份验证的用户可以跳过令牌步骤并直接使用API?
找到一个解决方案,我将自定义AuthorizationFilterAttributes添加到我的 endpoints . 在属性中,我检查Principal类型:
public override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken) { if (actionContext.RequestContext.Principal is WindowsPrincipal) { return Task.FromResult<object>(null); } //Custom logic here [...] }
1 回答
找到一个解决方案,我将自定义AuthorizationFilterAttributes添加到我的 endpoints . 在属性中,我检查Principal类型: