2011-03-13 73 views
0

假设有两家公司:.NET是.NET商店,A.Java是Java商店。 每家公司的用户都需要访问其他公司的网站,以便两家公司使用ADFS和Oracle身份联合或OpenSSO联合来建立联盟。如何在.NET(ADFS/WIF)和Java(Federation)之间映射属性

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

在Java世界中,这些属性是作为HTTP标头被访问的。

是否总会架构做这种映射自动即

如果A.NET用户访问一个网站B.Java?他们得到他们的权利属性?

如果一个B.Java用户访问一个A.NET站点,他们是否将他们的属性作为头文件?

回答

1

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

通常,您的联合基础结构完全独立于应用程序堆栈。无论哪种情况,ADFS都会发出SAML令牌(对于Java应用程序和.NET应用程序)。 OIF也将不得不为两组用户签发SAML令牌。在.NET世界中,WIF将解析/验证SAML令牌等,将其转换为表示其中信息(索赔,发行者等)的.NET对象模型。该对象模型是ClaimsPrincipal(以及所有相关的接口和类型)。你将不得不看在Java世界上的WIF等价物。但无论哪种情况,输入都是SAML令牌。

在你的情况很可能会出现在两个STS的令牌转换:

对于.NET应用程序:

从B公司

1-用户在OIF认证,并得到一个SAML令牌对于公司A 2用户将令牌发送到ADFS 3 ADFS从B读取令牌,验证并发布新令牌(可能很可能添加/转换/删除声明) 4用户将已转换的令牌发送到应用程序A

来自用户的序列在A上访问B上的Java应用程序是完全一样的。注意在这种情况下存在双向信任(A公司信任B发行人,反之亦然)