【问题标题】:Separating Authorization store from Authentication store in IdentityServer在 IdentityServer 中将授权存储与身份验证存储分开
【发布时间】:2017-12-01 15:10:06
【问题描述】:

希望实施 IdentityServer 以为我们的系统提供 SSO。

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

我们要做的是为用户创建索赔桶。因此,用户可以为其声明设置不同的值。

E.G

开发存储桶的声明“My.Claim.Name”的值为“Bob”,生产存储桶的声明“My.Claim.name”的值为“John”

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

这让我想到了这个问题。

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

如果是这样,请有人指出可能需要实现哪些接口才能实现这一目标?

【问题讨论】:

    标签: identityserver4


    【解决方案1】:

    IdentityServer 实现了 openid 连接规范,这意味着只有身份。授权不能和身份混在一​​起,请参考作者https://leastprivilege.com/2016/12/16/identity-vs-permissions/的这篇博文

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

    但是,要回答您的问题,您应该实现IProfileService 接口http://docs.identityserver.io/en/release/reference/profileservice.html?highlight=iprofileservice。创建用户身份时调用此接口,让您根据请求的范围填写声明。在这里,您可以从单独的授权数据库中获取声明。

    请注意,这被认为不是最佳实践,IdentityServer 团队表示他们将很快提出适当的授权解决方案。

    【讨论】:

    • 嗨 emedbo。我理解并且可能正在使用混合术语。感谢您提供的信息和我正在寻找的答案。
    • 是否有必要在身份服务器 4 中使用证书,因为我收到此错误:无法创建以从以下位置获取配置:'localhost:33132/identity/.well-known/openid-configuration'。
    猜你喜欢
    • 2020-03-07
    • 2017-07-14
    • 2021-07-30
    • 2011-09-27
    • 2021-09-24
    • 2020-10-22
    • 2021-08-30
    • 2017-03-01
    相关资源
    最近更新 更多