IdentityServer3 + Active Directory +自托管用户db
本文关键字:用户 db Active Directory IdentityServer3 | 更新日期: 2023-09-27 18:01:27
我正试图找到一个解决方案来处理我的新应用程序的身份验证,我喜欢IdentityServer3的方法。我希望IdentityServer3能满足我的需求,这只是我对这项技术的不了解。
我的要求如下,并按执行顺序排列:1)如果请求身份验证的用户是本地(域)用户,则应使用Active Directory自动对其进行身份验证。2)如果在Active Directory中没有找到请求身份验证的用户,则应该根据我们自己的user表进行身份验证。3)如果请求身份验证的用户都不在授权机构中,我们可以选择通过Google或Facebook凭据授予访问权限,但这不是第一阶段的要求。
我目前有一个使用IdentityServer3作为独立安全服务器从InMemoryUsers, InMemoryClients和InMemoryScopes中提取记录的概念的工作证明,我很确定我将能够扩展这些概念从我们自己的数据库中提取。
当我尝试使用活动目录作为第一个检查点时,出现了这个问题。
为了完成Active Directory,我已经查看了一些资源,但是由于我没有看到任何显示AD部分的简明演示,所以我都被绊倒了。
TJ Robinson有一个实现IUserService的ActiveDirectoryUserService的Gist,这看起来是最有前途的,但由于我的n00b状态,我似乎不知道如何将它滚动到方案中。
我真的很感谢任何建议,也许,链接到如何先做AD身份验证,再回退到本地身份验证的例子。
提前感谢,Ric
关于你的第一个要求…
我认为你应该检查Windows身份验证服务。这本质上是一个迷你的安全令牌服务,它可以作为IdentityServer的外部身份提供者来提供Windows身份验证(通过WS-Fed协议)。
如果您遵循链接到GitHub页面,您将找到两个示例链接,可以开始使用该组件。一个示例将身份服务器和Windows身份验证服务分开托管,另一个示例将它们一起托管。
单独的选项可以使用ADFS(如果有的话)作为外部身份提供者。
这些示例包括一个自定义用户服务(ExternalRegistrationUserService),该服务显示将这些windows用户映射到内存中的用户集合(在Identity Server中)。您的需求显然需要用户服务的不同实现,但我希望这可能有助于您开始使用Windows认证部分。
当我最近完成这个练习时,我在封闭的IdentityServer3问题(用于windows认证)中发现了很多有用的信息。还有很多关于堆栈溢出的好信息;好运!