我已经安装了一个基本的IdentityServer并正在运行。我正在使用Identity Manager和Identity Admin将所有内容(用户,角色,声明,客户端,范围)保留在数据库中。下一步是将身份验证与AD集成在一起。我的要求是:
我正在寻找一些指导/方向如何进行。如果我自己完全处理登录顺序,是否可以根据我的解决方案进行类似处理,等等。
任何帮助表示赞赏。
最佳答案
经过一番挖掘后:
idsrv中的This example显示了如何在单独的Web应用程序中运行Windows Authn,以及如何使用ws-fed委托给该Web应用程序。 this issue也对此进行了说明。
This blog post by scott brady显示如何配置adfs以允许idsrv作为依赖方,以及如何使用ws-fed委派给adfs以允许在adfs上登录用户名/密码
如果同时使用这两个ws-fed委托,请确保对authenticationtype使用不同的值。
您可以做的是通过将acr_values和idp添加到您的第一个重定向中并将idp设置为winauth外部idp的名称来强制用户首先尝试winauth。参见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