Determinando qual IdP usar para SSO de Federação

Como Provedor de Serviços, ao acionar uma operação SSO de Federação, às vezes o principal desafio reside em determinar qual IdP será selecionado para o fluxo SSO, nos casos em que o SP tenha acordos de confiança com vários IdPs.

O OAM/SP tem um mecanismo diferente para selecionar o IdP para a operação SSO da Federação, incluindo:

A seção a seguir explora cada mecanismo detalhadamente.

Esquema de Federação do OAM

O OAM fornece ferramentas de administração para criar um Esquema de Autenticação do OAM que será:

Quando um recurso é protegido com esse tipo de Esquema de Autenticação e, se um usuário não autenticado solicitar acesso, um fluxo de SSO de Federação será acionado com o Parceiro IdP ao qual o esquema está vinculado.

A criação desses esquemas permite que um administrador tenha recursos específicos que resultam em um SSO de Federação com Parceiros IdP específicos.

Observação: se o usuário já tiver sido autenticado com uma sessão válida que tenha um nível suficientemente forte, o acesso a recursos protegidos por outros Esquemas de Federação poderá não resultar em um novo SSO de Federação.

Console de Administração do OAM

Para criar um Esquema de Autenticação do OAM para um Parceiro IdP específico, execute as seguintes etapas:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue até Federação de Identidades, Administração do Provedor de Serviços.

  3. Abra o Parceiro IdP para o qual deseja criar o esquema.

  4. Clique no botão Criar Módulo e Esquema de Autenticação.

Descrição da ilustração OAM_Admin_Console.jpg

A Console de Administração do OAM cria:

Descrição da ilustração OAM_Admin_Console_with_message.jpg

Comando WLST

Para criar um Esquema de Autenticação do OAM para um Parceiro IdP específico usando o comando WLST createAuthnSchemeAndModule() do OAM, execute as seguintes etapas:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. Execute o comando createAuthnSchemeAndModule(): Especifique o Nome do Parceiro IdP. Um exemplo é: createAuthnSchemeAndModule("AcmeIdP").

  5. Saia do ambiente WLST: exit().

Observação: para excluir esse Esquema/Módulo de Federação, execute o comando WLST deleteAuthnSchemeAndModule() do OAM.

Protegendo um Recurso

Para proteger um recurso com um <PARTNER_NAME>FederationScheme que aciona o SSO da Federação com esse Parceiro IdP específico, execute as seguintes etapas:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue até Gerenciador de Acesso, Domínio de Aplicativo.

  3. Clique em Pesquisar e abra o Domínio de Aplicativos que contém os recursos que você deseja proteger com o novo FederationScheme.

  4. Clique na guia Políticas de Autenticação.

  5. Crie uma nova Política de Autenticação ou edite uma existente.

  6. Selecione o novo FederationScheme.

  7. Clique em Aplicar.

Descrição da ilustração Authentication_Policies.jpg

Após fazer essa alteração, sempre que um usuário solicitar recursos protegidos por esta Política de Autenticação e o usuário precisar ser autenticado, um SSO de Federação será executado com o Parceiro IdP específico (AcmeIdP neste exemplo).

Plug de Autenticação OAM Personalizado

Visão Geral

Um Módulo de Autenticação do OAM é:

O Módulo de Autenticação de Federação OOTB, chamado FederationPlugin, é feito de dois plug-ins:

A orquestração pode ser vista por:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue até Gerenciador de Acesso, Módulos de Autenticação.

  3. Abra FederationScheme.

  4. Clique na guia de etapas para ver os plug-ins.

  5. Clique na guia Orquestração de Etapas para ver a orquestração entre os diferentes plug-ins e o plug-in usado para iniciar a operação.

Descrição da ilustração Steps_Orchestration.jpg

Implementando um Plugin Personalizado

Um plug-in personalizado pode ser implementado com base na estrutura do Plug-in de Autenticação Personalizado do OAM que determina o IdP a ser usado para uma operação SSO de Federação específica:

