Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 如果我有自定义STS,是否需要联合身份验证?若然,原因为何?_Azure_Claims Based Identity_Federated Identity_Acs_Ws Federation - Fatal编程技术网

Azure 如果我有自定义STS,是否需要联合身份验证?若然,原因为何?

Azure 如果我有自定义STS,是否需要联合身份验证?若然,原因为何?,azure,claims-based-identity,federated-identity,acs,ws-federation,Azure,Claims Based Identity,Federated Identity,Acs,Ws Federation,如果我有一个定制的安全令牌服务,专门列出允许的访问群体,并检查令牌是否来自其中一个访问群体,还检查X509证书的指纹和颁发者,我是否需要WSFederation 由于我的STS正在检查令牌是否已经来自特定的应用程序并通过我的ACS路由,我不是正在验证所有需要验证的内容吗?我知道应用程序A向ACS发送了一个请求,ACS向应用程序B发送了一个请求,所有这些请求都来自定制STS,那么联邦身份在这幅图中的位置是什么呢 为清晰起见进行编辑: 对不起,我在原始邮件中有点不清楚。我认为混淆是因为我使用了STS

如果我有一个定制的安全令牌服务,专门列出允许的访问群体,并检查令牌是否来自其中一个访问群体,还检查X509证书的指纹和颁发者,我是否需要WSFederation

由于我的STS正在检查令牌是否已经来自特定的应用程序并通过我的ACS路由,我不是正在验证所有需要验证的内容吗?我知道应用程序A向ACS发送了一个请求,ACS向应用程序B发送了一个请求,所有这些请求都来自定制STS,那么联邦身份在这幅图中的位置是什么呢

为清晰起见进行编辑:

对不起,我在原始邮件中有点不清楚。我认为混淆是因为我使用了STS而不是安全令牌处理程序(方式不同,只是输入错误)。 应用程序A是一个自定义登录服务,它显示用户的登录选项,如google/facebook/yahoo/等。通过这些服务登录可以从ACS获取令牌,并将其返回给依赖方应用程序B。此RP具有一个自定义安全令牌处理程序,该处理程序接受令牌并验证它是否具有与应用程序a匹配的访问群体URI。它还验证颁发者是否为ACS,指纹是否与用于通过ACS签署令牌的证书之一匹配


这意味着理论上应用程序B知道,应用程序A用于登录(因为它来自audienceURI),ACS发送令牌(因为它是发卡机构,指纹匹配)。我要问的是,应用程序B是否需要联邦身份?如果你已经证明了代币的来源,那么使用代币到底能带来什么好处?

你的问题可能需要澄清

首先,您可能想具体解释应用程序A和应用程序B的含义,以及您的STS如何适应此场景。应用程序通常不发出令牌,只有STSE发出令牌。从这个意义上讲,ACS不会将应用程序相互连接,而是将依赖方应用程序连接到第三方身份提供者

第二,如果您正在谈论通过web的身份验证,并且您有一个定制的身份提供者STS为ACS颁发令牌,那么您可能已经在使用WS-Federation了。但是,如果您的令牌获取不是基于浏览器的,并且您正在对ACS进行后端HTTP调用,那么WS-Federation与该场景无关

第三,从STS的角度来看,允许的受众集不是关于令牌发行者,而是指将使用该STS发行的令牌的实体。也就是说,这是STS将向其颁发令牌的主题集。这可能是应用程序本身,也可能是联盟链上的其他中间STSE。(例如,ACS充当此类中介)

第四,当您在传入令牌上验证颁发者的证书时,您必须做的不仅仅是比较指纹。指纹不是令牌加密证明的一部分。您必须验证令牌的数字签名,以验证令牌颁发者是否拥有证书的私钥


我希望这能澄清问题,但如果不能回答您的问题,请告诉我。

根据您的第四点,我在这里使用的是Bertocci的例子:blogs.msdn.com/b/vbertocci/archive/2008/11/26/an-identity-provider-and-its-sts-writing-a-custom-sts-with-the-十月测试版的日内瓦框架.aspx,这使得您似乎只需要验证指纹和发卡机构。啊。这篇文章有点过时,应该注意的是,正如维托里奥自己在文章中所说,这个例子只是为了演示,还没有准备好制作。这并不是什么大问题,因为您不需要自己的自定义安全令牌处理程序,WIF今天已经提供了一些内置的安全令牌处理程序,可以为您执行正确的X509证书签名验证。“今天的WIF已经提供了一些内置的安全令牌处理程序,可以为您执行正确的X509证书签名验证“可能是这样,但我不想在web.config中有特定于站点的配置。因此,要删除访问群体URI标记,我需要覆盖默认的安全令牌处理程序。我已经采纳了您的建议,在其他地方查找了适当的验证,并将其添加到我的代码中。不过,我仍然可以就联邦身份是否必要提出建议。如果应用程序A不像您的场景(通过ACS)那样依赖第三方身份提供商(yahoo/facebook/google…等),那么联邦就没有必要了。联邦为您提供的是让您的用户使用他们选择的IDP登录的灵活性。您使用ACS的特定联合模型还减轻了应用程序B必须验证google/facebook/yahoo令牌本身的负担,这是不同的。ACS为您做到了这一点,并为应用程序B提供了相同类型的令牌,而不考虑身份提供者,并提供了一组规范化的声明。