1

J'essaye de connecter mon application IdentityServer3. J'utilise l'exemple SelfHost (InMem with WS-Fed). La connexion fonctionne correctement. Je reçois un beau jeton SAML:L'utilisation de Thinktecture IdentityServer3 avec SessionAuthenticationModule/WSFederationAuthenticationModule génère une erreur ID4175

<trust:RequestSecurityTokenResponseCollection xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512"> 
    <trust:RequestSecurityTokenResponse Context="rm=1&amp;id=passive&amp;ru=%2f"> 
    <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> 
     <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:Address>http://localhost:47483/</wsa:Address> 
     </wsa:EndpointReference> 
    </wsp:AppliesTo> 
    <trust:RequestedSecurityToken> 
     <Assertion ID="_3652b65f-1ec9-46bc-b441-0bbe58fac918" IssueInstant="2015-10-21T09:39:52.079Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> 
     <Issuer>https://localhost:44333/core</Issuer> 
     <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
      <SignedInfo> 
      <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
      <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> 
      <Reference URI="#_3652b65f-1ec9-46bc-b441-0bbe58fac918"> 
       <Transforms> 
       <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
       <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
       </Transforms> 
       <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> 
       <DigestValue>CKB75sO/t4yKTxvWiexH07OxXF9MyfCiCHL/etC5FqY=</DigestValue> 
      </Reference> 
      </SignedInfo> 
      <SignatureValue>Lrc3LECkvgPMjI...ZdvN0UaWPg==</SignatureValue> 
      <KeyInfo> 
      <X509Data> 
       <X509Certificate>MIIDBTCCAfGgA...0CfXoW6iz1</X509Certificate> 
      </X509Data> 
      </KeyInfo> 
     </Signature> 
     <Subject> 
      <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" /> 
     </Subject> 
     <Conditions NotBefore="2015-10-21T09:39:52.029Z" NotOnOrAfter="2015-10-21T09:40:52.029Z"> 
      <AudienceRestriction> 
      <Audience>http://localhost:47483/</Audience> 
      </AudienceRestriction> 
     </Conditions> 
     <AuthnStatement AuthnInstant="2015-10-21T09:39:52.026Z"> 
      <AuthnContext> 
      <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef> 
      </AuthnContext> 
     </AuthnStatement> 
     </Assertion> 
    </trust:RequestedSecurityToken> 
    </trust:RequestSecurityTokenResponse> 
</trust:RequestSecurityTokenResponseCollection> 

C'est super, mais mon application montre un écran jaune de la mort: enter image description here

Mon Web.config (extrait) ressemble à ceci:

<system.identityModel.services> 
    <federationConfiguration> 
     <wsFederation passiveRedirectEnabled="true" homeRealm="" issuer="https://localhost:44333/core/wsfed" realm="http://localhost:47483/" requireHttps="false" persistentCookiesOnPassiveRedirects="true" /> 
     <cookieHandler requireSsl="false" persistentSessionLifetime="0.10:00:00" /> 
    </federationConfiguration> 
    </system.identityModel.services> 
    <system.identityModel> 
    <identityConfiguration> 
     <audienceUris> 
     <add value="http://localhost:47483/" /> 
     </audienceUris> 
     <certificateValidation certificateValidationMode="None" /> 
     <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"> 
     <trustedIssuers> 
      <add thumbprint="‎6b7acc520305bfdb4f7252daeb2177cc091faae1" name="https://localhost:44333/core" /> 
     </trustedIssuers> 
     </issuerNameRegistry> 
    </identityConfiguration> 
    </system.identityModel> 

Qu'est-ce que je fais de mal? Y a-t-il un moyen de faire fonctionner ça?

Répondre

0

Le problème semble être le System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry. Je l'ai remplacé par le mien. maintenant tout fonctionne bien.

1

Bien sûr. Regardez les assertions SAML. L'émetteur dans le jeton est ici:

<Issuer>https://localhost:44333/core</Issuer> 

Le paramètre de validation de l'émetteur dans la configuration de votre WSFed est ici:

<wsFederation passiveRedirectEnabled="true" homeRealm="" issuer="https://localhost:44333/core/wsfed" realm="http://localhost:47483/" requireHttps="false" persistentCookiesOnPassiveRedirects="true" /> 

On dirait que vous avez un /wsfed supplémentaire dans votre émetteur de configuration web propriété pour la Élément wsFederation. Si vous le supprimez, je m'attends à ce que le jeton soit ensuite validé.

+0

Bonne idée, mais l'attribut issuer est l'uri de base pour la connexion/déconnexion. Si je change cela, je suis sur la racine sur le serveur https: // localhost: 44333/core et aucune connexion ne peut être effectuée. Voir https://msdn.microsoft.com/en-us/library/hh568665(v=vs.110).aspx «L'URI de l'émetteur de jeton prévu» Définit l'URL de base de la connexion à WS-Federation. demandes et demandes de déconnexion requises. " Donc ça ne marche pas. –