如何从 API 级别安全地管理角色和用户



我有一个用于角度应用程序的API,我们正在使用Identity Server 4来编写令牌。 IDS4 位于一个单独的项目中,我们在该项目中创建了一些 MVC 视图,供新用户注册我们创建的位置,然后在控制器中使用 UserManager 进行创建。 计划是我们最终将为不同的项目提供几个单独的 API,但只有 1 个身份服务器管理它们。

我们遇到的问题是,我们需要能够从 API 项目创建用户并修改他们的角色。 由于 API 无法访问身份表所在的 IDS4 数据库,因此处理此问题的最佳方法是什么? 我是否将端点添加到 IDS4 项目以授予对用户管理器的访问权限? 这似乎有点风险,如果我这样做,我如何保持安全,以便只有合法的 API 项目可以使用它并且不会打开安全漏洞?

简短的回答是 - 你可以这样做。

要用于创建用户的 API 应该是已注册的 IDS 客户端,该客户端将根据客户端凭据流(客户端 ID 和客户端密钥(进行身份验证。

然后,我猜你有一个可以访问数据库的API。然后,新的客户端 API 将调用有权访问数据库的客户端 API。具有访问权限的那个将使用 IDS 授权进行保护。

当然,在这里,您可以为特定操作添加更多安全性,并且仅允许它们用于使用某些自定义属性或授权策略的新 API(而不是通过 IDS 授权的每个 API,调用(。