我正在编写一个内部应用程序,其中所有用户都是AD的一部分。我有以下步骤来实现这一点。这是对的吗?
-
创建操作过滤器以获取对网站的所有HTTP请求,并签入它们是否具有所需的特定AD角色(var isUserInRole = User.IsInRole("M2-ITU-PWApplicationDevelopers"((
-
如果用户不在任何应用程序角色中,则将用户发送到错误页面
-
如果用户处于应用程序角色中,则将用户添加到 SQL DB 并链接到数据库中的角色表,因此现在我已经准备好在数据库中使用用户/角色数据以及其他数据
-
当用户重新访问时,首先检查数据库,然后再检查 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
设置来实现相同的目的。