Ich versuche, IdentityServer einzurichten, ADFS für Authentifizierung zu verwenden. Der Fluss wird:IdentityServer und ADFS
Benutzer -> Benutzerdefinierte App -> IS -> ADFS
Ich habe Setup fast alles, aber ich bin an der Kommunikation zwischen IS und ADFS stecken. Der Benutzer scheint erfolgreich in ADFS einzuloggen, aber ich erhalte eine Fehlermeldung:
ID4037: Der Schlüssel benötigt, um die Signatur verifizieren konnte nicht aus der folgenden Sicherheitsschlüsselkennung ‚SecurityKeyIdentifier
aufgelöst werden, wenn ich zurückkomme zu IS.
Es ist offensichtlich, dass es ein Problem mit den Tokensignaturzertifikaten auf der einen oder anderen Seite gibt. Ich habe erfolglos versucht, eine Dokumentation zu finden, die die Beziehung zwischen verschiedenen Zertifikaten erklärt.
Im Moment habe ich ein selbstsigniertes Zertifikat im IS, das Tokens signiert (eingerichtet mit der SigningCertificate-Eigenschaft von IdentityServerOptions) und ich habe ein AD-Zertifikat in ADFS zur Signierung von Tokens konfiguriert.
Gibt es eine Anleitung oder eine Empfehlung, wie man es richtig macht? Sollte es in beiden gleich sein oder sollte ich etwas anderes konfigurieren, damit es funktioniert?
EDIT Mit Fiddler ich das alles sehen kann, innerhalb ADFS fein läuft, und der Fehler ist, wenn die Ergebnisse auf IdentityServer gebucht werden. Die XML in wresult param geschrieben ist:
<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>
Danke, Albert
Ich habe es geändert, um das gleiche Zertifikat in ADFS und in IS zu verwenden, und ich bekomme immer noch einen Fehler. Auf jeden Fall suche ich mehr nach einer Dokumentation/Richtlinie als nach einer spezifischen Lösung, die funktionieren könnte, aber ich würde nicht wissen warum. – Albert
siehe unten: https://social.technet.microsoft.com/wiki/contents/articles/1420.ad-fs-2-0-id4037-the-key-need-to-verify-the-signature-not-resolve-from-the-following-security-key-identifier.aspx - möglicherweise müssen Sie Sperrung der Sperrung deaktivieren – stombeur
@stombeur Ich habe es versucht, aber immer noch den gleichen Fehler ... – Albert