我有一个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
事件中尚未验证令牌。我最好在验证令牌后得到这些信息。
答案 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中的任何内容定义的具体版本。