Test de l'accessibilité de l'adresse d'ID Entra

Vous devez vous assurer qu'Oracle Database peut accéder à l'adresse d'ID Entra.

Si votre client de base de données est configuré pour obtenir les jetons OAuth2 de l'ID Entra Microsoft, il doit pouvoir accéder à l'adresse d'ID Entra. Exécutez la commande suivante pour vérifier si vous disposez d'un accès Internet :
curl https://login.windows.net/common/discovery/keys
Un code de statut de 200 indique la réussite.

Vérifiez auprès du service d'assistance informatique les informations sur le proxy si vous n'avez pas réussi à exécuter cette commande.

Pour qu'une base de données Oracle accepte les jetons Entra ID OAuth2, la base de données doit demander la clé publique à partir de l'adresse Microsoft Entra ID.
  • Exécutez le test suivant pour déterminer si la base de données peut se connecter à l'adresse Microsoft Entra ID :
    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;
    /

    Si ce test réussit, un message PL/SQL procedure successfully completed apparaît.

    Si les messages suivants s'affichent, cela signifie qu'une stratégie de liste de contrôle d'accès réseau de base de données (ACL) a bloqué votre test et que vous devez définir temporairement une stratégie de liste de contrôle d'accès pour pouvoir tester ceci :

    ORA-29273: HTTP request failed
    ORA-24247: network access denied by access control list (ACL)
    1. Définissez l'ACL comme suit :
      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;
      /

      Remplacez username_placeholder par le nom utilisateur de l'utilisateur de base de données qui exécute le test. Exemple :

      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. Essayez d'exécuter à nouveau le test.
    3. Supprimez l'ACL, car vous n'en avez plus besoin. Par exemple, en supposant que votre nom utilisateur est 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;
      /
Si la base de données ne peut pas se connecter à l'adresse d'ID Microsoft Entra, même après avoir défini la stratégie de liste de contrôle d'accès, vous devrez probablement définir le package HTTP_PROXY pour votre base de données. Consultez les rubriques répertoriées dans Rubriques connexes, selon que vous utilisez un environnement Oracle Database par défaut ou un environnement RAC Oracle Real Application Clusters. Votre administrateur réseau doit être en mesure de vous indiquer le paramètre HTTP_PROXY correct.