如您所见,联合并不一定会减轻对供应的需求。这是一个并非立即显而易见的重要见解。
有多种方法可以解决这个问题,包括:
- 使用元或虚拟目录产品或
- 通过使用“JIT 配置”(也称为“动态配置”或“动态配置”)。
让我解释一下后者。这个解决方案,我也在我的博客上描述过,包括两个STS,一个IP-STS和一个RP-STS。第一个仅对用户进行身份验证;第二个是特定于您的应用程序的,并且知道授权该系统的用户需要哪些声明。IP-STS 不能发布这些特定于应用程序的属性,这样做会要求您的公司目录服务与各种特定于应用程序的信息混杂在一起。相反,在该存储中维护并由 IP-STS 发布的用户属性本质上是通用的,并且适用于用户,无论他们使用的是哪个应用程序。在对 IP-STS 进行身份验证并从中获得仅身份声明后,令牌将传递给 RP-STS。此令牌服务与您的应用程序紧密耦合。它知道用户需要什么声明才能访问不同的资源。它可以将仅身份声明转换为做出此访问控制决策所必需的声明。因此,RP-STS 是一个声明转换器,它将与身份相关的声明映射到特定于应用程序的声明。
RP-STS 如何为用户提供服务?假设创建了一个新员工,如上面的示例所示。当用户访问您的应用程序时,他将被退回到 RP-STS。他不会在那里登录,所以他会被退回到 IP-STS。系统管理员为他创建了一个帐户,因此他将能够登录,他的浏览器会将他弹回 RP-STS。RP-STS 会破解令牌,获取用户 ID(电子邮件、PPID 等),然后看到它不知道用户是谁。因此,RP-STS 将为用户提供服务。例如,它将通过显示网页来完成此操作。它可能会收集有助于确定该用户在访问 RP 时的角色的信息。在此之后,将提供用户(即,将在其数据库中创建一条记录,其中包含他的索赔值),RP-STS 将发出一个特定于您的应用程序的令牌并将他重定向回那里。应用程序不会知道他只是被配置了;它只会像往常一样使用声明。(明白我为什么称它为 JIT 供应了吗?)
如果在配置用户后情况发生了变化怎么办?好的。想象一下:用户是很久以前在目录存储中创建的,并且在 RP-STS 中如上所述进行了配置,并且他已经愉快地使用系统很长时间了。然后是一项政策变更,要求您的应用程序的用户接受新的条款和条件 (T&C)。下次用户登录应用程序时,他将被重定向到 RP-STS,IP-STS,他将进行身份验证,然后被退回到您的 RP-STS。此时,它会注意到用户必须接受新的 T&C,因此它将向用户显示一个网页并获得他们的同意。之后,RP-STS 将颁发一个安全令牌并将他重定向到您的应用程序。您的应用程序将一如既往地处理声明并执行授权访问所需的操作。它不会知道也不会 不在乎用户只是“重新配置”。或者,您可以使用 ILM(或现在称为 FIM)等产品在身份存储(即您的公司目录)和 RP-STS 的声明存储之间保持更改同步。根据您的系统,像这样进行反向通道同步的产品可能更合适。
顺便说一句,这些不是“蹩脚”的问题!有非常敏锐的问题反映了对一个非常复杂的问题的深刻思考和明智的反思。您需要回答的其他问题包括:
- 您的应用程序的管理员如何更新其策略(例如,更改 T&C)?您必须创建什么 UI/API?UI 是否与用于管理 IP-STS 策略的 UI 集成在一起?
- 必须存在什么样的信任关系才能使这样的系统正常工作?
- 如果主题没有使用被动配置文件怎么办?如果他使用活动配置文件和/或没有 UI 怎么办?
- 钥匙的位置和位置如何?使用这些密钥需要什么权限?它们是如何被修改、分发的,当它们即将到期时,系统管理员如何得到警报?
This stuff is really easy to demo at user group meetings and at conferences, but in reality it is very advanced stuff. If you have other questions, feel free to post them here or get in touch w/ me directly.