如何在 ASP.Net MVC 5 站点中设置 NameClaimType?

2024-01-24

我使用 Microsoft 的“本地”组织帐户身份验证机制创建了一个 ASP.Net MVC 5 站点。这最终配置为指向我公司的 ADFS 基础设施。我正在取回所有配置的声明。但是,在运行时,ClaimsIdentity.Name 为空。这是因为默认情况下 ClaimsIdentity.NameClaimType 显示为:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

但是,我希望将 ClaimsIdentity.Name 映射到:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier 

根据微软文档 http://msdn.microsoft.com/en-us/library/hh568636%28v=vs.110%29.aspx,在 web.config 中设置此项的位置位于 securityTokenHandlers 元素的 Add 元素内:

<system.identityModel>
  <identityConfiguration>
    <securityTokenHandlers>
      <add>
        <samlSecurityTokenRequirement>
          <nameClaimType value=xs:string>
          </nameClaimType>
        </samlSecurityTokenRequirement>
      </add>
    </securityTokenHandlers>
  </identityConfiguration>
</system.identityModel>

在我的 ASP.Net MVC 5 web.config 中,唯一看起来适用并通过智能感知检查的东西最终看起来像这样:

<system.identityModel>
  <identityConfiguration>
    <securityTokenHandlers>
      <add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <samlSecurityTokenRequirement>
          <nameClaimType value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"/>
        </samlSecurityTokenRequirement>
       </add>
      <remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </securityTokenHandlers>
  </identityConfiguration>
</system.identityModel>

然而,这似乎没有效果。我的 MVC 应用程序仍然报告空白的 ClaimsIdentity.Name 字段,并且 ClaimsIdentity.NameClaimType 仍然是:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

我的 Web.Config 应该是什么样子才能将现有声明映射到 ClaimsIdentity.Name 字段?


我发现使用以下 securityTokenHandlers 部分可以让我到达需要基于 ADFS 系统中的 SAML 2.0 有效负载的位置:

<securityTokenHandlers>
  <add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <remove type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <add type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
    <samlSecurityTokenRequirement>
      <nameClaimType value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"/>
    </samlSecurityTokenRequirement>
  </add>
</securityTokenHandlers>

