Sicherheit

Der Natural OpenAPI Server bietet Konfigurationsoptionen für die Sicherheit der Kommunikation:

  • zwischen dem Natural OpenAPI Server und dem Subprogram Server.

  • zwischen dem Client und dem Natural OpenAPI Server.

Dieses Dokument behandelt die folgenden Themen:


Sichere Kommunikation zwischen dem Natural OpenAPI Server und dem Subprogram Server

Mit dem Natural OpenAPI Server kann die Kommunikation zwischen dem Natural OpenAPI Server und den Subprogram Servers mittels SSL/TLS verschlüsselt werden.

SSL/TLS kann über die folgende Property aktiviert werden:

com.softwareag.natural.openapi.server.config.host.ssl.enabled=true

Wenn SSL/TLS eingerichtet ist, verwendet der Server die konfigurierte Zertifikatskette, um sichere Verbindungen herzustellen. Das Zertifikat kann über die Property certsChain konfiguriert werden:

com.softwareag.natural.openapi.server.config.host.ssl.certsChain[0]=classpath:natsubsrv.server.cert.crt

Die Property gibt den Speicherort des serverseitigen Zertifikats an. Das Präfix classpath: bedeutet, dass das Zertifikat aus dem Class-Pfad der Anwendung geladen wird.

Es können mehrere Zertifikate als Teil der Zertifikatskette angegeben werden, indem zusätzliche indizierte Properties verwendet werden, zum Beispiel: certsChain[1], certsChain[2] und so weiter.

Anmerkung
Die SSL-Zertifikatskonfiguration ist nur relevant, wenn com.softwareag.natural.openapi.server.config.host.ssl.enabled auf true gesetzt ist.

Sichere Kommunikation zwischen Client und Natural OpenAPI Server

Der Natural OpenAPI Server unterstützt sichere Kommunikation über SSL/TLS. Wenn SSL/TLS aktiviert ist, stellen Clients die Verbindung zum Server über HTTPS statt über HTTP her.

Der vom Server standardmäßig verwendete Port ist 8080. Für HTTPS kann ein anderer Port konfiguriert werden, beispielsweise 8443, indem die folgende Property festgelegt wird:

server.port=8443

Um SSL/TLS zu aktivieren, setzen Sie die folgende Property:

server.ssl.enabled=true

Die folgenden Properties konfigurieren das vom Server verwendete SSL-Zertifikat und den Schlüsselspeicher (Key Store):

Pfad zum Schlüsselspeicher

Diese Property gibt den Pfad zum Schlüsselspeicher an, der das SSL-Zertifikat und den privaten Schlüssel enthält. Beispiel:

server.ssl.key-store=file:///opt/softwareag/NaturalOpenAPIServer/conf/keystore.p12

Passwort für den Schlüsselspeicher

Diese Property gibt das Passwort an, das für den Zugriff auf den Schlüsselspeicher erforderlich ist. Beispiel:

server.ssl.key-store-password=password

Typ des Schlüsselspeichers

Diese Property gibt den Typ des Schlüsselspeichers an. Die unterstützten Typen sind JKS und PKCS12. Beispiel:

server.ssl.key-store-type=PKCS12

Schlüsselspeicher-Alias

Diese Property gibt den Alias an, der zur Identifizierung des Zertifikats und des privaten Schlüssels innerhalb des Schlüsselspeichers verwendet wird. Beispiel::

server.ssl.key-alias=noa-server

Anmerkung
Der Schlüsselspeicher muss ein gültiges SSL/TLS-Zertifikat und den dazugehörigen privaten Schlüssel enthalten.

Authentifizierung

Der Natural OpenAPI Server authentifiziert den Client, der die Anfrage sendet, nicht selbst, sondern stützt sich auf das Authentifizierungsmodul des Natural Subprogram Server. Ist der Natural Subprogram Server jedoch für die Verwendung einer Authentifizierungsmethode konfiguriert, müssen Sie die entsprechende Konfiguration im Natural OpenAPI Server festlegen. Durch die Festlegung der korrekten Konfiguration wird die entsprechende Definition im OpenAPI-Dokument unter http://localhost:OpenAPIServer_port/v3/api-docs erstellt.

Es gibt drei verschiedene Möglichkeiten, die Authentifizierung zu definieren:

Verwendung der Basic-Authentifizierung

Wird die Property com.softwareag.natural.openapi.web.config.authenticationType auf basic gesetzt, muss die Client-Anwendung Benutzername und Passwort in Base64-Kodierung (definiert in RFC-7617) übermitteln.

Verwendung eines OAuth2-Tokens

Das Abrufen des Tokens obliegt der Client-Anwendung, während die Token-Validierung vom Authentifizierungsmodul des Natural Subprogram Server durchgeführt wird.

Wird die Property com.softwareag.natural.openapi.web.config.authenticationType auf oauth2 gesetzt, muss die Client-Anwendung gemäß den Anforderungen des OpenAPI-Dokuments ein Bearer-Token senden.

Die Client-Anwendung muss neben dem bereitgestellten Token den speziellen HTTP-Header X-Impersonate-User einfügen, um den zu impersonierenden Benutzer anzugeben.

Die folgende Konfiguration kann beim Testen mit dem Swagger-UI-Webclient verwendet werden. Das in den Natural OpenAPI Server eingebettete Swagger-UI unterstützt derzeit nur den Client Credentials-Ablauf. Wenn die OAuth2-Authentifizierung aktiviert ist, können Sie die tokenURL und die erforderlichen Bereiche definieren. Diese Werte werden im OpenAPI-Dokument angegeben, aber vom Natural OpenAPI Server nicht zur Authentifizierung verwendet. Im Falle einer Impersonierung muss diese nach einer erfolgreichen Token-Überprüfung durchgeführt werden.

Verwendung anonymer Anfragen

Wenn in der Datei application.properties kein Authentifizierungstyp definiert ist, gelten die Anfragen standardmäßig als anonym und sollten nicht authentifiziert werden. Es ist auch möglich, die Anfrage unter Verwendung des speziellen HTTP-Header X-Impersonate-User als anderer Benutzer auszuführen.