有一个解决方法。
如果收到的安全令牌的 RP 验证因受众而失败:
[System.InvalidOperationException]: {"ID1032: At least one 'audienceUri' must be specified in the SamlSecurityTokenRequirement when the AudienceUriMode is set to 'Always' or 'BearerKeyOnly'. Either add the valid URI values to the AudienceUris property of SamlSecurityTokenRequirement, or turn off checking by specifying an AudienceUriMode of 'Never' on the SamlSecurityTokenRequirement."}
Data: {System.Collections.ListDictionaryInternal}
HelpLink: null
HResult: -2146233079
InnerException: null
Message: "..."
StackTrace: ..
TargetSite: ..
}
此异常(以及许多其他异常)可以在 Application_Error 中处理,使用 Server.GetLastError() 确定异常。
我注意到:
FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenReceived
在引发此异常之前触发。此回调有 SecurityTokenReceivedEventArgs,其中有 SessionToken,您可以在其中找到所有的 audienceUri(s)。您可以在那里实现所需的逻辑并将相关的 AudienceUri 添加到:
FederatedAuthentication.ClaimsAuthorizationModule.FederationConfiguration.
IdentityConfiguration.AudienceRestriction.AllowedAudienceUris
正如我所说,这只是一种解决方法,如果您可以为我的原始问题提供更多信息,那就太好了:)
谢谢。