如何使用AD / LDAP管理 ASP.NET 核心中的用户?我是否将用户存储在数据库中?



我正在编写一个内部应用程序,其中所有用户都是AD的一部分。我有以下步骤来实现这一点。这是对的吗?

  1. 创建操作过滤器以获取对网站的所有HTTP请求,并签入它们是否具有所需的特定AD角色(var isUserInRole = User.IsInRole("M2-ITU-PWApplicationDevelopers"((

  2. 如果用户不在任何应用程序角色中,则将用户发送到错误页面

  3. 如果用户处于应用程序角色中,则将用户添加到 SQL DB 并链接到数据库中的角色表,因此现在我已经准备好在数据库中使用用户/角色数据以及其他数据

  4. 当用户重新访问时,首先检查数据库,然后再检查 LDAP ?

如何设置cookie或其他东西,以便每个请求在经过身份验证后都不需要通过进程?

试图理解基础知识..也许我做错了?

使用 Windows 身份验证。您的应用程序需要位于 IIS 后面才能在 Core 2.2 及更低版本中执行此操作 ASP.NET 但从 Core 3.0 ASP.NET 开始,您可以单独使用 Kestrel 执行此操作。

如果这样做,则可以跳过步骤 3 和 4。当某人通过 Windows 身份验证进行身份验证时,应用程序将获取一个登录令牌,其中包含该帐户所属的所有安全组。所以User.IsInRole非常快。无需将该信息存储在您自己的数据库中。

您也不必担心饼干。

Windows身份验证的另一个好处是它可以支持无缝登录:如果您的网站位于Internet选项中的受信任站点中,则IE和Chrome将自动发送当前登录到Windows的用户的凭据。用户不必键入其凭据。

Firefox 使用自己的network.negotiate-auth.delegation-uris设置来实现相同的目的。

相关内容

  • 没有找到相关文章

最新更新