1

好的,所以这是一个措辞不好的问题。但是很难用一句话来解释。

我试图阅读 Shibboleth 文档,并且作为一个新手很快就超出了我的深度。如果专家可以花半分钟时间说“没有机会,那是行不通的”,我真的不想花几天时间来理解它。

我有很多用户组,可以说(现在)这些组是不同的公司。

我想做的只是让用户看到其他公司的一些字段。

例如,我是 A 公司的 Alice,我可以看到 B 公司的 Bob 有一个电子邮件地址 bob@b.com。他可以看到我是 alice@a.com

但是,B 公司的其他人都可以看到 Bob 有姓氏和电话号码等。A 公司的其他人都可以看到我的详细信息。

为了使这更复杂,假设 Bob 和我成为朋友并决定我们想要分享我们的信息,然后我们创建一个“临时”组“alice&bob”。因为我们都是该组的成员,所以我们都可以看到彼此的完整细节。(但 A 中的其他任何人都无法看到 Bob 的详细信息,除非他们也是朋友,反之亦然)

我可以通过查询所有属性和关系并仅显示相关的内容来对应用程序代码中的所有内容进行排序,但为了额外的安全性,我想限制源头信息的披露。

我想我需要使用属性过滤器,但不确定它们是否能够给我这种​​级别的控制。有了这种能够形成关系的灵活性,我是否需要即时构建过滤器文件,然后最终生成数千个过滤器,因为逻辑太长,Shibboleth 开始窒息。类似于“是组中的请求者”过滤规则: https ://wiki.shibboleth.net/confluence/display/SHIB2/IdPFilterRequirementAttributeRequesterInEntityGroup

4

2 回答 2

0

就此而言,这不是 Shibboleth 或大多数 SAML/SSO 提供商的工作。您所说的属性过滤用于过滤 IdP 和 SP 之间的那些属性......这基本上是说:让服务提供商或“应用程序”B 从 IdP A 中看到以下属性。

一旦您将属性传输到另一端的 SP,Shibboleth 不会(实际上也不能)为您提供一种机制来防止应用程序 B 的用户看到您提供给他们的任何数据......事实上,他们真的不应该能够看到 IdP 传输的任何数据,除非您通过应用程序以某种方式公开它。

于 2012-12-04T21:04:27.997 回答
0

上面的答案很好,但我相信非 shibboleth 的用户会觉得很困惑。

快速的回答是你真的不想这样做,这可能是可能的,但 100% 有更好的工具来做。

好的,现在是完整版(抱歉在某些地方太明显了)。在 shibboleth 架构中,我们可以区分两个主要组件。

身份提供者IdP - 保存有关来自特定组织的用户的信息。

Service Provider SP - 一般是一些服务或受保护的资源,我们可以为其定义一些访问规则

在您的示例中,Alice 和 Bob 的凭证可以存储在不同的 IdP 中,因为他们是不同组织/公司的成员,或者(与整个模式不完全匹配)您可以为所有用户拥有一个 IdP,并且“公司”只是用户属性之一。IdP 不为您提供任何类型的 api,让您有机会访问任何用户的用户属性,除了正在被验证的用户。

另一方面,您拥有自己的 SP,其中包含一些超级机密资源,您可以为其定义策略。并且您想在其中定义用户信息的策略。

这就是问题所在,在 SP 方面,您无法访问整个用户数据库,这就是 Shibboleth 的工作方式。您当然可以将所有用户信息视为您的 SP 中的资源,但是如果您可以清楚地访问应用程序端的所有用户凭据,为什么还要使用 Shibboleth?

如果您将所有用户信息存储在您的服务端,我相信任何设计良好的关系数据库以及为您的服务提供某种身份验证都将比这项工作的 shibboleth 更好。

希望有帮助。

于 2013-01-04T14:07:05.340 回答