Test dell'accessibilità dell'endpoint Entra ID

È necessario assicurarsi che Oracle Database possa accedere all'endpoint Entra ID.

Se il client di database è configurato per ottenere i token Microsoft Entra ID OAuth2, il client di database deve essere in grado di accedere all'endpoint Entra ID. Eseguire il comando seguente per verificare se si dispone dell'accesso a Internet:
curl https://login.windows.net/common/discovery/keys
Un codice di stato pari a 200 indica la riuscita.

Verificare con l'help desk IT le informazioni sul proxy se l'esecuzione di questo comando non è riuscita.

Affinché un database Oracle accetti i token Entra ID OAuth2, il database deve richiedere la chiave pubblica dall'endpoint Microsoft Entra ID.
  • Eseguire il test seguente per determinare se il database può connettersi all'endpoint ID Microsoft Entra:
    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;
    /

    Se il test riesce, viene visualizzato un messaggio PL/SQL procedure successfully completed.

    Se vengono visualizzati i messaggi riportati di seguito, significa che un criterio ACL (Database Network Access Control List) ha bloccato il test e che sarà necessario impostare temporaneamente un criterio della lista di controllo dell'accesso per consentire il test di quanto riportato di seguito.

    ORA-29273: HTTP request failed
    ORA-24247: network access denied by access control list (ACL)
    1. Impostare l'ACL come indicato di seguito.
      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;
      /

      Sostituire username_placeholder con il nome utente dell'utente del database che esegue il test. Ad esempio:

      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. Provare a eseguire di nuovo il test.
    3. Rimuovere l'ACL perché ora non è più necessaria. Ad esempio, supponendo che il nome utente sia 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;
      /
Se il database non è in grado di connettersi all'endpoint Microsoft Entra ID, anche dopo aver impostato il criterio ACL, è molto probabile che sia necessario impostare il package HTTP_PROXY per il database. Rivedere gli argomenti elencati in Argomenti correlati, a seconda se si utilizza un ambiente Oracle Database predefinito o un ambiente Oracle Real Application Clusters RAC. L'amministratore di rete deve essere in grado di indicare l'impostazione HTTP_PROXY corretta.