将 .NET MVC 应用程序中的 User.Identity 映射到 Active Directory 用户

2024-03-06

我正在编写一个 .NET MVC 5 应用程序,该应用程序位于 Intranet 上,使用 Windows 身份验证,需要查询 Active Directory 以查看哪些组可用,然后检查用户是否属于该角色。

组名和用户名的来源将是活动目录。然后,我需要使用 .NET Identity 检查身份和成员身份。我不确定哪些字段映射到什么。

AD 感兴趣的领域似乎是:

  • Sam 账户名:我认为这是我从 User.Identity 获得的用户名,但文档说这个属性是:用于支持运行早期版本操作系统(例如 Windows NT 4.0、Windows 95、Windows 98 和 LAN Manager)的客户端和服务器的登录名。
  • CN:用户名的可显示版本
  • 对象GUID:不会更改的用户或组的标识符。重要的是,如果用户的姓氏发生变化,他们也会更改他们的用户名。

所以我认为SamAccountName == User.Identity.Name,但文档说 SamAccountName 适用于早期操作系统。这是否实际上意味着它已被弃用并且我应该使用其他东西?

另外,我关于 CN 和 objectGUID 的断言是否正确?


第一步:设置使用AD的参数:

在 web.config 文件的 部分中,设置以下内容:

<authentication mode="Windows" />

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
   <providers>
      <clear />
      <add 
          name="AspNetWindowsTokenRoleProvider"
          type="System.Web.Security.WindowsTokenRoleProvider" 
          applicationName="/" />
   </providers>
</roleManager>

现在,您将能够直接使用 System.Web.Security 命名空间中的方法。

如果您想将对视图的访问权限限制为仅 AD 的“groupName”组的成员:

你只需要像这样装饰你的控制器动作:

[Authorize(Roles = @"DOMAIN\groupName")]
Public ActionResult Index()
{...}

如果要根据AD用户组进行处理:

在您的治疗中使用诸如“IsInRole(rolename)”之类的方法:

if (User.IsInRole("DOMAIN\\groupName"))
{
     // Do what you want
}

编辑:有问题的实现:在创建任务时,您应该在此处保存受任务影响的组的 sAMAccountName。然后,当用户想要将任务标记为完成时,只需检查:

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

