Key-Locator
Ein Key-Locator ist eine Abstraktion des Verfahrens, das den Schlüssel für digitale Signatur und Verschlüsselung abruft. Die Implementierung des JAAS-Anmeldemoduls (Java™ Authentication and Authorization Service) wird verwendet, um das Sicherheitstoken auf Generatorseite zu erstellen und das Sicherheitstoken auf Konsumentenseite zu validieren (authentifizieren).
- Java-Keystore-Datei
- Datenbank
- Kerberos-KDC-Server (nur WebSphere Application Server mit JAX-WS)
- Trust-Service kann ein Sicherheitskontexttoken und einen Schlüssel bereitstellen (nur WebSphere Application Server mit JAX-WS)
- Ein Zeichenfolgekennsatz des Schlüssels, der explizit über die API übergeben wird. Die Beziehung zwischen jedem Schlüssel und seinem Namen (Zeichenfolgekennsatz) wird im Key-Locator verwaltet.
- Der Implementierungskontext des Key-Locators. Es werden keinen expliziten Informationen an den Key-Locator übergeben. Ein Key-Locator bestimmt den richtigen Schlüssel nach dem Implementierungskontext.
WebSphere Application Server Version 6 und höher unterstützt eine Signatur mit dem Namen HMAC-SHA1, die auf einem geheimen Schlüssel basiert. Wenn Sie HMAC-SHA1 verwenden, enthält die SOAP-Nachricht kein binäres Sicherheitstoken. In diesem Fall wird angenommen, dass die Schlüsseldaten in der Nachricht selbst den Schlüsselnamen enthalten, der verwendet wird, um den geheimen Schlüssel im Keystore anzugeben.
Weil die Key-Locator nur Signaturen auf der Basis öffentlicher Schlüssel unterstützen, ist der Prüfschlüssel im X.509-Zertifikat als Element <BinarySecurityToken> in der ankommenden Nachricht eingebettet. Key-Locator können beispielsweise die Identität des Callers aus dem Kontext und anschließend den öffentlichen Schlüssel des Callers für die Verschlüsselung der Antwort abrufen.
Dieser Abschnitt beschreibt Verwendungsszenarien für Key-Locator.
Signatur:
Der Name des Signaturschlüssels wird in der WS-Security-Konfiguration angegeben. Dieser Wert wird an den Key-Locator übergeben, und der eigentliche Schlüssel wird zurückgegeben. Das entsprechende X.509-Zertifikat kann auch zurückgegeben werden.
Prüfung:
- KeyStoreKeyLocator
- Verwendet den Keystore, um den Schlüssel abzurufen, der für die digitale Signatur und die Prüfung oder für die Verschlüsselung und Entschlüsselung verwendet wird.
- X509CertKeyLocator
- Verwendet ein X.509-Zertifikat in einer Nachricht, um den Schlüssel für die Prüfung oder für die Entschlüsselung abzurufen.
- SignerCertKeyLocator
- Verwendet das X.509-Zertifikat in der Anforderungsnachricht, um den Schlüssel abzurufen, der für die Verschlüsselung der Antwortnachricht verwendet wird.
Verschlüsselung:
Der Name des Signaturschlüssels wird in der WS-Security-Konfiguration angegeben. Dieser Wert wird an den Key-Locator übergeben, und der eigentliche Schlüssel wird zurückgegeben. Auf der Serverseite können Sie SignerCertKeyLocator verwenden, um den Schlüssel für die Verschlüsselung der Antwortnachricht aus dem X.509-Zertifikat in der Anforderungsnachricht abzurufen.
Entschlüsselung:
Die WS-Security-Spezifikation empfiehlt die Verwendung der Schlüssel-ID anstelle des Schlüsselnamens. Weil der Algorithmus für die Berechnung der ID öffentlicher Schlüssel in Internet Engineering Task Force (IETF) Request for Comment (RFC) 3280 definiert ist, gibt es allerdings keinen vereinbarten Algorithmus für geheime Schlüssel. Deshalb verwendet die aktuelle Implementierung von Web Services Security die ID nur, wenn eine Verschlüsselung auf der Basis des öffentlichen Schlüssels durchgeführt wird. Andernfalls wird der Schlüsselname verwendet.
Wenn Sie mit Verschlüsselung auf der Basis öffentlicher Schlüssel arbeiten, ist die Schlüssel-ID in die eingehende verschlüsselte Nachricht eingeschlossen. Die Implementierung von Web Services Security sucht daraufhin alle Schlüssel, die vom Key-Locator verwaltet werden, und entschlüsselt die Nachricht mit dem Schlüssel, dessen ID-Wert dem in der Nachricht enthaltenen entspricht.
Wenn Sie mit Verschlüsselung auf der Basis geheimer Schlüssel arbeiten, ist der Wert des Schlüsselnamens in die eingehende verschlüsselte Nachricht eingeschlossen. Die Implementierung von Web Services Security fragt den Key-Locator nach dem Schlüssel, dessen Name dem in der Nachricht enthaltenen Namen entspricht, und entschlüsselt die Nachricht dann mit diesem Schlüssel.