2017-06-15 1 views
3

Je tente d'installer IdentityServer pour utiliser ADFS pour l'authentification. Le flux sera:IdentityServer et ADFS

utilisateur -> application personnalisée -> IS -> ADFS

J'ai presque tout l'installation, mais je suis coincé à la communication entre IS et ADFS. L'utilisateur semble se connecter avec succès dans ADFS, mais je reçois une erreur:

ID4037: La clé nécessaire pour vérifier la signature n'a pas pu être résolu de l'identificateur de clé de sécurité suivante « SecurityKeyIdentifier

quand je reviens à IS.

Il est évident qu'il y a un problème avec les certificats de signature de jetons d'un côté ou de l'autre. J'ai essayé sans succès de trouver de la documentation expliquant la relation entre les différents certificats.

Actuellement, j'ai un certificat auto-signé dans IS qui signe des jetons (configuré à l'aide de la propriété SigningCertificate de IdentityServerOptions) et j'ai un certificat AD configuré dans ADFS pour signer les jetons.

Y at-il un guide ou une recommandation sur la façon de le faire correctement? Devrait-il être le même dans les deux ou devrais-je configurer quelque chose d'autre pour le faire fonctionner?

EDIT Avec Fiddler je peux voir que tout à l'intérieur ADFS fonctionne bien et l'erreur est lorsque les résultats sont affichés à IdentityServer. Le XML a écrit dans wresult param est:

<t:RequestSecurityTokenResponse xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust"> 
    <t:Lifetime> 
    <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-06-20T12:25:31.148Z</wsu:Created> 
    <wsu:Expires xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-06-20T13:25:31.148Z</wsu:Expires> 
    </t:Lifetime> 
    <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>urn:identityServer</wsa:Address> 
    </wsa:EndpointReference> 
    </wsp:AppliesTo> 
    <t:RequestedSecurityToken> 
    <saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="_fd1a14cd-4d18-407b-97d4-9f9dfcacd29a" Issuer="http://ssosrv.mydomain.com/adfs/services/trust" IssueInstant="2017-06-20T12:25:31.148Z" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"> 
     <saml:Conditions NotBefore="2017-06-20T12:25:31.148Z" NotOnOrAfter="2017-06-20T13:25:31.148Z"> 
     <saml:AudienceRestrictionCondition> 
      <saml:Audience>urn:identityServer</saml:Audience> 
     </saml:AudienceRestrictionCondition> 
     </saml:Conditions> 
     <saml:AttributeStatement> 
     <saml:Subject> 
      <saml:NameIdentifier>[email protected]</saml:NameIdentifier> 
      <saml:SubjectConfirmation> 
      <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod> 
      </saml:SubjectConfirmation> 
     </saml:Subject> 
     <saml:Attribute AttributeName="emailaddress" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> 
      <saml:AttributeValue>[email protected]</saml:AttributeValue> 
     </saml:Attribute> 
     <saml:Attribute AttributeName="name" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> 
      <saml:AttributeValue>Name Surname</saml:AttributeValue> 
     </saml:Attribute> 
     <saml:Attribute AttributeName="upn" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> 
      <saml:AttributeValue>[email protected]</saml:AttributeValue> 
     </saml:Attribute> 
     </saml:AttributeStatement> 
     <saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" AuthenticationInstant="2017-06-20T12:25:31.039Z"> 
     <saml:Subject> 
      <saml:NameIdentifier>[email protected]</saml:NameIdentifier> 
      <saml:SubjectConfirmation> 
      <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod> 
      </saml:SubjectConfirmation> 
     </saml:Subject> 
     </saml:AuthenticationStatement> 
     <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
     <ds:SignedInfo> 
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
      <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> 
      <ds:Reference URI="#_fd1a14cd-4d18-407b-97d4-9f9dfcacd29a"> 
      <ds:Transforms> 
       <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
       <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
      </ds:Transforms> 
      <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> 
      <ds:DigestValue>6CeXXXXXXXXXXXXXXXXXXXX=</ds:DigestValue> 
      </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue>q9hJBFFFFFFFFFFFFFFFFFFFF==</ds:SignatureValue> 
     <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
      <X509Data> 
      <X509Certificate>MIIFnzXXXXXXXXXXXXXXXXXXXX</X509Certificate> 
      </X509Data> 
     </KeyInfo> 
     </ds:Signature> 
    </saml:Assertion> 
    </t:RequestedSecurityToken> 
    <t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType> 
    <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType> 
    <t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType> 
</t:RequestSecurityTokenResponse> 

Merci, Albert

Répondre

5

Résolu. Il n'était pas lié à l'intégration ADFS, mais à la façon dont j'avais configuré l'authentification de fédération dans Identity Server. J'utilisais deux fournisseurs d'identité d'authentification de fédération: celui-ci avec ADFS et un autre utilisant WinAuth. Sans rappel, la réponse d'ADFS était traitée par WinAuth, j'ai donc configuré différents rappels pour chacun d'entre eux et cela fonctionne.

2

De mémoire:

  • Vous devez convertir le certificat est au format .cer.
  • En mmc, faites un clic droit sur le certificat et "Toutes les tâches"/"Exporter".
  • Cliquez sur l'assistant d'exportation en sélectionnant: "Non, n'exporte pas la clé privée". "Binaire codé DER X.509 (.CER)".
  • Sélectionnez le nom du fichier à exporter et "Enregistrer".
  • Options de révision et "Terminer".
  • Dans l'assistant ADFS, importez le fichier .cer dans l'onglet Certificats.
+0

Je l'ai fait changer pour utiliser le même certificat dans ADFS et dans IS et je reçois toujours une erreur. En tout cas, je cherche plus de documentation/directive que d'une solution spécifique qui pourrait fonctionner, mais je ne saurais pas pourquoi. – Albert

+0

voir le bas de cette: https://social.technet.microsoft.com/wiki/contents/articles/1420.ad-fs-2-0-id4037-la-clé-nécessaire-pour-vérifier-la-signature-ne-pas-être-résolu-de-la-suite-security-key-identifier.aspx - vous devrez peut-être désactiver la vérification de révocation – stombeur

+0

@stombeur J'ai essayé, mais j'ai toujours la même erreur ... – Albert