1

我有一个 WIF RP,配置了多个受信任的颁发者,例如:

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

我正在尝试了解令牌来自哪个特定发行者。我希望IssuerNameRegistry.GetIssuerName(...)能解决问题,但它似乎返回 null,除非提供的令牌是 X509SecurityToken。

WSFederationAuthenticationModule'SecurityTokenReceived事件中,我观察到以下内容;

接收到的SamlSecurityToken公开了一个类型SamlAssertion为 的私有字段。_issuerTokenX509SecurityToken

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

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

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

4

3 回答 3

2

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

于 2013-06-11T16:52:23.870 回答
1

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

因此,使用示例配置:

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

Claim.Issuer如果索赔来自“Issuer1”,则该属性返回“Issuer1”。

多谢你们。

于 2013-06-12T09:49:32.143 回答
0

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

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

于 2013-06-11T16:31:13.697 回答