在以下情况下,我对IdentityServer4有一些疑问:
我有多个域(domainA,domainB,domainC等),我希望所有域都使用Identityserver4进行身份验证,但是我只希望IdentityServer4的一种实现(具有asp.net身份和EF) ),并让所有域都将此实现用作客户端。所有域都在以MS SQL作为数据库的托管环境中,如果有关联的话。
问题1:
IdentityServer4是否可以在domainA的子文件夹/区域中运行,如果是,则需要执行哪些必要步骤才能使其正常工作?知名端点中显示的端点?
问题2:
将Identityserver4托管在domainA下的子文件夹/区域中,并且让domainA使用Identityserver来验证站点其余部分的用户身份时,有哪些陷阱?如果有的话,如何避免陷阱? / p>
授权部分允许一个用户执行此操作,而不是这样做,与另一用户相反的授权部分与Identityserver4无关,但是据我了解,我在网上可以找到的内容是各个域/站点的责任。为了在每个域/站点中的asp.net身份核心2中使用角色和角色声明,该域/站点中必须有一个用户,该用户必须对Identityserver4中的用户进行引用,以使域使用Identityserver4进行身份验证。
问题3:
如何避免用户必须同时在域和Identityserver4中进行注册,所以最好进行一种注册,而另一项则与参考一起在幕后进行?
我希望有人可以回答我的一个或所有问题。欢迎访问相关博客等的链接,但是我搜寻了网络以寻找有用的答案,但没有任何运气–希望你们中的某些人比我具有更好的搜索引擎技能。
答案 0 :(得分:0)
第一季度
可以。 IdentityServer
是OWIN
的托管环境,因此,如果您将它设置为domainA,则它将作为middleware
使用。拥有公共端点完全取决于您的domainA。
第二季度
您可能遇到的问题可能是 性能问题 。您的domainA将接收来自domainB和domainC的请求,当然包括domainA本身。 IdentityServer
的检查(例如身份验证,验证,颁发令牌)显然很耗时,与普通的HTTP请求相比。
在middleware
进行工作时,性能将比domanB和domainC略低。但这是必然的,不可避免的事与愿违,因为您在HTTP
窗口中又添加了一层来处理服务端点上的身份验证/授权/验证问题。
如果流量变得比您预期的要大得多,您可能想扩展您的 IdentityServer
,并且您会感觉授权服务器正在拖延整个服务。我建议您事先执行一些压力测试,并比较使用身份服务的服务与不使用身份服务的服务之间的性能差异。
第三季度
这可能是自以为是的答案。但是正如您提到的ASP.NET Identity
和EF
一样,我认为您已经知道答案了。看来您将要在自己托管的DBMS
中管理令牌和身份信息。然后考虑使用可能的重复注册完成此操作。只要您做对了,您的DBMS
以及用于存储和获取此类数据的实现将为您完成。
如果您不打算将DBMS
用于身份和令牌数据,而是使用高速缓存或文件系统,那么您将不得不付出一些努力来保证{{ 1}}中有关此类数据的交易。