O código para salvar o nome do Parceiro IdP no AuthenticationContext é semelhante a:

 public ExecutionStatus
 process(AuthenticationContext context)
 {
    ...
    CredentialParam param = new CredentialParam();
    param.setName("KEY_FEDIDP");
    param.setType("string");
    param.setValue(IDP_PARTNER_NAME);

 context.getCredential().addCredentialParam("KEY_FEDIDP", param);
    ...
    return ExecutionStatus.SUCCESS;
 }

Depois que o plug-in é implementado:

Por fim, você pode proteger recursos usando o novo Esquema do OAM, que usa o Módulo/Plug-ins de Autenticação personalizados para executar a operação SSO de Federação.

Observação: veja mais informações sobre plug-ins personalizados no guia do Desenvolvedor do OAM.

IdP Serviço de Descoberta

Visão Geral

A especificação SAML 2.0 "Identity Provider Discovery Service Protocol and Profile" define uma forma de SPs SAML 2.0 delegarem a seleção IdP a um serviço remoto.

O fluxo é descrito na especificação SAML 2.0 e é feito das seguintes etapas:

Configuração do OAM/SP

Você pode configurar o OAM/SP para usar qualquer Serviço de Descoberta IdP remoto. O OAM inclui um IdP Discovery Service simples que é usado e permite que o usuário escolha com qual IdP executar o SSO de Federação. Para configurar o OAM/SP para usar um Serviço de Descoberta IdP, execute as seguintes etapas:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. Ative/desative o OAM/SP para usar um Serviço de Descoberta IdP: putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true/false").

    1. Para ativar: putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "true")

    2. Para desativar putBooleanProperty("/spglobal /idpdiscoveryserviceenabled", "false")

  5. Defina a localização do Serviço de Descoberta IdP remoto: putStringProperty("/spglobal /idpdiscoveryserviceurl", "URL").

  6. Substitua o URL pelo local do serviço.

    1. Para o Serviço de Descoberta IdP simples empacotado, substitua o URL por /oamfed/discovery.jsp (este é o valor OOTB para esta propriedade): putStringProperty("/spglobal /idpdiscoveryserviceurl", "/oamfed/discovery.jsp").

    2. Para um serviço remoto, um exemplo é: putStringProperty("/spglobal /idpdiscoveryserviceurl", "http://sp.com/discovery").

  7. Saia do ambiente WLST: exit().

Para usar o Serviço de Descoberta IdP simples empacotado, execute as seguintes etapas:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. Ative/desative o Serviço de Descoberta IdP empacotado: putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true/false").

    1. Para ativar: putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "true").

    2. Para desativar putBooleanProperty("/spglobal /idpdiscoveryservicepageenabled", "false").

  5. Saia do ambiente WLST: exit().

Teste

Em meu ambiente de teste, tenho três IdPs:

O OAM/SP está configurado para:

Se o usuário solicitar acesso a um recurso protegido pelo FederationScheme, o Serviço de Descoberta IdP simples empacotado solicitará que o usuário selecione um IdP para executar SSO de Federação com:

Descrição da ilustração Access_Manager.jpg

Provedor de Identidade SSO Padrão

Se nenhum dos métodos anteriores for usado para indicar qual IdP será usado para SSO da Federação, o OAM/SP usará o Parceiro IdP que foi marcado como Provedor de Identidades SSO Padrão.

Console de Administração do OAM

Para indicar que um Parceiro IdP específico deve ser o Provedor de Identidades SSO Padrão por meio da Console de Administração do OAM, execute as seguintes etapas:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.

  2. Navegue até Federação de Identidades, Administração do Provedor de Serviços.

  3. Abra o Parceiro IdP.

  4. Marque a caixa Parceiro do Provedor de Identidades Padrão.

  5. Clique em Aplicar.

Descrição da ilustração Default_Identity_Provider.jpg

Comando WLST

Para indicar um Parceiro IdP específico deve ser o Provedor de Identidades SSO Padrão usando o comando WLST setDefaultSSOIdPPartner() do OAM, execute as seguintes etapas:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. Execute o comando setDefaultSSOIdPPartner().

  5. Especifique o Nome do Parceiro IdP. Um exemplo é: setDefaultSSOIdPPartner("AcmeIdP").

  6. Saia do ambiente WLST: exit().

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.