将 .NET MVC 应用程序中的 User.Identity 映射到 Active Directory 用户 的相关文章

  • 使用 DependencyResolver 通过 MVC 3 进行控制器实例化时出错

    我正在使用 MVC 3 并在应用程序启动时使用以下代码 UnityContainer container new UnityContainer new UnityMappings container DependencyResolver S
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • 禁用视图中所需的验证特定字段 ASP.NET MVC 4

    如果有人能给我一些提示 我将不胜感激 我搜索了一段时间 我什至找到了一个帖子 我认为它可以解决我的问题 但它没有 在某些情况下禁用必需的验证属性 https stackoverflow com questions 5367287 disab
  • 运行更新数据库时出错

    我在运行时遇到以下错误Update Database Verbose 使用启动项目 WebApplication 使用 NuGet 项目 Web应用程序 指定 Verbose 标志来查看 SQL 应用于目标数据库的语句 目标数据库是 星冰乐
  • C# ASP.NET MVC:视图中的单行 If 子句?

    我遇到了一个小问题 并且无法解决它 我的看法是这样的 Try or
  • 如何在asp.net mvc中创建弹出窗口?

    无需使用 javascript AJAX 单击超链接时 应该打开一个新的浏览器窗口 基本 HTML 锚元素 a href http www w3schools com target blank Visit W3Schools a ASP N
  • Log4net不会将日志写入日志文件

    我使用 Log4net 创建了一个简单的场景 但我的日志附加程序似乎不起作用 因为消息没有添加到日志文件中 我将以下内容添加到 web config 文件中
  • 使用通配符的 Active Directory 查询性能较差

    我正在用 C 编写一个方法 该方法应该查询 Active Directory 并查找具有以下格式的显示名称的所有用户和组 显示名称 带有前导和尾随通配符的通配符搜索 该方法将用于自动完成字段 问题是我编写的方法的性能非常差 尝试查询 AD
  • 将 Expression> 转换为 Expression>

    确实很简单的问题 我有显示 Nullable Bool 的 MVC 视图 例如 Html CheckBoxFor model gt model NullableBoolHere Model NullableBoolHere 我想创建一个新的
  • 在操作之外执行异步操作 asp.net mvc

    我希望能够在每个请求上从云数据库加载用户 并使用 asp net mvc 在控制器中的请求上提供该用户 问题是当前框架不支持从操作过滤器执行异步操作 所以 OnActionExecuting OnAuthorization 方法不允许我这样
  • 限制 LDAP 查询中返回的属性

    如何限制通过 System DirectoryServices 在 LDAP 查询中返回的属性 我一直在使用 DirectorySearcher 并将我想要的属性添加到 DirectorySearcher PropertiesToLoad
  • ASP.NET 会话状态和多个工作进程

    我需要了解一些有关 ASP NET 会话状态的信息 因为它适用于 IIS 7 和 ASP net 3 5 如果应用程序配置为使用进程内会话状态 那么如果有多个工作进程 该应用程序是否可以正常工作 换句话说 工作进程是否共享会话状态 IIS
  • Html Helper“操作”未定义,Asp.NET Core 2.2

    我是 ASP NET Core MVC 的新手 我会在这个问题前说我已经阅读了其他类似的问题 但它们与我遇到的问题并不完全相同 我正在尝试实现动态左侧导航 其中每个按钮都是从我的数据库加载的 当我打电话时 Html Action NavMe
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • ASP.NET MVC 开源真实世界应用程序 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 每当我开始学习新技术或语言时 我倾向于查看一些 现实世界 应用程序的源代码 我发现它们对于理解常见的
  • 在 MVC 4 中的另一个表单中验证 JQuery UI 模式表单

    我在 MVC 4 中有一个表单 其中包含多个字段 根据组合的值 我需要打开一个模式对话框表单并加载到这 3 个附加字段中 这些字段将影响我正在创建的同一实体 在主窗体中进行编辑 对于这个模式对话框 我使用的是 jQuery UI 中的对话框
  • 实体类型处于“影子状态”意味着什么?

    在我的 ASP NET Core 1 0 MVC6 EF7 Web 应用程序中 我添加了一个迁移 该迁移添加了新的相关表 和相应的模型 我有以下模型快照 DbContext typeof ApplicationDbContext parti
  • asp.net mvc jquery 下拉验证

    我如何使用不显眼的 javascript 验证下拉列表 作为所需验证器的验证文本框 但它不适用于下拉列表 需要更改不显眼的 js 文件吗 或者还有其他选项来验证下拉列表吗 我想在我的 javascript 中检查 form validate

