当前位置: 首页 > 知识库问答 >
问题:

MVC5中的附加身份验证

梁宪
2023-03-14

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

在上述情况下,应用应该使用头字段中的给定名称向用户(身份)进行身份验证,而不必写入任何cookie或执行其他身份验证操作。我已经搜索了网络,在我看来,我必须在FilterConfig中添加一个自定义的身份验证过滤器,然后能够使用头字段中找到的特定名称验证用户。
测试明智,我尝试了如下代码下面强制认证,但总是得到以下例外:

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

IAuthentiationFilter-实现中的测试代码如下所示:

    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个答案

严信瑞
2023-03-14

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

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

 类似资料:
  • 问题内容: 如何在Elasticsearch中定义安全性访问?我有elasticsearch-head插件,但是您的访问不需要任何安全性。 问题答案: 不再积极支持此答案中提到的插件。 elasticsearch中没有内置的访问控制。因此,您需要设置一个反向代理(这是一个博客文章,介绍如何设置nginx),使用第三方的Elasticsearch插件之一,例如https://github.com/A

  • 我将尝试对 socket.io 上的连接进行身份验证。 目前,用户首先通过REST API进行身份验证,然后,我向用户发送一个,其中包含经过身份验证的用户的用户名。打开客户端和服务器之间的连接后,我的计划是从连接的套接字列表中临时删除该套接字,以防止在执行身份验证时在服务器之间接收和发送数据。 在这个身份验证中,我验证令牌,如果令牌有效,我将套接字的id重新添加到已连接套接字的列表中。唯一的问题是

  • 本文向大家介绍asp.net mvc中Forms身份验证身份验证流程,包括了asp.net mvc中Forms身份验证身份验证流程的使用技巧和注意事项,需要的朋友参考一下 验证流程 一、用户登录 1、验证表单:ModelState.IsValid 2、验证用户名和密码:通过查询数据库验证 3、如果用户名和密码正确,则在客户端保存Cookie以保存用户登录状态:SetAuthCookie     1

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

  • 问题内容: 我正在尝试创建一个J2ME应用程序,该应用程序使用连接器与Web服务器通信。 当我与WebServer交谈时,我必须使用基本HTTP身份验证进行身份验证,通常这种方式类似于 但是在J2ME中,当我构造这种形式的url时,它不起作用。 我也尝试添加请求属性, 但是没有用 有人以前做过基于j2me的HTTP身份验证吗?提前致谢。 问题答案: 可能是J2ME不支持基本身份验证,我可能错了。如

  • 我需要连接到LDAP服务器,但出现以下错误: javax。命名。AuthenticationException:[LDAP:错误代码49-80090308:LDAPPER:DSID-0C09034,注释:AcceptSecurityContext错误,数据525,向量 用户名和密码正确,我尝试设置相同的用户并传入另一个用编写的应用程序。NET,它在那里工作,但在Java中,我收到了错误消息。 我的