我完全不确定默认 web.config 是如何使用声明的,因为没有配置 Saml 令牌处理程序。也许源代码中的某些内容会执行某些默认行为......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.Net MVC 5 站点中设置 NameClaimType? 的相关文章

  • 将 WordPress 的登录/注册页面重定向到自定义登录/注册页面

    我有一个网站 有一个用户系统 我想将 WordPress 的用户系统集成到该网站的用户系统中 但我仍然想使用该网站的注册 登录页面 我不希望任何人能够使用 Wordpress 的登录或注册表单登录或注册 相反 当他们尝试访问 Wordpre
  • 允许匿名用户浏览样式和图像文件夹

    我正在编写一个 ASP NET Web 应用程序 我有一个登录屏幕 上面有一些 CSS 样式和图像 我遇到了样式和图像未显示的问题 我在网上阅读 它说我需要在 Content 文件夹中放置一个 web config 我将以下内容添加到 we
  • laravel 5.3 中如何在没有 auth:api 中间件的情况下对用户进行身份验证?

    我有一条任何用户都可以访问的公共路线 timeline 在此操作中 如果用户通过身份验证 我必须向他显示他是否喜欢该帖子 如果路线有auth api我可以使用中间件获得经过身份验证的用户 request gt user 但如果我不使用aut
  • 如何正确编码 mailto 链接?

    我正在生成一些 HTML 并且我想生成 XSS 和数据库内容安全的mailto关联 这里使用的正确编码是什么 这个怎么样 myLiteral Text string Format mailto 0 Content Type text htm
  • 使用 JWT 通过 Asp.net core 进行 GraphQL 身份验证

    我正在使用 NET 的 GraphQL https www nuget org packages GraphQL 2 0 0 alpha 912graphql 的包 但我无法理解如何在 graphql 查询或突变中使用 JWT 进行身份验证
  • 如何限制ajax日历扩展器中的年份

    我有一个日历延长器 我只想在日历中显示当前年份 用户无法选择 2010 年 因为当前年份是 2011 年 那么如何做到这一点呢 Use the StartDate and EndDate属性来设置您希望允许用户选择的可接受日期范围 您可以根
  • Windows 共享主机 - 自定义计划任务

    我有一个 Windows 共享主机 我需要每天运行一些预定的 C 可执行文件来创建站点地图 发送新闻通讯等 提供商告诉我 出于安全原因 我无法运行可执行文件 我能做什么 提供商建议我购买 VPS 但认为仅仅为了运行一些计划任务而花更多钱是没
  • 如何使用多个Auth组件?

    我使用用户模型将身份验证组件配置为 管理页面 但现在 我还想为客户端创建 配置身份验证 我尝试 重写 inialize This is in my ClientsController php public function initiali
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • jQuery AJAX post 收到 405 错误(不允许 HTTP 动词 POST)

    我有以下 jQuery 帖子到 ASP NET webmethod ajax type POST url AjaxWebMethods aspx UpdNote contentType application json charset ut
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示
  • 在asp.net中读取.ofx、.qif文件

    我想使用 asp net 读取 ofx 和 qif 文件 任何人都可以帮助我吗 谢谢 http qif codeplex com http qif codeplex com 包含用于从 NET 读取 QIF 文件的开源 API 如果您在 C
  • 删除datagridview中的一行

    我想删除更新面板中 Gridview 中的一行 但我没有使用命令按钮 而是使用了链接按钮来获取确认消息 现在 如果我按 确定 则应删除该记录 从 db 和 frm girdview 中删除 我知道如何从数据库中删除 但不知道如何按下链接按钮
  • 如何克服 NeatUpload 对象引用错误?

    安装 NeatUpload http neatupload codeplex com http neatupload codeplex com 并将演示放到我的服务器 Windows Server 2008 和 IIS7 上 当我在组合框中
  • ASP.NET 中用户控件和页面的公共基类

    现在我的页面有一个继承的基类System Web UI Page和我的用户控件的另一个基类继承System Web UI UserControl 这些类包含相同的方法 由于 C 不支持多重继承 我无法将这两个类合并为一个同时继承 Page
  • ASP.Net - 每次单击按钮时都会调用 Page_Load 和 Page_Init?

    所以我的代码中完全没有逻辑 我有两种方法Page Init Page Load 每次我单击按钮时都会调用这两种方法 调用 Page load 是有意义的 但是为什么每次都会调用Page Init呢 protected void Page I
  • JWT 中的注销不起作用

    我是 Laravel 的新手 我安装了 JWT 并登录 所以它工作并生成了一个令牌 当我在邮递员中注销时它返回 true 但一次又一次它返回 true 和 auth gt 用户 注销后始终返回用户 这是我的代码 public functio
  • 继承 IdentityUser 我在 UserManager 上收到错误

    我正在使用 NET Framework 4 5 1 和 Asp Net Identity 2 1 0 开发 Web Api 2 2 应用程序 我不确定我在做什么 但我想将我的数据库与 ASP NET Identity 数据库合并 我已经这样
  • MVC2 - 使用 RDF 和命名空间使用 RSS 提要 http://www.w3.org/1999/02/22-rdf-syntax-ns#'

    我试图阅读华盛顿鱼类和野生动物部的提要 但不断收到此错误 名为 RDF 的元素和 名称空间 http www w3 org 1999 02 22 rdf syntax ns 不是允许的 Feed 格式 这是来自 RssController
  • asp.net MVC ModelState.IsValid 返回 false

    我正在开发 ASP NET MVC 应用程序 我有一个视图模型如下 public class SampleInterestViewModel Properties defined One such property that shows a