随机推荐

  • 如何从 numpy.ndarray 中随机选择一些非零元素?

    我已经实现了一个矩阵分解模型 比如 R U V 现在我要训练和测试这个模型 为此 给定一个稀疏矩阵 R 缺失值为零 我想首先在训练中隐藏一些非零元素 并在稍后使用这些非零元素作为测试集 如何从 numpy ndarray 中随机选择一些非零
  • 标头已发送...哪里? [复制]

    这个问题在这里已经有答案了 有人知道如何在此脚本中发送标头吗 我正在使用此脚本来验证表单 因此 它导致发送标头 因此当我在实现此脚本后尝试引导用户时 它会导致正常的 警告 无法修改标头信息 标头已发送 消息 这是脚本
  • 使用 jQuery 作为依赖项而不用 RequireJS 加载 jQuery?

    考虑以下页面 当未加载 RequireJS 时 如何使用 jQuery 作为 RequireJS 模块的依赖项 我知道jQuery 暴露了自己 https github com jquery jquery blob 861a45b8fffc
  • 如何在CSS中对齐两列文本

    我在排列一些文本时遇到一些麻烦 我需要两列 一列包含数字 一列包含文本 如下所示 1 条目一2 条目二3 条目三4 条目五5 条目六 左栏是 Georgia 右栏是 Arial 字体大小略有不同 我可以为每一行设置一个容器 div 并将数字
  • Angular 2 - 如何使用配置文件

    在 ZF2 中工作时 我们使用的配置文件可能因开发人员 生产环境和登台环境而异 它非常方便 因此我想在 Angular 2 中复制它 它在 ZF2 中的工作原理 我们有一个配置文件夹 其中的配置名为 settings local php 和
  • Django 视图内的 BeautifulSoup 导致 WSGI 超时

    由于一个奇怪的原因 当我实例化一个美丽汤Django 视图中的对象 WSGI 超时 任何帮助都是值得赞赏的 因为我把头撞在墙上几个小时 却找不到这个问题的根源 风景 def index request soup BeautifulSoup
  • 注释默认“null”值

    是否可以指定默认为 null 的注释 我想要实现的是类似可选注释属性的东西 例如 public interface Foo Config value public interface Config boolean ignoreUnknown
  • 如何启用事件以便调用 Workbook_BeforeSave

    My Workbook BeforeSave保存前未调用事件 这是我的代码 Option Explicit Private Sub Workbook BeforeSave ByVal SaveAsUI As Boolean Cancel A
  • Django 在内联表单管理中获取实例

    有一个内联表单类 class ItemColorSelectForm forms ModelForm def init self args kwargs super ItemColorSelectForm self init args kw
  • 如何通过ajax(无jquery)发送multipart/form-data表单内容?

    我试图在不重新加载页面的情况下发送一些表单 并且我试图了解底层细节 因此不使用任何 JavaScript 库 var http createRequestObject function createRequestObject var obj
  • XSD 1.1 替代测试 text() 的内容

    这是我想做的
  • 与 RabbitMQ 相比,Amazon SQS 的性能较慢

    我想在我的 Web 应用程序中集成消息队列中间层 我测试了 Rabbitmq 和 Amazon SQS 但发现 Amazon SQS 速度很慢 我在 Amazon SQS 中每秒收到 80 个请求 而在 Rabbitmq 中每秒收到 200
  • 从 ILogger 访问当前 HttpContext

    在 ASP NET Core 1 0 中 我有一个自定义实现ILoggerProvider and ILogger接口 我希望能够从以下位置访问 HttpContextLog method 看来我需要注入一个IHttpContextAcce
  • 没有事前发生的安全发布?除了决赛之外还可以吗?

    根据 JCP 16 2 2 安全发布 这个happens before保证实际上是一个比安全出版更有力的可见性和订购承诺 当 X 从 A 安全地发布到 B 时 安全发布保证了 X 状态的可见性 但不保证 A 可能接触过的其他变量的状态的可见
  • 用于变量名称的 R 循环来运行线性回归模型

    首先 我对此很陌生 所以我的方法 想法可能是错误的 我已使用 R 和 R studio 将 xlsx 数据集导入到数据框中 我希望能够循环遍历列名以获取所有具有精确 的变量10 以便运行简单的线性回归 所以这是我的代码 indx lt gr
  • PHP - MD5、SHA、哈希安全

    我是一个用 PHP 构建的新网站的开发人员 我想知道什么是最好的 用于散列的东西 我已经研究过 md5 和 sha1 但还有更安全的吗 如果这是一个菜鸟问题 我很抱歉 但我是 PHP 安全新手 我正在努力让我的 网站尽可能安全 还有什么是盐
  • Restkit今天突然停止编译

    我很长一段时间以来都在我的项目中使用RestKit 使用CocoaPods Podfile pod RestKit gt 0 26 0 今天 由于未知的原因 我的项目不再编译 据我所知 我没有更改任何项目设置或任何内容 我在 RKObjec
  • CUDA 中什么样的变量会消耗寄存器?

    global void add int c const int a const int b int x blockIdx x int y blockIdx y int offset x y gridDim x c offset a offs
  • jQuery 多重选择器 + find() 与 Children()

  • 将 .NET MVC 应用程序中的 User.Identity 映射到 Active Directory 用户

    我正在编写一个 NET MVC 5 应用程序 该应用程序位于 Intranet 上 使用 Windows 身份验证 需要查询 Active Directory 以查看哪些组可用 然后检查用户是否属于该角色 组名和用户名的来源将是活动目录 然