0

假设有两家公司:A.NET 是一家 .NET 商店,B.Java 是一家 Java 商店。每家公司的用户都需要访问另一家公司的网站,因此两家公司使用 ADFS 和 Oracle 身份联合或 OpenSSO 联合来建立联合。

在 .NET 世界中,属性作为 IClaimsPrincipal 和 IClaimsIdentity 中的声明进行访问。

在 Java 世界中,属性作为 HTTP 标头访问。

联邦基础设施是否自动执行此映射,即

如果 A.NET 用户访问 B.Java 站点,他们是否将其属性作为声明?

如果 B.Java 用户访问 A.NET 站点,他们是否将其属性作为标题?

4

1 回答 1

1

假设您可以在双方都使用 WS-Federation,那么在这两种情况下,您要处理的主要工件都是 SAML 令牌。

通常,您的联合基础架构完全独立于应用程序堆栈。在任何一种情况下,ADFS 都会颁发 SAML 令牌(对于 Java 应用程序和 .NET 应用程序)。OIF 还必须为两组用户发行 SAML 令牌。

在 .NET 世界中,WIF 将 SAML 令牌解析/验证等到一个 .NET 对象模型中,该模型表示其中的信息(声明、颁发者等)。该对象模型是ClaimsPrincipal(以及所有相关的接口和类型)。您将不得不查看 Java 世界中的 WIF 等价物。但无论哪种情况,输入都是 SAML 令牌。

在您的场景中,两个 STS 中可能都会进行令牌转换:

对于 .NET 应用程序:

1- 来自 B 公司的用户在 OIF 上进行身份验证并获得公司 A 的 SAML 令牌 2- 用户将令牌发送到 ADFS 3- ADFS 从 B 读取令牌,验证并发布新令牌(很可能添加/转换/删除声明) 4- 用户将转换后的令牌发送到应用程序 A

A 中的用户访问 B 上的 java 应用程序的顺序完全相同。请注意,在这种情况下存在双向信任(A 公司信任 B 的发行人,反之亦然)

于 2011-03-14T04:46:06.973 回答