【问题标题】:How to connect your ASP.NET Core 3.1 MVC web application to Active Directory?如何将 ASP.NET Core 3.1 MVC Web 应用程序连接到 Active Directory?
【发布时间】:2022-01-01 16:39:04
【问题描述】:

我正在为客户端构建一个 Web 应用程序,我必须通过 IIS 在他们的 Windows Server 上设置它。我将不得不通过 Active Directory(而不是 Azure Active Directory)将他们的用户群集成到我的应用程序中。我已经在我的应用程序中包含了 Windows 身份验证,它似乎可以在我的本地计算机上运行。

我想知道的是:

  • 如何将登录提示更改为我的自定义登录页面?

  • 如何更改认证用户的用户名(现在我登录时,我必须写下设备名称和用户名称。例如:_device/_user)。我想要的是用户只能写他们的用户名,而不是设备名称。

  • 如何管理用户的访问权限,以及如何在应用程序中为他们添加角色。由于用户已登录。我现在想知道如何为这个用户分配一个特定的角色,这样我就可以据此限制对特定页面的访问。

我一直在查看一些文档,但没有太多提及 Active Directory 集成或我上面列出的问题。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: asp.net-core authentication active-directory asp.net-core-mvc roles


【解决方案1】:

步骤;

  1. 如果您想访问 AD,您的项目中需要有 System.DirectoryServices 和 System.DirectoryServices.AccountManagement 引用。

  2. 在 appsettings.js ActiveDirectory": { "ActiveDirectoryDomainName": "Your Domain", "ActiveDirectoryOrganizationalUnits": "Your AD units" } 中配置 AD 名称和 AD 组织单位

  3. 在你的类方法中:

  4. 用 userPrincipal.EmailAddress、userPrincipal.GivenName、userPrincipal.Guid.Value 等 AD 值填充您的用户对象。

  5. 如果您想管理具有角色的用户,则从 AD (userPrincipal.Guid.Value) 获取 GUID 并将其存储在另一个表中,并将该 GIUD 映射到所需的角色。

注意:如果可以分享一些图片和代码

【讨论】:

  • 谢谢。使用 System.DirectoryServices 和 System.DirectoryServices.AccountManagement 可以非常简单地连接到 Active Directory 并提取所需的数据。由于我进行了自定义登录,因此我不再使用 Windows 身份验证。用户只需写下他们的用户名和密码,我在 Active Directory 中检查。之后,如果用户已添加到应用程序中,我检查身份表(在身份表中我添加了 GUID)。基于身份表,我还可以获得每个用户的用户角色。
  • 完美。很高兴它帮助了你:)
猜你喜欢
  • 1970-01-01
  • 2016-02-04
  • 2021-05-17
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多