Testando a Acessibilidade do Ponto Final do ID Entra

Certifique-se de que o Oracle Database possa acessar o ponto final Entra ID.

Se seu cliente de banco de dados estiver configurado para obter tokens OAuth2 do Microsoft Entra ID, o cliente de banco de dados deverá ser capaz de acessar o ponto final do Entra ID. Execute o seguinte comando para verificar se você tem acesso à internet:
curl https://login.windows.net/common/discovery/keys
Um código de status 200 indica sucesso.

Verifique com o helpdesk de TI as informações de proxy se você não executou este comando com sucesso.

Para que um banco de dados Oracle aceite tokens Entra ID OAuth2, o banco de dados deve solicitar a chave pública do ponto final do Microsoft Entra ID.
  • Execute o seguinte teste para determinar se o banco de dados pode estabelecer conexão com o ponto final do 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;
    /

    Se esse teste for bem-sucedido, uma mensagem PL/SQL procedure successfully completed será exibida.

    Se as mensagens a seguir aparecerem, isso significa que uma política de lista de controle de acesso à rede (ACL) do banco de dados bloqueou seu teste e você precisará definir temporariamente uma política de lista de controle de acesso para permitir que você teste isso:

    ORA-29273: HTTP request failed
    ORA-24247: network access denied by access control list (ACL)
    1. Defina a ACL da seguinte forma:
      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;
      /

      Substitua username_placeholder pelo nome de usuário do usuário do banco de dados que está executando o teste. Por exemplo:

      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. Tente executar o teste novamente.
    3. Remova a ACL porque agora você não precisa mais dela. Por exemplo, supondo que seu nome de usuário seja 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 o banco de dados não puder estabelecer conexão com o ponto final do Microsoft Entra ID, mesmo depois de definir a política de ACL, provavelmente você precisará definir o pacote HTTP_PROXY para seu banco de dados. Revise os tópicos listados em Tópicos Relacionados, dependendo se você estiver usando um ambiente Oracle Database padrão ou um ambiente RAC do Oracle Real Application Clusters. O administrador da rede deverá ser capaz de informar qual deve ser a definição HTTP_PROXY correta.