通过OnAuthentication在MVC5中进行其他身份验证

盐酸

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

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

类型为“ http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier ”或“ http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider ”的声明为在提供的ClaimsIdentity上不存在。要通过基于声明的身份验证启用防伪令牌支持,请验证已配置的声明提供程序是否在其生成的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, "[email protected]"));
        var identity = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ExternalBearer);

        var principal = new ClaimsPrincipal(identity);

        filterContext.Principal = principal; 
    }

我是完全走错了路吗还是只是一个小错误?

郝公

这是一个小错误,基本上,如果您在MVC中使用AntiForgeryToken,则要求您的身份具有类型为' http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier '或' http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider '

最简单的事情就是将nameidentifier设置为用户唯一的名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

未在其他浏览器中对MVC5无cookie会话ID进行身份验证,为什么?

使用AppAuth在swift4中进行身份验证时会显示其他警报

MVC5中的身份验证和授权

Google在Angular 5中进行身份验证

如果通过身份验证,则MVC中的其他默认页面

使用MVC5中的现有用户数据库进行复杂身份验证

在ASP.NET MVC5中使用自定义登录进行表单身份验证

MVC5身份Webapi身份验证

IdentityServer4替换Asp.net 4.5 MVC5 SimpleMembership进行身份验证

如何通过AD FS在React中进行身份验证?

MVC5 Facebook身份验证不起作用

MVC5身份验证过滤器

asp.net身份通过链接/ URL进行身份验证asp.net mvc 5

Rails:通过设计或其他方式对 swagger API 进行身份验证

MVC5在哪里将身份验证表单放在web.config中?

使用OAuthBearerAuthentication在ASP.NET 5中进行JWT身份验证

在MVC5中进行验证时,将数据保留在ViewModel中

[Authorize]属性如何知道用户在ASP.NET MVC中已通过身份验证令牌进行身份验证?

MVC 5中的身份验证

如何从使用MVC5应用程序中的Asp.Identity进行身份验证的用户的Google帐户中获取名字+姓氏

添加其他密钥对以进行身份验证

如何在angular 2中进行身份验证

如何仅使一个用户通过SSH密钥进行身份验证并允许对所有其他用户进行密码身份验证

身份:在两个不同的asp.net mvc5应用程序中的身份验证

使用ExternalLoginCallback进行身份验证如何获取UserId和UserName ASP.NET MVC5

使用MVC5网站失败的Google OAuth2进行身份验证(GetExternalLoginInfo始终为null)

在expressJS应用中进行身份验证

在React中进行身份验证

使用MVC4在服务堆栈中不通过MemoryCacheClient进行身份验证的会话