【问题标题】:Get the issuer of a SamlSecurityToken获取 SamlSecurityToken 的颁发者
【发布时间】:2013-06-11 12:04:13
【问题描述】:

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

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

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

WSFederationAuthenticationModuleSecurityTokenReceived 事件中,我观察到以下内容;

收到的SamlSecurityToken 公开了一个SamlAssertion,它有一个私有字段_issuerToken,类型为X509SecurityToken

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

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

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

【问题讨论】:

    标签: wif


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这非常接近! ClaimIssuerproperty,问题已解决。
    【解决方案2】:

    感谢 Eugenio,您为我指明了正确的方向。事实证明,发行人包含在声明中,在 Claim.Issuer Property 中,仔细想想,这完全有道理——您可能有来自不同发行人的声明。

    所以使用示例配置:

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

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

    谢谢大家。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-04-20
        • 2013-07-09
        • 2017-08-31
        • 2018-07-04
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多