Приложение ASP .NET MVC на основе утверждений с ADFS 2.0 - слишком много перенаправлений - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь создать веб-приложение 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?

1 Ответ

0 голосов
/ 02 ноября 2018

Эмитентом является URL-адрес ADFS, например, https://my -adfs / ADFS / л.с. / .

Обновление

Это URL-адрес ADFS. Вам нужно будет спросить у команды ADFS фактический адрес (часть, которую вы подставили в «my-adfs».

например. https://adfs234.cloudapp.net/adfs/ls/

Вы также можете получить их из метаданных, если команда ADFS может предоставить это.

Да - это специфично для этой установки.

...