Testando a Acessibilidade do Ponto Final do Entra ID

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

Se o seu cliente de banco de dados estiver configurado para obter tokens OAuth2 do ID do Entra da Microsoft, o cliente de banco de dados deverá poder acessar o ponto final do ID do Entra. 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 êxito.

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 ID do 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 esse teste for bem-sucedido, uma mensagem PL/SQL procedure successfully completed será exibida.

    Se as seguintes mensagens forem exibidas, 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 como a seguir:
      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 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 se conectar com o ponto final do ID do Microsoft Entra, mesmo depois de definir a política de ACL, você provavelmente 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 padrão do Oracle Database 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.