0

我正在使用 Thinktecture Identity Server for SSO 和一些应用程序。这个想法是帐户信息将存储在服务器上的索赔信息中。因此,组用户成员资格和其他层次结构可以存在于 SSO 服务器上。然后,当有人进行身份验证时,他们将通过声明传递其成员资格和权利。

我的问题是我的身份验证订阅者如何执行user.memberOf(x)某种查找?我无法想象整个权限层次结构会在用户声明中传递下去。我想将对像 LDAP 这样的服务器上的登录执行额外的查询。这对 Thinktecture 有什么作用?其他 SSO 服务器通常是否相同?如果是这样,模式名称是什么?

4

2 回答 2

1

一般的模式是,是的,您在声明中传递所有角色。如果有太多的组,这会导致问题,但如果是这样,那么可能应该重新审视角色模型。

切换到 oauth2 风格的授权解决了这个问题:您不会在角色中传递声明,但是依赖方会通过额外的调用来查询角色。缺点是,如果 STS 进一步与另一个 STS 联合,则此类额外调用变得棘手,因为该调用将需要另一个内部调用,这可能需要另一个调用等。在声明中传递角色意味着不需要这个额外的称呼。

另一个想法是切换到自定义 STS,该 STS 将根据依赖方或其他用户属性发出过滤的声明角色。这可以正常工作,因为通常单个 RP 并不对所有角色感兴趣,而是对在那里有意义的子集感兴趣。然后在自定义 STS 端实现您的过滤器。

于 2014-05-09T17:50:44.713 回答
0

好吧 - IdSrv 是一个自定义 STS。您可以按 RP 发出声明 - 查看这篇文章(尤其是有关 IClaimsRepository 的部分):

http://leastprivilege.com/2013/05/17/customizing-identityserver/

于 2014-05-13T18:01:46.670 回答