随机推荐

  • mac os x 上的 eclipse JNI_CreateJavaVM 错误

    我使用的是 mac os x 10 8 2 我已经安装了java 1 7 然后收回 因为我无法通过xcode发送iphone应用程序 现在java 1 6已安装 ysnky java 版本 java版本 1 6 0 37 Java TM S
  • 为什么我的 vim 命令行路径与 shell 路径不同?

    e g echo PATH usr local bin usr bin bin usr sbin sbin usr local bin bin bin usr local Cellar python3 3 2 3 bin vim echo
  • C 中的 usleep() 是否实现为忙等待?

    我正在构建一个多线程应用程序pthreads并且需要一个线程来定期检查一些东西 在此期间 该线程不应使用任何 CPU 这可能吗 usleep Is usleep 不忙等待吗 或者有更好的解决方案吗 功能usleep已从 SUSv4 中删除
  • Web API 中的依赖注入验证

    在 MVC 中 我可以创建一个可以采用依赖项的模型验证器 我通常使用 FluentValidation 来实现这一点 例如 这使我可以检查帐户注册是否有电子邮件地址未被使用 注意 这是一个简化的示例 public class Registe
  • 为什么 FLAG_ACTIVITY_CLEAR_TOP 不起作用?

    正如标题所说 为什么intent addFlags Intent FLAG ACTIVITY CLEAR TOP or intent setFlags Intent FLAG ACTIVITY CLEAR TOP 行不通 我有 3 项活动
  • 使用shiny DT包中的选择扩展附带的全选按钮仅选择过滤的行

    我试图使用闪亮的 DT 包中的选择扩展附带的全选按钮来仅选择过滤的行 但它会选择所有行 这是闪亮的样本app https radhikesh shinyapps io selectextension 以下是该应用程序的可重现代码 libra
  • 同时交叉和添加列表元素的 Python 方式

    我有3个清单 a b and c 每个列表都包含 3 个数字的元组 下面是一个输入示例 a 1 2 4 1 7 8 1 5 4 3 6 7 b 1 2 5 1 9 3 1 0 3 3 6 8 c 2 6 3 2 4 9 2 8 5 1 2
  • Selenium webdriver 和多语言

    我使用selenium webdriver java 例如 当我想通过 xpath 获取一些数据 文本时 driver findElement By xpath table 3 tbody tr td table 1 tr 1 td 1 g
  • Django:使用电子邮件作为 USERNAME_FIELD 是否需要扩展 AbstractBaseUser?

    与许多其他人一样 我正在尝试将 Django 应用程序配置为使用电子邮件作为用户名字段 我有一些现有的用户帐户 已成功迁移到自定义用户模型 尽管现在自定义模型与 Django 用户模型相同 accounts models py from d
  • jquery img 选择

    我有一个 h4 里面有一个这样的 img 我将点击功能绑定到 h4 这效果很好 但我无法选择其中的img 我想选择 img 以便用 attr src replace up down 重新放置 src attr h4 class collap
  • UILabel中心内容

    这是我的代码 UILabel myLabel myLabel UILabel alloc initWithFrame CGRectMake 20 0 300 480 myLabel lineBreakMode UILineBreakMode
  • mod_rewrite 和 mod_userdir 的问题

    我正在尝试获取其他人组装的正在运行的网站的本地副本 该网站已部署并正常运行 我正在尝试在我的 public html 目录下设置开发版本 该站点使用 mod rewrite 通过执行各种初始化步骤的网关脚本重定向所有流量 我有一个奇怪的问题
  • Altair:如何在烛台图(即:分层图)上使用区间选择

    我正在尝试复制以下堆叠图表 可以通过与底部图表交互来选择顶部图表的域 但使用烛台图 这是一个分层图表 example code for below is here https altair viz github io gallery int
  • 函数向全局变量返回 2 个值

    鉴于这个帖子 https stackoverflow com questions 61217589 set 2 series at once我想问为什么下面的脚本适用于 a b 但不适合 c d 找不到任何文档来解释为什么这不起作用 此示例
  • 如何检查日期(来自日期选择器)是否在其他两个日期之间?目标-c

    我正在尝试从 UIDatePicker MM dd 格式 获取日期并检查它是否在其他两个日期的范围内 我尝试过很多不同的方式 但我想我的想法已经走得太远了 有人可以帮我做得尽可能简单吗 这是我最后一次尝试的代码 NSDateFormatte
  • 如何在没有窗口的情况下使用 Swift 检测 macOS 上的 Caps Lock 状态?

    我努力了KeyDown and NSEvent 但他们需要一个NSWindow对象处于活动状态 我希望我可以在状态栏上放置一个应用程序 并在按下时提醒用户CapsLock 即使用户在任何其他应用程序中 我的应用程序创意没有用于设置或其他任何
  • Mojolicious 基本登录

    我正在 Mojolicious 中寻找身份验证 我有 2 个页面 momcorp1 和 momcorp2 但我不能 在页面之间 有人知道如何做到这一点 我正在阅读有关 under 的内容 但我不知道如何做到这一点 另一种形式是使用 Mojo
  • 如何限制 NSTokenField 中的令牌数量?

    我有一个 NSTokenField 其中的令牌是在按 Enter 键时创建的 我想限制该字段中的令牌数量 举例来说 应该只允许用户依次输入 2 个令牌 之后 既不应该允许用户设置Token 也不应该允许用户进一步搜索 简而言之 用户应该在
  • 为什么通过 goto 向后移动时会调用析构函数[重复]

    这个问题在这里已经有答案了 可能的重复 会使用goto泄漏变量 https stackoverflow com questions 7334952 will using goto leak variables 在下面的例子中 当goto被称
  • 如何在 ASP.Net MVC 5 站点中设置 NameClaimType?

    我使用 Microsoft 的 本地 组织帐户身份验证机制创建了一个 ASP Net MVC 5 站点 这最终配置为指向我公司的 ADFS 基础设施 我正在取回所有配置的声明 但是 在运行时 ClaimsIdentity Name 为空 这