Test dell'accessibilità dell'endpoint ID Entra

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

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 200 indica che l'operazione è riuscita.

Verificare con l'help desk IT le informazioni sul proxy se non si è riusciti a eseguire questo comando.

Affinché un database Oracle accetti i token ID Entra OAuth2, il database deve richiedere la chiave pubblica dall'endpoint ID Entra Microsoft.
  • 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 seguenti messaggi, significa che un criterio della lista di controllo dell'accesso alla rete di database (ACL) ha bloccato il test e sarà necessario impostare temporaneamente un criterio della lista di controllo dell'accesso per consentirne il test:

    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. Riprovare a eseguire il test.
    3. Rimuovere l'ACL, poiché non è più necessario. Ad esempio, se il nome utente è 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 ID Microsoft Entra, anche dopo aver impostato il criterio ACL, è molto probabile che sia necessario impostare il package HTTP_PROXY per il database. Rivedere gli argomenti elencati negli argomenti correlati, a seconda che si stia utilizzando un ambiente Oracle Database predefinito o un ambiente RAC Oracle Real Application Clusters. L'amministratore di rete dovrebbe essere in grado di indicare l'impostazione HTTP_PROXY corretta.