我已经设置了一个启动并运行的基本IdentityServer。我使用Identity Manager和Identity Admin将所有内容(用户,角色,声明,客户端,范围)保存在数据库中。下一步是将身份验证与AD集成。我的要求是:
我正在寻找一些指示/方向如何继续。我应该自己完全处理登录序列,是否有类似的东西我可以根据我的解决方案等。
感谢任何帮助。
答案 0 :(得分:3)
经过一番挖掘:
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使用不同的值。
你可以做的是强制用户先尝试winauth,在你的第一个重定向中添加acr_values和idp,并将idp设置为winauth外部idp的名称。见the idsrv docs here
如果失败,您可以使用this technique检测无法从外部winauth提供程序登录并自动重定向到adfs提供程序。
如果由于某种原因你到达登录页面,你可以disable local login(不显示用户名/密码输入字段),默认情况下外部提供商(winauth和adfs)将显示为按钮。< / p>
编辑:
是的,您可以在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