在身份服务器 4 中使用具有角色的自定义数据库

using custom database with roles in identity server 4

我正在处理需要设置身份服务器 4 的应用程序。我有一个 api 作为资源。和网络表单应用程序 client.I 在我的数据库中几乎没有像老师、学生、家长这样的角色。如何在不使用身份的情况下使用这个自定义数据库并进行认证和授权?

求推荐。

从你的另一个问题我更清楚你想要什么。

我认为您想要的一种解决方案是在一个单独的项目中设置 identityserver4,它有自己的单独数据库。我注意到标签 identityserver3,但我认为使用 identityserver4 是相当安全的。它不应该对 client/user 产生影响,因为它们在概念上是兼容的。

1) 为您的应用程序提供一个 client/secret(您在 identityserver 中配置),以便识别您的应用程序并授予对资源 api 的访问权限。这里有一些信息:http://docs.identityserver.io/en/dev/quickstarts/1_client_credentials.html

您只需配置一个客户端即可保护您的资源免受外部侵害。访问资源 api 的唯一方法是通过您的应用程序,因为您的应用程序正在进行实际调用。这也是缺点,你不能把token暴露给外界。

由于您的客户不是实际用户,因此您需要识别用户。您可以根据自己的喜好使用基于当前模型的任何机制。一个简单的 user/pass(有或没有 asp.net 身份)就足以确定角色。但请记住,您的应用程序具有对资源 api.

的完全访问权限

2) 不过,identityserver既然可以用,为什么不用呢?你为什么不想使用身份模型?我认为您应该考虑将身份信息和您的数据模型分开。您的数据模型不应该意识到安全性。而且安全性与您的数据模型无关。

当您为身份服务器创建一个单独的数据库时,您可以在一个地方配置身份用户。您所需要的只是对数据模型中用户的引用(子)。 http://docs.identityserver.io/en/dev/quickstarts/2_resource_owner_passwords.html

添加声明或角色,一切就绪,您会发现无需在自定义数据库中保留身份数据。您的自定义数据库的结构保持不变,包括用户 table 但没有身份数据。

我认为这是一个更安全的解决方案,考虑到良好的文档和示例项目,它甚至可能成为一个更快的解决方案。