Processando Atributos de Entrada com OAM e SP
Quando o OAM atua como um Provedor de Serviços, ele:
-
Valida a resposta de SSO recebida de IdP
-
Mapeia a resposta SSO para um registro de usuário LDAP
-
Extrai o identificador do usuário e os atributos opcionais contidos na resposta SSO e os armazena na sessão do OAM.
Esses atributos armazenados na sessão do OAM podem ser usados posteriormente:
-
Em Políticas de Autorização, nas quais as condições/regras avaliam os atributos na sessão do OAM
-
Como Respostas de Política para fornecer esses atributos para aplicativos Web protegidos pelo WebGate/OAM, como Cabeçalhos ou cookies HTTP
Este artigo discute como o OAM atuando como um Provedor de Serviços pode ser configurado para:
-
Processe atributos contidos em uma Asserção SAML recebida ou Resposta de SSO OpenID para mapear os nomes dos atributos de entrada para nomes locais.
-
Atributos de solicitação do OP por meio do protocolo OpenID (o SAML não fornece uma forma de SPs no runtime solicitarem atributos do IdP durante uma operação SSO de Federação)
Visão Geral
Mapeamento de Nome do Atributo
O principal motivo para o processamento dos atributos de entrada é mapear os nomes dos atributos da resposta SSO para nomes locais, reconhecidos por outros componentes locais. Esse recurso é útil em implantações de Federação, porque parceiros remotos diferentes às vezes usam nomes diferentes para fazer referência ao mesmo atributo.
Por exemplo, vamos assumir o seguinte caso de uso:
-
IdP1 envia o nome do usuário como
firstname
na Asserção SAML -
IdP2 envia o nome do usuário como
f_name
na Asserção SAML -
Os componentes locais (aplicativos protegidos, OAM...) esperam fazer referência ao nome do usuário como
first_name
emruntimeBy
processando os atributos de entrada, o OAM/SP pode mapear:
Processando os atributos de entrada, o OAM/SP pode mapear:
-
firstname
afirst_name
para IdP1 -
f_name
afirst_name
para IdP2
Isso permite que o consumidor dos dados enviados nas mensagens SAML/OpenID faça referência ao nome do usuário somente pelo identificador first_name
:
-
Uma condição de política de autorização só fará referência ao nome da sessão do OAM usando
first_name
-
Uma resposta de política faz referência ao nome da sessão do OAM usando
first_name
-
Os objetos de política não sabem
firstname
ouf_name
usados pelo IdPs remoto
Atributos de Solicitação
O protocolo OpenID 2.0 define uma forma de parceiros SP/RP solicitarem atributos do IdP/OP no runtime.
O OAM/SP fornece uma maneira de solicitar atributos do OP OpenID
Perfis de Atributos
Anteriormente, explicamos quais Perfis de Atributos do Ponto de Serviço estavam em IdP e como usá-los:
-
Eles definem quais atributos devem ser enviados aos parceiros SP
-
Como os atributos devem ser nomeados
-
Como definir os valores desses atributos
-
Se esses atributos devem ser sempre enviados ou somente quando solicitados
No OAM/SP, há um conceito semelhante para solicitar atributos e mapear nomes de atributos. O Perfil do Atributo IdP é um conjunto de regras que indica para OAM/SP:
-
Quais atributos devem ser solicitados no runtime (somente OpenID 2.0)
-
Como os nomes dos atributos contidos nas mensagens SAML/OpenID devem ser mapeados localmente
Exemplos
O restante do artigo descreve como configurar o OAM/SP para:
-
Mapear nomes de atributo de entrada para nomes locais, por meio da Console de Administração do OAM, para um SAML 2.0 remoto IdP
-
Solicite atributos no runtime e mapeie nomes de atributos de entrada para nomes locais, por meio dos comandos WLST do OAM, para um OP remoto OpenID 2.0
Use o Aplicativo Testar SP incorporado ao OAM/SP para ver como os atributos da Resposta SSO SAML/OpenID são processados.
Mapeando Atributos de Entrada
Esta seção mostra como configurar o OAM/SP para processar atributos SAML 2.0 de entrada por meio da console de administração. O exemplo é baseado em uma Federação com um parceiro IdP SAML 2.0 remoto identificado como AcmeIdP
no OAM/SP:
-
O IdP está enviando Não Especificado como formato NameID
-
O valor NameID contém o ID do usuário
-
A Asserção contém os seguintes Atributos SAML
-
O nome do usuário, identificado por
fname
-
O sobrenome do usuário, identificado por
surname
-
O endereço de e-mail do usuário, identificado por
email
-
O OAM/SP será configurado primeiro para não mapear nenhum nome de atributo e, em seguida, será
-
configurado para Mapear
fname
parafirstname
-
Mapeie
surname
paralastname
-
Deixar um email como está
Para isso, crie um novo Perfil de Atributo IdP e designe-o a AcmeIdP.
Observação: Se novos parceiros IdP forem integrados posteriormente e estiverem enviando os atributos com os mesmos nomes, será possível designar o Perfil de Atributo IdP existente a esses novos parceiros.
Criando o Parceiro sem Regras de Mapeamento
Antes de configurar o OAM/SP para mapear atributos de entrada para nomes locais, execute um SSO de Federação de teste para ver como os atributos se parecem inalterados pelo OAM/SP.
Nesse caso, o parceiro IdP está vinculado a um Perfil de Atributo IdP vazio e o OAM/SP não modificará os nomes dos atributos de entrada contidos na resposta do SSO.
O parceiro IdP está configurado de forma semelhante (com idp-attribute-profile
sendo o Perfil de Atributo IdP padrão, que em nosso teste está vazio):
Descrição da ilustração Create_ID_Partner.jpg
Ao usar o aplicativo Testar SP para executar uma operação SSO de Federação com AcmeIdP
, o resultado da operação mostra que, para o elemento do usuário, o seguinte foi enviado na Asserção:
-
NameID definido como formato de endereço de e-mail e valor definido como alice
-
Atributos enviados:
-
email
definido como<alice@oracle.com>
-
fname
definido como Alice -
surname
definido como Appleton
-
A Resposta SAML XML com a Asserção enviada de volta pelo IdP é:
<samlp:Response ..>
<saml:Issuer ...>http://acme.com/idp</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ...>
<saml:Issuer ...>http://adc00peq.us.oracle.com:7499/fed/idp</saml:Issuer>
<dsig:Signature ...>
...
</dsig:Signature>
<saml:Subject>
<saml:NameID ...>alice</saml:NameID>
...
</saml:Subject> <saml:Conditions ...>
...
</saml:Conditions> <saml:AuthnStatement ...>
...
</saml:AuthnStatement>
<saml:AttributeStatement ...>
<saml:Attribute Name="email" ...>
<saml:AttributeValue ...>alice@oracle.com</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="surname" ...>
<saml:AttributeValue ...>Appleton</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="fname" ...>
<saml:AttributeValue ...>Alice</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
A página Testar SP mostra como o OAM/SP processou os atributos. Como não há regras de mapeamento, os nomes dos atributos foram deixados inalterados.
Descrição da ilustração Federation_SSO.jpg
Criando Regras de Mapeamento
Para criar um novo Perfil de Atributo IdP, execute as seguintes etapas:
-
Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-admin-port/oamconsole
-
Navegue até Federação de Identidades, Administração do Provedor de Serviços
-
Clique na guia Perfis de Atributo do Provedor de Identidades
-
Clique no botão Criar Perfil de Atributo IdP
Descrição da ilustração Create_Mapping_Rules.jpg
Configure as informações básicas sobre o novo Perfil do Atributo IdP:
-
Nome
-
Digite uma descrição, se necessário
Observação sobre Ignorar Atributos Não Mapeados: Se marcada, o OAM/SP descarta todos os atributos na resposta SAML/OpenID não definidos neste Perfil de Atributo.
Observação sobre o Perfil de Atributo de Parceiro IdP Padrão: se marcada, esse será o Perfil de Atributo IdP pré-atribuído quando um novo Parceiro IdP for criado por meio da IU
- Se marcada, será o Perfil de Atributo IdP usado para parceiros IdP que não têm um Perfil de Atributo IdP designado (por exemplo, aqueles criados por comandos WLST)
Descrição da ilustração Create_Attr_Profile.jpg
Adicione os mapeamentos necessários. Execute as seguintes operações para adicionar o mapeamento firstname
:
-
Clique no botão Adicionar Entrada na tabela Mapeamento de Atributos
-
Configure o atributo de e-mail:
-
Nome do Atributo da Mensagem:
fname
-
Nome do Atributo de Sessão de OAM:
firstname
-
Solicitação do parceiro: marcada (não relevante para SAML)
-
Execute as seguintes operações para adicionar o mapeamento de sobrenome:
-
Clique no botão Adicionar Entrada na tabela Mapeamento de Atributos
-
Configure o atributo Nome:
-
Nome do Atributo da Mensagem:
surname
-
Nome do Atributo de Sessão de OAM:
lastname
-
Solicitação do parceiro: marcada (não relevante para SAML)
-
O Perfil do Atributo IdP agora foi configurado para mapear os atributos fname e surname para nomes locais de parceiros IdP vinculados a esse perfil.
Observação: Não precisamos criar um mapeamento para e-mail, pois
-
Não queremos alterar o nome do atributo
-
Deixamos a opção Ignorar Atributo Não Mapeado desmarcada. Se essa caixa tiver sido marcada, precisamos criar um mapeamento para email.
Descrição da ilustração IdP_Attr_Profile.jpg
O Parceiro IdP deve ser atualizado para usar o novo Perfil de Atributo IdP:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-admin-port/oamconsole
-
Navegue até Federação de Identidades, Administração do Provedor de Serviços
-
Clique em Pesquisar Parceiros do Provedor de Identidades
-
Abra o Parceiro IdP desejado
-
Na seção Mapeamento do Atributo, selecione o Perfil do Atributo IdP recém-criado como o Perfil do Atributo
-
Clique em Salvar
Descrição da ilustração Update_IdP_Attr_Profile.jpg
Teste
Estamos usando o aplicativo Testar SP novamente para executar uma operação SSO de Federação com o OAM usando o novo Perfil de Atributo IdP.
A Resposta SAML XML com a Asserção enviada de volta pelo IdP ainda é a mesma:
<samlp:Response ..>
<saml:Issuer ...>http://acme.com/idp</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ...>
<saml:Issuer ...>http://adc00peq.us.oracle.com:7499/fed/idp</saml:Issuer>
<dsig:Signature ...>
...
</dsig:Signature>
<saml:Subject>
<saml:NameID ...>alice</saml:NameID>
...
</saml:Subject> <saml:Conditions ...>
...
</saml:Conditions> <saml:AuthnStatement ...>
...
</saml:AuthnStatement>
<saml:AttributeStatement ...>
<saml:Attribute Name="email" ...>
<saml:AttributeValue ...alice@oracle.com</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="surname" ...>
<saml:AttributeValue ...>Appleton</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="fname" ...>
<saml:AttributeValue ...>Alice</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
A página Testar SP mostra resultados diferentes, pois o OAM/SP processou os atributos de acordo com as regras em que:
-
email
não foi alterado -
fname
foi mapeado parafirstname
-
surname
foi mapeado paralastname
Descrição da ilustração Test_Federation_SSO.jpg
Atributos de Solicitação
Esta seção mostra como configurar o OAM/SP para solicitar atributos de um IdP no runtime usando os comandos WLST do OAM. O exemplo é baseado em uma Federação com um parceiro IdP/OP remoto OpenID 2.0 e o OAM/SP está configurado para:
Solicite os seguintes atributos:
-
Endereço de e-mail com o nome do atributo OpenID definido como
http://axschema.org/contact/email
e o nome local definido comoemail
-
UserID
com o nome do atributo OpenID definido comohttp://schemas.openid.net/ax/api/user_id
e o nome local definido comouserid
Para isso, crie um novo Perfil de Atributo IdP e designe-o a acmeOP
. Posteriormente, se novos parceiros do OP estiverem integrados, será possível designar o Perfil de Atributo IdP existente para que o OAM/SP solicite os mesmos atributos desses novos IdPs.
Suponha que você já esteja no ambiente WLST e conectado usando:
-
Informe o ambiente WLST executando:
$IAM_ORACLE_HOME/common/bin/wlst.sh
-
Conecte-se ao servidor de Administração WLS:
connect()
-
Navegue até a ramificação Runtime do Domínio:
domainRuntime()
Etapas
Para configurar o novo Perfil de Atributo IdP, execute as seguintes etapas:
-
Criar um novo Perfil de Atributo SP
createIdPPartnerAttributeProfile("openIDAttrProfile")
-
Especifique o nome do novo Perfil de Atributo IdP
-
Crie o mapeamento para o atributo de e-mail e solicite-o no runtime
setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://axschema.org/contact/email", "email", requestFromIdP="true")
-
Especifique o nome do Perfil de Atributo IdP a ser modificado
-
Especifique o nome do atributo OpenID para
http://axschema.org/contact/email
-
Especifique o nome local do atributo:
email
-
Indique que o OAM/SP deve solicitá-lo no runtime:
requestFromIdP="true"
-
Crie o mapeamento para o atributo de e-mail e solicite-o no runtime
setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://schemas.openid.net/ax/api/user_id", "userid", requestFromIdP="true")
-
Especifique o nome do Perfil de Atributo IdP a ser modificado
-
Especifique o nome do atributo OpenID para
http://schemas.openid.net/ax/api/user_id
-
Especifique o nome local do atributo:
userid
-
Indique que o OAM/SP deve solicitá-lo no runtime:
requestFromIdP="true"
Para atualizar o parceiro IdP para usar esse Perfil de Atributo IdP, execute:
-
O comando
setIdPPartnerAttributeProfile
:setIdPPartnerAttributeProfile("acmeOP", "openIDAttrProfile")
Especifique o nome do parceiro IdP -
Especifique o nome do Perfil de Atributo IdP a ser usado
OpenID Resposta
A Resposta OpenID gerada pelo IdP remoto para alice/alice@oracle.com
será:
https://acme.com/oam/server/fed/sp/sso?reEd=id-TEMxjNN7SEdYWowvioAuTAx7UPuKAUsj-NPWLSUf&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20&openid.claimed_id=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20%3Fid%3Did-YxEgHp7b49OrDy9dJP4BWrwbNUQ-&openid.identity=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20%3Fid%3Did-YxEgHp7b49OrDy9dJP4BWrwbNUQ-&openid.return_to=http%3A%2F%2Fadc00pcc.us.oracle.com%3A23002%2Foam%2Fserver%2Ffed%2Fsp%2Fsso%3FreEd%3DidTEMxjNN7SEdYWowvioAuTAx7UPuKAUsj-NPWLSUf&openid.response_nonce=2014-03-07T22%3A22%3A24Zid-8PQjU4IXHX6inl35bHEFws1Yv-8-&openid.assoc_handle=id-Iek3nx7-n2LldOPeooa4auWKC4-&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ax.mode=fetch_response&openid.ax.type.attr0=http%3A%2F%2Fschemas.openid.net%2Fax%2Fapi%2Fuser_id&openid.ax.value.attr0=alice&openid.ax.type.attr1=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ax.value.attr1=alice%40oracle.com&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ax%2Cax.mode%2Cax.type.attr0%2Caopenid.sig=JBPLV5nDISw4qeWv8Yv4iPGJ6Y8%3D
Os parâmetros de consulta de URL decodificados relacionados aos atributos são:
-
Nome do atributo no 0:
openid.ax.type.attr0= http://schemas.openid.net/ax/api/user_id
-
Valor para o atributo no 0:
openid.ax.value.attr0=alice
-
Nome do atributo no 1:
openid.ax.type.attr1= http://axschema.org/contact/email
-
Valor para o atributo no 1:
openid.ax.value.attr1=alice@oracle.com
A página Testar SP mostra resultados diferentes, pois o OAM/SP processou os atributos de acordo com as regras em que:
-
http://schemas.openid.net/ax/api/user_id
foi mapeado parauserid
-
http://axschema.org/contact/email
foi mapeado para e-mail
Descrição da ilustração OpenID_Response.jpg
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.
Processing Incoming Attributes with OAM and SP
F61883-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.