获取SamlSecurityToken的发行者

时间:2013-06-11 12:04:13

标签: wif

我有一个WIF RP,配置了多个可信发行者,例如:

<trustedIssuers>
  <add thumbprint="..." name="Issuer1" />
  <add thumbprint="..." name="Issuer2" />
</trustedIssuers>

我正试图抓住哪个特定发行人来自某个令牌。我希望IssuerNameRegistry.GetIssuerName(...)可以做到这一点,但它似乎返回null,除非提供的令牌是X509SecurityToken。

WSFederationAuthenticationModule的{​​{1}}事件中,我会观察以下内容;

收到的SecurityTokenReceived会显示SamlSecurityToken SamlAssertion,其中包含_issuerToken类型的私有字段X509SecurityToken

所以,信息似乎就在那里,我只是无法掌握它。

简而言之,我如何确定哪个受信任的发卡机构发出了令牌?任何帮助表示赞赏。

PS!我知道在SecurityTokenReceived事件中尚未验证令牌。我最好在验证令牌后得到这些信息。

3 个答案:

答案 0 :(得分:2)

如果我没记错的话,ClaimsPrincipal有一个Issuer属性。这可能更容易(查看Identity属性(现在没有机器,我无法验证)。

答案 1 :(得分:1)

谢谢Eugenio,你指出了我正确的方向。事实证明,发行人是在Claim.Issuer Property中包含在索赔中,当您考虑它时,这很有意义 - 您可能会有来自不同发行人的索赔。

所以使用示例配置:

<trustedIssuers>
  <add thumbprint="..." name="Issuer1" />
  <add thumbprint="..." name="Issuer2" />
</trustedIssuers>

如果声明来自“Issuer1”,Claim.Issuer属性将返回“Issuer1”。

谢谢你们。

答案 2 :(得分:0)

您是否使用单个参数(http://msdn.microsoft.com/en-us/library/ee747522.aspx)查看了其他版本?

这是一个抽象方法,因此您需要获取由web.config中的任何内容定义的具体版本。