NanxyFX RequiresAnyClaim(...)使用有效凭据失败

时间:2015-08-15 06:19:15

标签: nancy

我正在使用NancyModule扩展程序检查我的终端中的声明。

当我调试我的端点时,我可以看到经过身份验证的用户具有我正在寻找的有效声明。 (这在下面的屏幕截图中显示。)

在屏幕截图中,我正在使用Vendor Admin的用户调试端点,并且端点要求它是AdminVendor Admin

执行不会继续执行此检查,并返回HTTP 401 Unauthorized

我还试图看看我是否可以在我的引导程序中使用OnError()挂钩,但是在此调用之后它没有出现。

为什么这个(或任何其他扩展方法,Requires AuthenticationRequiresClaims等)不起作用的任何想法?

enter image description here

1 个答案:

答案 0 :(得分:0)

从您的屏幕截图中看,Nancy试图匹配您的用户声明的方式可能存在问题(因为您似乎拥有非空用户和非空声明枚举)。

假设您使用的是标准Nancy.Security用户声明,则声明检查的Nancy代码为:

///From Nancy.Security.UserIdentityExtensions
public static bool HasAnyClaim(this IUserIdentity user, IEnumerable<string> requiredClaims)
    {
        return
            user != null
            && user.Claims != null
            && requiredClaims.Any(claim => user.Claims.Contains(claim, StringComparer.OrdinalIgnoreCase));
    }

在IUserIdentity的实现中检查您的Claims对象的数据类型,并验证它将返回true:

requiredClaims.Any(claim => user.Claims.Contains(claim, StringComparer.OrdinalIgnoreCase))