我们正在考虑将ACS作为我们的联合STS。我们可以将自己的自定义STS配置为IP-STS,以及"内置"身份提供商,如Facebook,Live和Google。然而,我们得到的索赔却相当糟糕"。 ACS中的声明转换仅在非常简单的情况下有所帮助 我们正在寻找一种最好的做法来处理"缺少索赔的情况"。我们认为我们需要设置一个装饰STS"在ACS面前。当ACS带回安全令牌时,这个装饰者可以“充实”#34;带有其他声明的安全令牌。如果声明丢失,它可以设置一些用户界面来询问用户(一次)完成她的个人资料。这样,无论用户来自何处,我们都有应用程序所需的声明。这是一个好主意吗 ?什么是最佳实践"在这种情况下 ? (ACS似乎不允许任何程序扩展。)
答案 0 :(得分:3)
你想要的是一个RP-STS,设置非常简单。联邦可以被认为是一个链,在ACS的情况下,这通常是RP - > ACS - > IdP,令牌请求从左向右移动,令牌从右向左移动。在联合链中,每个实体仅明确知道其邻居。你想要的是RP - > RP-STS - > ACS - >的IdP。事实上,ACS也可以被认为是RP-STS,因为它既不是身份提供者也不是依赖方。你只是在链中添加另一个链接,这是可以的,因为联合链可以任意长。
您的RP-STS将有两个主要操作:
在这种情况下,您实际执行的操作是将身份验证外包给Google / FB /等。到ACS,因为您不想处理这些协议,然后在身份验证完成后添加自己的值。从ACS的角度来看,只有一个RP注册:您的RP-STS。从您的实际RP角度来看,只有一个身份提供者:您的RP-STS。
答案 1 :(得分:1)
我认为答案实际上取决于确切的情况。 ACS并不意味着管理配置文件,因此它可以而且应该做的关于外发声明的设计或多或少地受到设计的限制 - 它在所有情况下都是中间人。< / p>
除了管理服务标识之外,它只能处理从身份提供商处收到的输入,并且没有管理用户配置文件或类似内容的权利。
考虑到这一点,我认为你真的只有两个合理的选择 - 你的身份提供提供了更多的信息,可以通过,并可能由ACS转换,或者您的应用程序通过ACS从IP接收基本身份管理其扩展档案。
我写过后者here