gpt4 book ai didi

authentication - IdentityServer - 用于身份验证的 AD 和数据库中的其余部分

转载 作者:行者123 更新时间:2023-12-01 12:20:48 25 4
gpt4 key购买 nike

我已经设置了一个已启动并正在运行的基本 IdentityServer。我正在使用 Identity Manager 和 Identity Admin 将所有内容(用户、角色、声明、客户端、范围)保存在数据库中。下一步是将身份验证与 AD 集成。我的要求是:

  • 用户将根据 AD 进行身份验证
  • 用户权限(声明/角色)将存储在数据库中(就像现在一样)
  • 根据客户端应用程序,我有三种不同的场景:
    • 在某些情况下,应该使用当前用户的身份(我想要实现这一点,Identity Server 应该使用 Windows 身份验证运行)。用户不应收到任何提示。
    • 在某些情况下,用户必须明确登录。他可以使用当前登录名或
    • 手动输入将针对 AD 进行验证的用户名和密码。

我正在寻找一些指导/指导如何继续。我是否应该自己完全处理登录序列,是否有类似的东西可以作为我的解决方案的基础,等等。

感谢任何帮助。

最佳答案

经过一番挖掘:

This example在 idsrv 中展示了如何在单独的 Web 应用程序中运行 Windows 身份验证以及如何使用 ws-fed 委托(delegate)给该 Web 应用程序。这也在 this issue 中进行了解释。 .

This blog post by scott brady显示如何配置 adfs 以允许 idsrv 作为依赖方,以及如何使用 ws-fed 委托(delegate)给 adfs 以允许在 adfs 上使用用户名/密码登录

如果您同时使用这两种 ws-fed 委托(delegate),请确保为 authenticationtype 使用不同的值。

您可以做的是强制用户首先尝试 winauth,方法是将 acr_values 和 idp 添加到您的第一个重定向并将 idp 设置为 winauth 外部 idp 的名称。参见 the idsrv docs here

如果失败,您可以使用 this technique检测从外部 winauth 提供程序登录失败并自动重定向到 adfs 提供程序。

如果出于某种原因您确实到达了登录页面,您可以 disable local login (不显示用户名/密码输入字段)和外部提供程序(winauth 和 adfs)默认情况下仅显示为按钮。


编辑:

是的,您可以在 idsrv 旁边添加一个额外的 Web 应用程序,这样就不必运行带有 Windows 集成身份验证的 idsrv

winauth 用户的流程是

client app -> IdSrv (login page) -> WinAuthHost -> IdSrv (auth endpoint)-> client app

实际上,如果成功,用户很可能只会看到客户端应用程序和 WinauthHost 中的一个屏幕,而永远不会看到 Idsrv

如果用户没有登录到 windows(或者不是正确的域),那么流程将是这样的

client app -> IdSrv (login page) -> WinAuthHost ->  IdSrv login (auth endpoint, fails) 
-> ADFS -> IdSrv login (auth endpoint) -> client app

关于authentication - IdentityServer - 用于身份验证的 AD 和数据库中的其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44140157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com