我有一个asp.net mvc 3网络应用,需要根据用户请求的子域从多个STS支持SSO。
因此https://weylandyutani.mydomain.com的请求应该信任Weyland-Yutani STS,而https://tyrell.mycomain.com应该信任Tyrell STS。
大多数WIF资源都在谈论在应用程序的Web配置中启用STS。是否有一种可接受的方式来动态地完成这项工作而不重新发明轮子?
答案 0 :(得分:3)
在这种情况下,您通常会使用中间STS(称为“RP-STS”或“联盟提供商”,它将为您处理所有信任关系。即:您的应用程序信任RP-STS,然后RP-STS会信任Weyland-Yutani,Tyrell等。
添加RP-STS简化了一些事情,特别是如果每个身份STS都向您发送的声明与您在应用中所需的声明完全不同。例如:Tyrell可能会向您发送“姓名”,“姓氏”和“电子邮件”。 Weyland可能会发送“用户名”,“电子邮件”。 RP-STS会将设置的声明标准化为您的应用所需的任何内容。
您提示RP-STS重定向用户的方式是通过 whr 参数(代表“Home Realm”)。您的应用程序将查看请求URL,然后在重定向到RP-STS之前附加whr参数。
上述所有内容都在此Federation with Multiple Partners的“book”章节中进行了详细记录。
如果您不想构建/获取和部署自己的RP-STS(取决于应用程序的部署模型,您可以使用ADFS v2.0),则可以使用Windows Azure中的访问控制服务。
This other chapter解释了它的工作原理。