Olá a todos.
Recentemente a Oracle começou a atualizar algumas localidades com as novas funcionalidades do IAM, muitas novidades, algumas mudanças bem interessantes, que irei deixar para um segundo momento essa explicação detalhada.
Os modelos de federação continuam o mesmo, porém com a mudança no visual pode ser que algumas pessoas encontrem dificuldade na configuração da federação entre um provedor de identidade e o novo IAM.
Para auxiliar irei compartilhar com vocês um artigo ensinando o passo a passo da federação, onde iremos sincronizar os usuários da Azure para o ambiente Oracle Cloud, permitindo que eles consumam recursos de IaaS, SaaS e PaaS.
Para esse laboratório iremos precisar:
- 1 Conta na Azure em que você tenha direitos administrativos (para o tutorial estou utilizando um ambiente trial)
- 1 Conta na Oracle Cloud em que você tenha direitos administrativos (para o tutorial estou utilizando um ambiente trial)
- Alguns usuários e grupos criados na Azure para sincronização e validação dos acessos.
Passo 1: Baixe o metadados da Oracle Cloud para Federação
Em seu console OCI navegue até Identiry & Security e depois Domains

Selecione o domínio (Domain) que irá realizar a federação.

Copie a informação que está disponível em Domain URL, parte dela será utilizada para montar a URL do metadata.

Navegue até Settings > Domain Settings e habilite a opção para acesso ao certificado de assinatura para o domínio.


Ao final da página clique em Save Changes

Agora iremos fazer o download do metadata da Oracle para que possamos fazer o provisionamento da aplicação na Azure.
Para isso, altere a url abaixo, onde está com os caracteres (xxx) para o id de seu domínio, coletado anteriormente, exemplo:
ID de domínio coletado:
https://<idcs-id>.identity.oraclecloud.com:443
Alteração para coleta do metadata:
https://<idcs-id>.identity.oraclecloud.com/fed/v1/metadata
Depois de alterar, pegue a URL e coloque no navegador, seu metadata será apresentado.
Clique com o botão direito nela e salve em seu computador.

Passo 2: Crie uma aplicação para Federação na Azure
Navegue até Enterprise Applications e crie uma nova aplicação

Busque por Oracle na caixa de pesquisa e selecione Oracle Infrastructure Console

Dê um nome para a aplicação e clique em Create

Passo 3: Configure o SSO para Oracle Cloud na Azure
Com a aplicação criada, clique em Overview e selecione a opção Set up single sign on

Selecione a opção SAML

Na página do SAML-based Sign-on, faça o upload do arquivo metadata que você baixou anteriormente da Oracle Cloud, ele irá preencher todos os campos essenciais para configuração da federação.

Após o upload do metadata, ele irá preencher todos os campos principais, menos 1 que deve ser preenchido manualmente.
Coloque nesse campo a url de acesso da Oracle, https://cloud.oracle.com

Passo 4: Configure os claims para conta de usuário
Navegue até Attributes & Claims e clique em Edit

Clique em Unique User Identifier (Name ID)

Altere o atributo conforme exemplo abaixo:

E depois clique em Save
Ainda em Manage Claim, crie uma reinvidicação de grupo e configure com os seguintes atributos:

Selecione Security Groups

Clique em advanced options, navegue até a opção Customize the name of the group claim e preencha com os dados
Name: groupName
Namespace: https://auth.oraclecloud.com/saml/claims
Clique em Save

Faça o download do metadata da Azure para que possa ser importado para o Oracle Cloud

Passo 5: Criando um provedor de identidade externo para Oracle Cloud
Agora volte ao console da Oracle Cloud, navegue novamente até o domínio que irá realizar a federação.
Vá até Security e depois selecione a opção Identity Providers


Clique em Add IdP e selecione a opção Add SAML IdP

Dê um nome e uma descrição (opcional) e clique em Next

Faça o uploado do metadata que coletou anteriormente na aplicação Azure e clique em Next

Altere o mapeamento de atributos conforme a imagem abaixo e clique em Create IdP

Ele irá apresentar todas as configurações de conexão criada, clique em Next

Clique em Active IdP e depois em Finish.

Nota: Durante o processo de configuração do Identity Provider é possível utilizar a função de Test IdP, onde ele irá validar se os atributos existem de ambos os lados.
No artigo nós iremos utilizar o conceito de sincronização de usuários para Oracle Cloud, onde ao aplicar um usuário dentro da aplicação na Azure ele faz um provisionamento federado.
Por esse motivo ignorei a validação do IdP no momento do provisionamento pois ele iria apresentar 2 erros.:
- Não existe usuário atrelado a aplicação na Azure
- Se o usuário estivesse atrelado a aplicação na Azure ele iria validar se o usuário também existia na Cloud no processo de teste e iria retornar um erro.
Passo 6: Criando a sincronização dos usuários e grupos do Azure para Oracle Cloud
No modelo de federação irei fazer com que os usuários que forem atribuídos a aplicação na Azure, que possui o papel de federação com a Oracle sejam sincronizados para o ambiente em Oracle Cloud.
Conforme comentado no início do artigo, isso facilita com que permissões de acesso a usuários sejam aplicadas baseadas na sua estrutura de grupos e usuários atual, possibilitando também que você mantenha seu fluxo de autenticação passando pelo utilizado atualmente.
Para isso, iremos começar a criar uma aplicação na Oracle Cloud que servirá de ponte de conexão com a Azure.
Dentro do seu domínio navegue até Integrated Application, clique em Add application

