我正在从事一个项目,该项目允许用户创建用户以创建应用程序 key 或 secret ,以便外部客户端可以使用特定服务。用户可以创建多个 secret ,他们可以选择在多个客户端上使用这些 secret 。
为此,我计划创建一个将使用 identityserver4 的解耦身份验证服务器。
真正让我退缩的是我不确定是否应该在身份验证服务器上创建一个 API 层。我考虑在 auth 服务器上使用 API 的原因是,我可以创建一种管理门户客户端,为用户提供创建、更新和访问他们的应用程序 key / secret 的前端。甚至管理门户也将成为一个解耦的角度应用程序。
目前有两件事阻碍了我:
- 我不确定通过 一个 api 层。据我所知,identityserver 将无法提供允许我通过端点访问用户客户端列表的功能,但如果我错了请纠正我,并且有更好的方法来解决这个问题。
- 我知道我们可以轻松地创建新客户端并将其保存到带有 identityserver4 的数据库中,并且我计划为用户客户端使用 ClientCredentials 授权类型,但是用户和客户端之间是否存在数据库和身份级别的链接?还是我需要自己创建该功能?
到目前为止,我已经看过了,但我没能找到与我使用 identityserver4 的情况类似的例子
抱歉这个菜鸟问题,我刚刚开始了解身份服务器和网络安全,所以其中很多概念对我来说仍然很新。
最佳答案
对于第一点,我会说是的,您可以为服务器数据创建一个 API 层。如果您检查 IdenttiyServer4 AdminUI , Rock Solid 还使用了 UI 背后的管理 API。但您必须考虑加密、TLS 和其他安全机制来确保其安全。
AFIK 对于数字 2,在用户和客户端之间没有身份级别的链接。你必须自己创造。
基本上,您需要一个支持 Multitenancy 的系统.我通过在 AspNetIdentity 用户表中添加 TenantId 字段实现了这一点。并且还将租户 ID 添加到声明列表中。
如果我错了,请不要犹豫,纠正我。
关于authentication - identityserver4 上用户的多个外部客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46504023/