丰富Azure ACS安全令牌

丰富Azure ACS安全令牌,azure,wif,acs,Azure,Wif,Acs,我们正在考虑将ACS作为我们的联邦STS。我们可以将自己的定制STS配置为IP-STS,以及Facebook、Live和Google等“内置”身份提供商。然而,我们得到的索赔相当“糟糕”。ACS中的索赔转换仅在非常简单的场景中有用。 我们正在寻找处理“丢失索赔”情况的最佳做法。我们认为我们需要在ACS前面放置一个“装饰STS”。当ACS带着一个安全令牌返回时,这个装饰器可以用额外的声明“丰富”安全令牌。如果只是缺少声明,它可以设置一些用户界面,要求用户(一次)完成她的个人资料。这样,无论用户来自

我们正在考虑将ACS作为我们的联邦STS。我们可以将自己的定制STS配置为IP-STS,以及Facebook、Live和Google等“内置”身份提供商。然而,我们得到的索赔相当“糟糕”。ACS中的索赔转换仅在非常简单的场景中有用。

我们正在寻找处理“丢失索赔”情况的最佳做法。我们认为我们需要在ACS前面放置一个“装饰STS”。当ACS带着一个安全令牌返回时,这个装饰器可以用额外的声明“丰富”安全令牌。如果只是缺少声明,它可以设置一些用户界面,要求用户(一次)完成她的个人资料。这样,无论用户来自何处,我们都拥有应用程序所需的声明。这是个好主意吗?在这种情况下,“最佳实践”是什么?(ACS似乎不允许任何编程扩展。)

我认为答案实际上取决于具体的场景。 ACS并不是为了管理个人资料,因此,它可以做什么,应该做什么,关于传出的索赔或多或少受到设计的限制——除了一个案例外,它是一个中间人

除了管理服务标识外,它只能处理从标识提供商收到的输入,而没有管理用户配置文件或任何类似内容的权限

考虑到这一点,我认为您实际上只有两个合理的选择——要么您的身份提供更多的信息,这些信息可以通过ACS传递并可能由ACS转换,要么您的应用程序通过ACS从IPs接收基本身份并管理其扩展配置文件


我写过关于后者的文章,我认为答案将取决于具体情况。 ACS并不是为了管理个人资料,因此,它可以做什么,应该做什么,关于传出的索赔或多或少受到设计的限制——除了一个案例外,它是一个中间人

除了管理服务标识外,它只能处理从标识提供商收到的输入,而没有管理用户配置文件或任何类似内容的权限

考虑到这一点,我认为您实际上只有两个合理的选择——要么您的身份提供更多的信息,这些信息可以通过ACS传递并可能由ACS转换,要么您的应用程序通过ACS从IPs接收基本身份并管理其扩展配置文件


我写过关于后者的文章,你想要的是一个RP-STS,它的设置非常简单。联邦可以看作是一个链,在ACS的情况下,这通常是RP->ACS->IdP,其中令牌请求从左向右移动,令牌从右向左移动。在联合链中,每个实体只明确知道其邻居。您需要的是RP->RP-STS->ACS->IdP。事实上,ACS也可以被认为是RP-STS,因为它既不是身份提供者,也不是依赖方。您只需在链中添加另一个链接,这是可以的,因为联合链可以任意长

您的RP-STS将有两个主要动作:

  • RP发送登录请求时,将该请求的详细信息(如原始RP的域和回复地址、任何RP上下文等)打包到wctx中,并创建一个向ACS发送的登录请求
  • 当ACS将令牌发送回RP-STS时,解压缩上下文,添加所需的任何值(例如提示用户提供更多详细信息或查找配置文件),然后使用添加的声明和ACS发布的任何您希望保留的声明发布新令牌

  • 在这种情况下,有效的做法是将身份验证外包给Google/FB/等ACS,因为您不想处理这些协议,然后在身份验证完成后添加您自己的价值。从ACS的角度来看,只有一个RP注册:您的RP-STS。从您实际的RP的角度来看,只有一个身份提供者:您的RP-STS。

    您想要的被称为RP-STS,设置起来非常简单。联邦可以看作是一个链,在ACS的情况下,这通常是RP->ACS->IdP,其中令牌请求从左向右移动,令牌从右向左移动。在联合链中,每个实体只明确知道其邻居。您需要的是RP->RP-STS->ACS->IdP。事实上,ACS也可以被认为是RP-STS,因为它既不是身份提供者,也不是依赖方。您只需在链中添加另一个链接,这是可以的,因为联合链可以任意长

    您的RP-STS将有两个主要动作:

  • RP发送登录请求时,将该请求的详细信息(如原始RP的域和回复地址、任何RP上下文等)打包到wctx中,并创建一个向ACS发送的登录请求
  • 当ACS将令牌发送回RP-STS时,解压缩上下文,添加所需的任何值(例如提示用户提供更多详细信息或查找配置文件),然后使用添加的声明和ACS发布的任何您希望保留的声明发布新令牌

  • 在这种情况下,有效的做法是将身份验证外包给Google/FB/等ACS,因为您不想处理这些协议,然后在身份验证完成后添加您自己的价值。从ACS的角度来看,只有一个RP注册:您的RP-STS。从实际RP的角度来看,只有一个身份提供者:您的RP-STS。

    您好,谢谢您的回答。由于我对身份提供者几乎没有控制权(我自己的除外),我不能让他们提供我需要的数据。您的方法将“概要文件”放置在客户端应用程序中。这种方法很有效,但我必须在每个客户端应用程序中“复制”这种工作。如果每个客户端应用程序都有不同的“配置文件需求”,我想这是一种可行的方法。我有点希望把这个也“外包”给STS。嗨,谢谢你的帮助