我试图找到一个解决方案来处理我的新应用程序上的身份验证,我喜欢IdentityServer3的方法。我希望IdentityServer3能满足我的要求,而且由于我对该技术的新颖性,我缺乏理解。
我的要求如下,按照预期执行的顺序: 1)如果请求身份验证的用户是本地(域)用户,则应使用Active Directory自动对其进行身份验证。 2)如果在Active Directory中找不到请求身份验证的用户,则应根据我们自己的User表对其进行身份验证。 3)如果请求身份验证的用户既不在授权中,我们也可以选择通过Google或Facebook凭据授予访问权限,但这不是第一阶段的要求。
我目前使用IdentityServer3作为独立安全服务器从InMemoryUsers,InMemoryClients和InMemoryScopes中提取记录,这是一个可靠的概念验证,我相当确定我能够扩展这些概念以便提取来自我们自己的数据库。
当我尝试使用Active Directory作为第一个检查点时,会出现此问题。
为了完成Active Directory,我已经查看了几个资源,但是由于我没有看到任何显示AD片段的简洁演示,我已经全部绊倒了。这个难题。
TJ Robinson有一个实现IUserService的ActiveDirectoryUserService的Gist,看起来是最有希望的,但由于我的n00b状态,我似乎无法弄清楚如何将它滚动到方案
我真的很感激任何建议,并且可能会链接到如何首先使用回退到本地身份验证进行AD身份验证的示例。
提前致谢, RIC
答案 0 :(得分:3)
关于你的第一个要求......
我相信你应该检查Windows Authentication Service。这本质上是一个迷你安全令牌服务,可以作为IdentityServer的外部身份提供者提供Windows身份验证(通过WS-Fed协议)。
如果您按照指向GitHub页面的链接,您将找到两个指向样本的链接,您可以使用此组件开始。一个示例同时托管了Identity Server和Windows身份验证服务,另一个示例将它们托管在一起。
单独的选项可以使用ADFS(如果有的话)作为外部身份提供者。
这些示例包括一个自定义用户服务(ExternalRegistrationUserService),该服务显示那些窗口用户被映射到内存中的用户集合(在Identity Server中)。您的要求显然需要该用户服务的不同实现,但我希望这可能有助于您开始使用Windows Auth部分。
最近我参加这个练习时,我在closed IdentityServer3 issues (for windows auth)找到了很多好的信息。关于Stack Overflow的很多好消息;祝你好运!