分别托管API和IdentityServer4托管(C#、. NET CORE)有什么优势?

Nic*_*las 5 c# api visual-studio asp.net-core identityserver4

也许我要问的问题非常明显和简单,但是作为IdentityServer4的初学者,或者总体上或多或少的oAuth2,OpenID和API的初学者,我觉得很难理解。

我们公司的目标是使用身份验证和授权转向更安全的应用程序构建方式(Visual Studio 2017,C#、. NET Core 2)。经过几天的研究,我最终使用了IdentityServer4(也是因为文档确实很棒)。

遵循IdentityServer文档(https://media.readthedocs.org/pdf/identityserver4/release/identityserver4.pdf)直到第7章,我还剩下一本。

我正在尝试使用API​​后端构建MVC应用程序(网络)以检索/插入数据,以便以后可以将API用于SPA / Xamarin应用程序等其他应用程序。对于IdentityServer主机,我选择了具有asp.net身份的IdentityServer。我运行了它,一切都很好,但是仍然存在以下问题:

托管我想与IdentityServer主机一起处理数据库操作的API的缺点是什么?对我来说,有这么多不同的项目似乎不合逻辑,而(据我所知)这两个项目(API和IdentityServer主机)可以完美地结合在一起。

在(几乎)IdentityServer4的所有示例中,IdentityServer主机和API都是单独的项目,将两者作为单独的项目进行托管有什么好处。

m3n*_*ak3 7

我会说单一责任。

像这样对待它-Identity Server是一个框架,可为您提供针对客户端/ API的身份验证。而已!(当然,这都是根据您的规则,政策等完成的)。

Identity Server的目的不是从数据库中添加/编辑/删除用户。Identity Server的目的不是为此用户赋予角色。最重要的是-授权该用户不是Identity Server的目的。

所有这些都必须在您的客户端/ api中完成。

在您的情况下-您需要一个单独的API,该API将照顾用户(以及所需的其他数据),但是我想您希望此API受Identity Server保护。

这是分离的结果,应予以保留-Identity Server不应针对自己认证自己的API。

所有示例,文章等都包含单独的项目是有原因的。

PS:当然,有一些实现这一目标的例子(达米恩博德的那个很好)。

  • 我想念您的意思-很明显,他已经选择了这些技术,并且只是问在同一项目中运行服务器和API的不利之处。这就是我要回答的。 (2认同)
  • 好吧,我也回答了这个问题-单一责任。令牌服务器的工作是颁发和验证令牌。处理用户CRUD操作不是他的工作。 (2认同)
  • 我建议您有2个不同的项目。负责用户CRUD操作的API不应成为Identity Server项目的一部分,因为这不是责任。令牌服务器仅进行身份验证(基于某些凭据发出令牌),仅此而已。这些用户上的所有其他操作应单独进行,而不应作为令牌服务器的一部分。 (2认同)
  • @HarutyunImirzyan-是的,这正是我想说的。 (2认同)