A integração do Oracle APEX ao Microsoft Azure Entra ID permite centralizar todo o processo de autenticação e autorização em um único provedor de identidade (IdP). Essa abordagem simplifica o gerenciamento de acessos, fortalece a segurança e amplia a governança, além de possibilitar o controle de permissões com base nos grupos do Active Directory.
Principais vantagens
- Segurança delegada ao Azure: aproveita uma plataforma amplamente adotada e reconhecida pela robustez.
- Gestão centralizada: usuários e permissões administrados em um único ponto, reduzindo complexidade.
- Integração moderna: suporte nativo a padrões como OpenID Connect e OAuth2, garantindo interoperabilidade.
- Controle granular de acessos: utilização direta dos grupos do Active Directory para definir autorizações no APEX.
Configuração no Azure
1. Registro da Aplicação
Acesse Azure Portal > Entra > App registrations > New registration. A seguir, preencha o nome da aplicação e informe a URL de redirecionamento (callback) no formato:
<sua_instancia_APEX>/ords/authentication_callback

Uma vez criada, o Azure irá gerar um client ID, mantenha ele por perto, usaremos para configuração no APEX.

Ao clicar no botão “Endpoints”, serão exibidos todos os endereços de autenticação disponíveis para essa aplicação. Você precisará do ponto de autorização do Auth2 para fazer a chamada do login posteriormente, ao criar o esquema de autenticação no APEX.

2. Obtenha as Credenciais
Após registro, anote o Client ID. Em sequência, crie um Client Secret em “Certificates and secrets” e salve-o em local seguro, ele será usado na configuração das credenciais no APEX. É recomendável salvar o valor do segredo em um local seguro temporariamente, pois o Azure exibe o segredo apenas por um período limitado.

3. Conceda Permissões
Em “API permissions”, adicione a permissão em: Microsoft Graph > Group.Read.All
Garanta que está marcada como “Granted”. Pode ser necessário envolvimento do administrador Azure.

4. Configuração dos Grupos AD
Se o objetivo fosse usar o Azure apenas para autenticação, as configurações anteriores já seriam suficientes. Todavia, para demonstrar como extrair informações do Active Directory para usuários no APEX, de forma que esses dados possam ser usados para controlar os níveis de autorização do usuário no aplicativo devemos acessar Entra ID > Groups. Aqui você pode criar os grupos de controle de acesso (ex: APEXADMIN, APEXREAD). Adicione os usuários desejados aos grupos conforme as regras de negócio da sua aplicação.

Por fim, uma vez feito isso, em “Enterprise Applications” navegue até o submenu de “Members” na seção de grupos. Em seguida, atribua os grupos ou usuários à aplicação registrada.

Configuração no Oracle APEX
1. Crie as Web Credentials
Em Workspace Utilities > Web Credentials, inclua o Client ID e Client Secret da aplicação Azure registrada. Com o tipo de autenticação sendo OAuth2.

2. Autenticação via Social Sign-In
No aplicativo, crie um Authentication Scheme do tipo Social Sign-In.
- Provider: OpenId Connect Provider (use o discovery URL do Azure, são os Endpoints mostrados no passo 1);
- Web Credential: selecione a criada anteriormente;
- Scope: profile, email, openid;
- Username: email;
- Additional Attributes: aqui podemos tentar mapear outros atributos de login disponíveis do callback do Azure.

Após salvar, não esqueça de mudar o modo de autenticação para esse que acabamos de criar, basta acessar esse “Authentication Scheme” e clicar em “Make Current Scheme”. A partir desse ponto, o SSO com Azure já deve funcionar. Mas, para configuração de acesso baseado em roles do Azure, siga os passos a seguir.
3. Pós-autenticação: Captura dos Grupos (Roles do Usuário)
Implemente uma procedure de pós-autenticação (POST_AUTHENTICATION) que faça requisição à API do Microsoft Graph para retornar os grupos do usuário:
PROCEDURE post_authentication AS
l_response clob;
l_group_names apex_t_varchar2;
l_values apex_json.t_values;
l_name VARCHAR2 (100);
BEGIN
l_response := apex_web_service.make_rest_request(
p_url => 'https://graph.microsoft.com/v1.0/me/memberOf',
p_http_method => 'GET'
);
apex_json.parse(p_values => l_values, p_source => l_response);
FOR i IN 1 .. apex_json.get_count(p_values => l_values, p_path => 'value') LOOP
l_name := apex_json.get_varchar2(
p_values => l_values,
p_path => 'value[%d].displayName',
p0 => i
);
IF l_name IS NOT NULL THEN
apex_string.push(p_table => l_group_names, p_value => l_name);
END IF;
END LOOP;
-- Habilite grupos dinâmicos na sessão
apex_authorization.enable_dynamic_groups(p_group_names => l_group_names);
END post_authentication;
Atenção: Em Security Attributes do seu app, defina o Source for Role or Group Schemes para Custom Code.
Isso garante que o APEX trate as roles com base nos grupos retornados do Azure. A seguir, um exemplo de JSON recebido de grupos:
{
"value": [
{
"displayName": "APEXADMIN",
"id": "36d8716a-xxxx-xxxx-86159cfd5d02",
"securityEnabled": true,
...
}
]
}
4. Defina Esquemas de Autorização
Implemente esquemas de autorização no APEX baseados nas roles/grupos, ex: só usuários do grupo APEXADMIN podem acessar determinada funcionalidade

Segue o código de autorização usado no exemplo:
select 1 from apex_workspace_session_groups where apex_session_id = :APP_SESSION and GROUP_NAME = 'APEXADMIN'
Ao integrar o Azure Entra ID com o Oracle APEX você centraliza a autenticação e o controle de acesso, aumenta a governança e facilita a manutenção das permissões da sua aplicação. Siga os passos acima para uma configuração robusta, aproveitando o melhor das soluções enterprise de identidade.
