Zugänglichkeit des Entra-ID-Endpunkts testen

Sie müssen sicherstellen, dass Ihre Oracle Database auf den Entra-ID-Endpunkt zugreifen kann.

Wenn der Datenbankclient so konfiguriert ist, dass Microsoft Entra ID-OAuth2-Token abgerufen werden, muss der Datenbankclient auf den Entra-ID-Endpunkt zugreifen können. Führen Sie den folgenden Befehl aus, um zu prüfen, ob Sie über Internetzugang verfügen:
curl https://login.windows.net/common/discovery/keys
Der Statuscode 200 gibt Erfolg an.

Wenn Sie diesen Befehl nicht erfolgreich ausgeführt haben, fragen Sie den IT-Helpdesk nach den Proxyinformationen.

Damit eine Oracle-Datenbank Entra-ID-OAuth2-Token akzeptiert, muss die Datenbank den Public Key vom Microsoft Entra-ID-Endpunkt anfordern.
  • Führen Sie den folgenden Test aus, um festzustellen, ob die Datenbank eine Verbindung zum Microsoft Entra-ID-Endpunkt herstellen kann:
    SET SERVEROUTPUT ON SIZE 40000
    DECLARE
      req UTL_HTTP.REQ;
      resp UTL_HTTP.RESP;
    BEGIN
      UTL_HTTP.SET_WALLET(path => 'system:');
      req := UTL_HTTP.BEGIN_REQUEST('https://login.windows.net/common/discovery/keys');
      resp := UTL_HTTP.GET_RESPONSE(req);
      DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || resp.status_code);
      UTL_HTTP.END_RESPONSE(resp);
    END;
    /

    Wenn dieser Test erfolgreich war, wird eine PL/SQL procedure successfully completed-Meldung angezeigt.

    Wenn die folgenden Meldungen angezeigt werden, bedeutet dies, dass eine ACL-(Database Network Access Control List-)Policy Ihren Test blockiert hat. Sie müssen vorübergehend eine Access Control-Listen-Policy festlegen, damit Sie dies testen können:

    ORA-29273: HTTP request failed
    ORA-24247: network access denied by access control list (ACL)
    1. Legen Sie die ACL wie folgt fest:
      BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'username_placeholder',
                             principal_type => xs_acl.ptype_db));
      END;
      /

      Ersetzen Sie username_placeholder durch den Benutzernamen des Datenbankbenutzers, der den Test ausführt. Beispiele:

      BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'DBA_DEBRA',
                             principal_type => xs_acl.ptype_db));
      END;
      /
    2. Führen Sie den Test erneut aus.
    3. Entfernen Sie die ACL, da Sie sie jetzt nicht mehr benötigen. Beispiel: Angenommen, Ihr Benutzername lautet dba_debra:
      BEGIN
      DBMS_NETWORK_ACL_ADMIN.REMOVE_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'DBA_DEBRA',
                             principal_type => xs_acl.ptype_db));
      END;
      /
Wenn die Datenbank keine Verbindung zum Microsoft Entra ID-Endpunkt herstellen kann, müssen Sie wahrscheinlich auch nach dem Festlegen der ACL-Policy das Package HTTP_PROXY für die Datenbank festlegen. Prüfen Sie die in den zugehörigen Themen aufgeführten Themen, je nachdem, ob Sie eine Oracle Database-Standardumgebung oder eine Oracle Real Application Clusters RAC-Umgebung verwenden. Der Netzwerkadministrator sollte Ihnen mitteilen können, welche HTTP_PROXY-Einstellung korrekt sein sollte.