首页 文章

通过OnAuthentication在MVC5中进行附加身份验证

提问于
浏览
1

我们在MVC 5中有一个Web应用程序 . 它使用OWIN进行身份验证 . 现在我们得到的情况是,请求可能来自特定服务器,该服务器在http-header中发送用户名(以及一些加密信息以证明它是正确的服务器) .

在上述情况下,应用程序应在头字段中使用给定名称对用户(标识)进行身份验证,而无需编写任何cookie或执行其他身份验证操作 . 我在网上搜索过,在我看来,我必须在FilterConfig中添加一个自定义 AuthenticationFilter ,然后能够使用header-field中找到的特定名称对用户进行身份验证 .
测试方面,我尝试使用下面的代码来强制进行身份验证,但总是会遇到以下异常:

提供的ClaimsIdentity中不存在类型为“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier ' or ' http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider”的声明 . 要使用基于声明的身份验证启用防伪令牌支持,请验证配置的声明提供程序是否在其生成的ClaimsIdentity实例上提供这两个声明 . ...

IAuthenticationFilter -implementation中的测试代码如下所示:

public void OnAuthentication(AuthenticationContext filterContext) {            
        var claims = new List<Claim>();
        claims.Add(new Claim(ClaimTypes.Name, "test"));
        claims.Add(new Claim(ClaimTypes.Email, "test@test.local"));
        var identity = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ExternalBearer);

        var principal = new ClaimsPrincipal(identity);

        filterContext.Principal = principal; 
    }

我完全走错了轨道还是只是一个小错误?

1 回答

相关问题