Я пытаюсь создать веб-приложение ASP .NET MVC с .NET 4.5, которое использует проверку подлинности на основе утверждений с ADFS 2.0.
Я следую учебному пособию на https://docs.microsoft.com/en-us/dotnet/framework/security/how-to-build-claims-aware-aspnet-mvc-web-app-using-wif
Когда я запускаю приложение, я получаю сообщение об ошибке «Слишком много перенаправлений».
Я подозреваю, что это связано с неправильной настройкой в приложении Web.config, которая выглядит следующим образом:
<system.identityModel>
<identityConfiguration>
<audienceUris>
<add value="https://application1.ourdomain.com/" />
</audienceUris>
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<trustedIssuers>
<add thumbprint="RTEWQ67890ABCDEFGHIJKLMNOPQRSTUVWXYZZZZ"/>
</trustedIssuers>
</issuerNameRegistry>
<certificateValidation certificateValidationMode="None" />
</identityConfiguration>
</system.identityModel>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
<wsFederation passiveRedirectEnabled="true" issuer="https://application1.ourdomain.com/trust/" realm="https://application1.ourdomain.com/" reply="https://application1.ourdomain.com/" requireHttps="false" />
</federationConfiguration>
</system.identityModel.services>
В ADFS 2.0 заявки настроены следующим образом:
SigningCertificateRevocationCheck : CheckChainExcludeRoot
WSFedEndpoint : https://application1.ourdomain.com/trust/
AdditionalWSFedEndpoint : {}
ClaimsProviderName : {}
IssuanceTransformRules : @RuleTemplate = "LdapClaimsRuleTemplate"
@RuleName = "application1 Claim Rule"
c:[Type ==
"http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types =
("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role"), query =
";userPrincipalName,mail,tokenGroups;{0}", param = c.Value);
ClaimsAccepted : {}
ConflictWithPublishedPolicy : False
EncryptClaims : True
Enabled : True
EncryptionCertificate :
Identifier : {urn:stsout.ourdomain.com:application1}
LastMonitoredTime : 01/01/1900 01:00:00
LastPublishedPolicyCheckSuccessful :
LastUpdateTime : 01/01/1900 01:00:00
MetadataUrl :
MonitoringEnabled : False
Name : application1 Relying Party Trust
NotBeforeSkew : 0
EnableJWT : False
AlwaysRequireAuthentication : False
Notes :
OrganizationInfo :
ImpersonationAuthorizationRules :
AdditionalAuthenticationRules :
ProxyEndpointMappings : {}
ProxyTrustedEndpoints : {}
ProtocolProfile : WsFed-SAML
RequestSigningCertificate : {}
EncryptedNameIdRequired : False
SignedSamlRequestsRequired : False
SamlEndpoints : {}
SamlResponseSignature : AssertionOnly
SignatureAlgorithm : http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
TokenLifetime : 0
AllowedClientTypes : Public
IssueOAuthRefreshTokensTo : NoDevice
AllowedAuthenticationClassReferences : {}
AutoUpdateEnabled : False
DelegationAuthorizationRules :
EncryptionCertificateRevocationCheck : CheckChainExcludeRoot
PublishedThroughProxy : True
IssuanceAuthorizationRules : @RuleTemplate = "AllowAllAuthzRule"
=> issue(Type = "http://schemas.microsoft.com/authorization/claims/permit",
Value = "true");
Какими должны быть записи Web.config для эмитента, области и ответа?
Правильно ли задано утверждение ADFS 2.0?