Selecione a opção: Confidential Application e clique em Launch Workflow

Dê um nome para sua aplicação e uma descrição

Navegue até o final da página e habilite a opção Enforce grants as authorization

Clique em Next
Na próxima tela, habilite a opção Configure this application as a cliente now
Selecione a opção Client credentials

Desça a página e selecione a opção Add app roles e dê a permissão de User Administrator para a aplicação.


Clique em Next
Deixe a opção padrão e clique em Finish

Ative a aplição


Passo 7: Configurando as permissões e sincronização dos usuários.
Após finalizar a criação da aplicação na Oracle Cloud, iremos precisar configurar o provisionamento para que consigamos que os usuários sejam sincronizados para a Oracle de forma federada
Para isso, volte até a Azure e navegue até Provisioning User Accounts

Clique em Get Started

Altere o modo para Automatic

Agora precisamos configurar o Tenant Url e Secret Token, que fica um pouco mais abaixo do modo de provisionamento configurado acima.
Para coletar o tenant url:
O Tenant url é configurado baseado no ID do provedor de identidade, idêntico ao utilizado para configurar o metadata.
https://<idcs-id>.identity.oraclecloud.com/admin/v1
Onde: <idcs-id> é seu idcs-xxxxxxxxxxxxxx
Para gerar o Secret Token
Colete na aplicação criada na Oracle Cloud o Client ID e Client secret

Para gerar a chave compatível com a Azure, precisamos converter a chave.
Para isso, com o Client ID e Client secret coletados, navegue até:
Cole a chave da seguinte forma:
<client-id>:<secret-id>
Mude as opções confome a imagem abaixo, clique em Encode e copie a chave que será gerada

Copie as 2 informações, cole nos campos da Azure e valide a conectividade
Se tudo estiver ok você receberá a notificação de sucesso.

Clique em Save
Ainda em provisioning, precisamos acertar mais 2 configurações finais, uma delas é de extrema importância para garantir que o usuário esteja com a flag “federado” na Oracle, iremos abordar isso durante os testes.
Em provisioning vá em Edit attribute mappings

Primeiro altere o Provisioning Status para On

Agora vamos fazer uma configuração importante em Mappings, vá até mappings e depois em Provision Azure Active Directory Users

Em Attribute Mappings crie um novo atributo. (Add New Mapping)

Configure as informações conforme abaixo

Altere para Constant, colote a Constant Value como True e coloque o Target attribute: urn:ietf:params:scim:schemas:oracle:idcs:extension:user:User:isFederatedUser e clique em OK
Clique em Save

Aproveitaremos que estamos na configuração do atribute mapping e iremos remover campos desnecessários para o mapeamento, muita das vezes erros de sincronização são apresentados devido o formato dos campos da Azure não serem compatíveis com o da Oracle, conforme exemplo abaixo:


No erro acima podemos ver que os usuários não foram sincronizados por problemas no país, isso ocorreu pois na Oracle meu ambiente está em Inglês e o campo de país está com Brasil com Z (Brazil).
Uma forma de resolver isso é remover o campo de mapping de pais das configurações do atributo, você pode selecionar os campos que deseja e deixar somente os necessários.
Deixei somente os necessários, removendo principalmente o país.

Passo 8: Fazendo a associação dos grupos para aplicação Azure para sincronização.
Agora, depois de configurado, iremos fazer a asssociação dos usuários e/ou grupos necessários para serem sincronizados.
Para isso, na aplicação criada na Azure, clique em Users and Groups e depois Add user/group
Faça a associação dos grupos para a aplicação

Com os usuários associados, iremos forçar um primeiro provisionamento para Oracle Cloud, para isso vou até Provisioning e depois Restart Provisioning

A primeira sincronização demora até 40 minutos.
Após alguns minutos os usuários e grupos serão sincronizados


Podemos ver que um dos atributos importantes para federação para garantir que os usuários não realizem o acesso diretamente ao console, sem passar pelo provedor de identidade está configurado corretamente.

Passo 9: Configurando o provedor de identidade para login na Oracle
Agora precisamos habilitar a opção de logon federado, isso é possível se fizermos alguns ajustes para liberar o acesso via console.
Para isso, vamos até Security >IdP Polices e vamos editar a Default Identity Provider Policy

Vá até Edite IdP Rule

Por padrão ela vem sem nenhum provedor de identidade selecionado.
Nesse passo coloque além do Azure que você fez a configuração também a opção de Username pois caso precise realizar acesso local no domínio essa opção é de suma importância.
Só faça essa alteração deixando somente o Azure se você tiver certeza que os mapeamentos e regras de usuário para administração local estiverem 100% configuradas.
Se você remover essa opção, você não terá mais o acesso local e ele irá redirecionar diretamente para a Azure, conforme exemplo abaixo:

Iremos fazer a configuração que nos dará possibilidade de além de logar via console local, também fazer o acesso via Azure
Na edição da IdP Principal iremos colocar os 2 modos de acesso, conforme abaixo.

Com isso, na tela de logon após selecionar o domínio podemos fazer o acesso local ou via Azure, conforme exemplo abaixo:

Validando o acesso via Azure

Validando a negação de acesso com o usuário direto no console, isso acontece pois o usuário é federado e foi configurado nos atributos de mapeamento a opção de federação.

Por ser um usuário federado, mesmo que eu acerte a senha eu não tenho o logon permitido a não ser se eu vier pelo provedor de federação, nesse caso a Azure.
Muito obrigado!