Identityserver4 在IdentityServer中分离授权存储和身份验证存储

Identityserver4 在IdentityServer中分离授权存储和身份验证存储,identityserver4,Identityserver4,希望实现IdentityServer,为我们的系统提供SSO 组织内部和外部的所有用户都将存储在Active Directory中。然后,我们将使用IdentityServer对AD进行身份验证 我们希望做的是为用户创建一系列索赔。因此,用户可以对其声明使用不同的值 例如 一个开发bucket的声明“My.claim.Name”的值为“Bob”,而一个生产bucket的声明“My.claim.Name”的值为“John” 据我所知,Active directory无法以这种方式存储属性,因此我需

希望实现IdentityServer,为我们的系统提供SSO

组织内部和外部的所有用户都将存储在Active Directory中。然后,我们将使用IdentityServer对AD进行身份验证

我们希望做的是为用户创建一系列索赔。因此,用户可以对其声明使用不同的值

例如

一个开发bucket的声明“My.claim.Name”的值为“Bob”,而一个生产bucket的声明“My.claim.Name”的值为“John”

据我所知,Active directory无法以这种方式存储属性,因此我需要将此自定义功能构建到IdentityServer将访问的数据库中

这就引出了我的问题

是否可以针对一个存储机制对用户进行身份验证,但从另一个存储中检索该用户的声明?本质上分离用户和他们的声明


如果是这样,有人能告诉我实现这一点可能需要实现哪些接口吗?

IdentityServer实现openid connect规范,这意味着只有identity。授权不应与身份混淆,请参阅作者的此博客文章

每个应用程序都应检查授权(例如,API1中的用户可以访问这些资源,API2中的同一用户可以访问其他资源)。这基本上意味着,一旦经过身份验证,每个应用程序都需要从单独的源(即您的授权存储)获得用户授权

但是,要回答您的问题,您应该实现
IProfileService
接口。创建用户标识时会调用此接口,允许您根据请求的作用域填写声明。在这里,您可以从单独的授权数据库获取索赔


请注意,这被认为不是最佳做法,IdentityServer团队表示,他们不久将提出一个适当的授权解决方案

你好,埃梅德波。我理解并可能使用了一系列术语。感谢您提供的信息和我正在寻找的答案。是否需要在identity server 4中使用证书,因为我遇到以下错误:无法创建以从“”获取配置。