我目前正处于 ADFS 推广的第一阶段。如果您想多次与同一方或 SaaS 应用程序联合,似乎需要安装多个“联合服务”或 ADFS 实例。假设您有不同的用户群使用应用程序的私有实例,或者您有多个沙盒环境和一个生产环境。其他人如何处理这个问题?
假设我想要一个 ADFS 实例。我的所有帐户都在一个域中。有一个 AD 环境。不同的用户组拥有独立、唯一的 SaaS 应用程序实例。
假设saasprovider.com/groupa和saasprovider.com/groupb它们是互相排斥的。
有几个人向我提到了领域和实体 ID...请具体说明。我无法为第二个 RP 信任提供相同的元数据文档。我必须有另一个 STS 或 ADFS 实例,对吗?每个联合服务安装只能有一个实体 ID,对吗?
答案1
每个身份数据库应该有一个 STS(每个 Active Directory 林应该有一个 ADFS),每个应用程序部署应该有一个 RP(FederationMetadata.xml
在 ADFS 中作为依赖方加载的文档)。
例如,生产和开发可以是同一 ADFS 服务器上的两个 RP。联合元数据应随安装而变化。
每个客户端应用程序将为每个安装指定不同的实体 ID ( EntityDescriptor/@entityID
)。通常情况下,实体 ID 与应用程序安装的根相同。因此,如果您在 访问 devhttp://server/dev/Default.aspx
并在 访问 prod http://server/prod/Default.aspx
,那么您的实体可能分别是http://server/dev/
和 http://server/prod/
。
FederationMetadata.xml
在实际配置方面,如果手动输入参数,则不需要文件。否则,您可以使用以下方式按需生成文件:System.IdentityModel.Metadata
(适用于 .Net 4)或Microsoft.IdentityModel.Protocols.WSFederation.Metadata
(适用于 WIF 上 <= .Net 3.5)。
答案2
这完全取决于您需要多少个 AD 实例?
单独域中的每个 AD 实例都需要另一个 ADFS 实例。
只要实体 ID、领域等不同,您可以根据需要多次添加相同的 RP。
因此,您可以在许多不同的环境中安装相同的 RP,并且它们都可以使用相同的 ADFS 实例。