数据库
首页 > 数据库> > 的IdentityServer3 Active Directory自托管用户数据库

的IdentityServer3 Active Directory自托管用户数据库

作者:互联网

我正在尝试寻找一种在新应用程序上处理身份验证的解决方案,并且我喜欢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的要点,这似乎是最有前途的,但是由于我的n00b身份,我似乎无法弄清楚如何将其应用到该方案中.

我真的很感激任何建议,并且也许会链接到如何首先进行AD身份验证的示例,而后退到本地身份验证.

提前致谢,
里克

解决方法:

关于您的第一个要求…

我相信您应该检查Windows Authentication Service.这实际上是一个微型安全令牌服务,可以作为IdentityServer的外部身份提供程序来提供Windows身份验证(通过WS-Fed协议).

如果您单击该链接至GitHub页面,则将找到两个示例链接,您可以开始使用此组件.一个示例将Identity Server和Windows身份验证服务分别托管,另一个示例将它们托管在一起.

另一种选择是将ADFS(如果有)用作外部身份提供程序.

这些示例包括一个自定义用户服务(ExternalRegistrationUserService),该服务显示了那些Windows用户正在映射到用户的内存中集合(在Identity Server中).您的要求显然会要求对该用户服务进行不同的实现,但是我希望这可以帮助您开始使用Windows Auth部分.

最近,当我进行此练习时,我在closed IdentityServer3 issues (for windows auth)中发现了很多很好的信息.祝好运!

标签:owin,authentication,identityserver3,c,asp-net-mvc
来源: https://codeday.me/bug/20191118/2027186.html