也许我要问的问题非常明显和简单,但作为 IdentityServer4 的初学者以及或多或少的 oAuth2、OpenID 和 API 的初学者,我发现它很难理解。
我们公司的目标是使用身份验证和授权转向更安全的应用程序构建方式(Visual Studio 2017、C#、.NET Core 2)。经过几天的研究,我最终使用了 IdentityServer4(也是因为文档真的很棒)。
遵循 IdentityServer 文档(https://media.readthedocs.org/pdf/identityserver4/release/identityserver4.pdf)到第七章,我还剩下一本书。
我正在尝试构建一个带有 API 后端的 MVC 应用程序(Web),用于检索/插入数据,以便稍后可以将该 API 用于其他应用程序,例如 SPA / Xamarin 应用程序。对于 IdentityServer 主机,我选择了具有 asp.net 身份的 IdentityServer。我让它运行起来,一切都很好,但是仍然存在以下问题:
托管我的 API(我想在其中处理数据库操作)与 IdentityServer 主机一起有哪些缺点?
对我来说,拥有这么多不同的项目似乎不合逻辑,而(据我所知)这两个项目(API 和 IdentityServer 主机)可以完美地结合在一起。
在(几乎)所有 IdentityServer4 示例中,IdentityServer 主机和 API 都是单独的项目,将这两个项目托管为单独的项目有哪些优势。
我会说单一责任。
像这样对待它 - Identity Server 是一个框架,它为您提供针对客户端/API 的身份验证。就是这样! (当然,这一切都是根据您的规则、政策等完成的)。
Identity Server 的目的不是从数据库中添加/编辑/删除用户。身份服务器的目的不是为该用户分配角色。
最重要的是 - 身份服务器的目的不是授权此用户。
所有这些都必须在您的clients/api 中完成。
在你的情况下 - 你需要一个单独的API来照顾用户(以及你需要的其他数据),但我猜你希望这个API受到Identity Server的保护。
这就是分离的来源,并且应该保留 - Identity Server 不应该针对自己验证自己的 API。
所有示例、文章等都位于单独的项目中是有原因的。
PS:当然有一些实现这一点的例子(达米恩博德的一个很好)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)