Provisionamento do Usuário do JIT no OAM e no SP
Este artigo discute como adicionar o provisionamento de usuários ao OAM/SP, que permite ao servidor criar um registro de usuário rapidamente durante o SSO de Federação, se o usuário ainda não tiver uma conta.
Durante uma operação SSO de Federação, o OAM/SP valida a resposta SSO de entrada (SAML ou OpenID) e tenta mapeá-la para um registro de usuário LDAP local com base nas informações contidas na resposta SSO (geralmente atributos do usuário):
-
Se o mapeamento retornar um único registro de usuário, a operação será bem-sucedida e uma sessão OAM será criada para esse registro de usuário
-
Se o mapeamento retornar vários registros LDAP, a operação será uma falha não recuperável:
- A configuração do mapeamento está incorreta
- Ou há registros de usuário LDAP inválidos no diretório
-
Se o mapeamento não retornar registros, isso significa que
-
A configuração do mapeamento está incorreta
-
Ou a configuração está correta, mas o usuário não tem um registro no diretório local. Nesse caso, o OAM/SP pode ser configurado para criar automaticamente um registro de usuário LDAP com base nos dados contidos na resposta SSO e garantir que as operações subsequentes de mapeamento de SSO da Federação para esse usuário sejam mapeadas para o mesmo novo registro de usuário LDAP
O OAM/SP valida a resposta do SSO, processa os atributos usando regras definidas no Perfil de Atributo IdP para o parceiro IdP e, se necessário, chama o módulo Provisionamento do Usuário configurado no OAM/SP:
-
O módulo de Provisionamento do Usuário incluído
-
Ou uma implementação personalizada de um módulo de Provisionamento do Usuário
Após a chamada do módulo de Provisionamento do Usuário (padrão ou personalizado), o servidor cria uma sessão para o usuário. As operações de SSO da Federação subsequente para o mesmo usuário resultam no mapeamento de OAM/SP da resposta de SSO para esse registro LDAP recém-criado.
Módulo de Provisionamento de Usuário Incorporado
O módulo de Provisionamento de Usuário incorporado permite que um registro de usuário seja criado no diretório LDAP quando o mapeamento falha:
-
Usando o Armazenamento de Identidades especificado na entrada do parceiro IdP ou o Armazenamento de Identidades do OAM padrão se nenhum for especificado
-
Usando o DN Base do Usuário especificado na entrada do parceiro IdP ou o DN Base do Usuário para o Armazenamento de Identidades usado, se nenhum for especificado
-
Criando um registro de usuário com um
userID
com base em um atributo contido na Resposta SSO SAML/OpenID: -
A configuração do módulo de Provisionamento do Usuário indica qual atributo usar como
userID
(por exemplo, foo) -
O módulo tenta localizar esse atributo na lista de atributos da resposta SSO depois que esses atributos foram processados pelo Perfil de Atributo IdP (por exemplo, o módulo procura o atributo foo na lista de atributos processados da resposta SSO)
-
Se o atributo não estiver na lista de atributos da resposta SSO, o módulo avaliará a regra de mapeamento especificada na entrada Parceiro IdP: se a regra de mapeamento usar o atributo
userID
, ele usará os dados mapeados comouserID
(por exemplo, se a Asserção SAML foi mapeada via NameID para um registro de usuário LDAP usando o atributo LDAP foo, o módulo usará o valor NameID comouserID
) -
Ou a configuração do módulo de Provisionamento do Usuário não indica qual atributo usar como
userID
ou se o atributouserID
não puder ser determinado após o fluxo acima, o módulo procurará a configuração do Armazenamento de Identidades para determinar o atributo userID (por exemplo, uid) e seguirá o processo listado acima -
O módulo tenta localizar esse atributo na lista de atributos da resposta SSO depois que esses atributos foram processados pelo Perfil de Atributo IdP (por exemplo, o módulo procura o atributo uid na lista de atributos processados da resposta SSO)
-
Se o atributo não estiver na lista de atributos da resposta SSO, o módulo avaliará a regra de mapeamento especificada na entrada Parceiro IdP. Se a regra de mapeamento usar o atributo
userID
, ela usará os dados mapeados comouserID
(por exemplo, se a Asserção SAML tiver sido mapeada via NameID para um registro de usuário LDAP usando o atributo LDAP uid, o módulo usará o valor NameID comouserID
) -
Se o atributo
userID
ainda não puder ser determinado (porque uid não está na lista de atributos enviados pelo IdP, por exemplo), o módulo tentará usar o valor NameID como ouserID
-
Se estiver presente, ele o usará
-
Caso contrário, um erro será gerado, pois o módulo Provisionamento do Usuário não pode selecionar um valor
userID
.
Observação Importante: O algoritmo acima é um tanto complexo, mas permite um administrador
-
Para testar o provisionamento de usuários em um POC sem precisar executar várias etapas de configuração, bem como configurar o módulo de provisionamento de usuários de acordo com as necessidades do administrador.
-
Depois que o registro do usuário for criado, o módulo Provisionamento do Usuário definirá atributos no registro do usuário com base em:
-
A lista de atributos que devem ser definidos: Isso é indicado pela configuração do módulo definida pelo administrador, que dita a lista de atributos da resposta SSO para definir
-
Os atributos listados na regra de mapeamento: os atributos listados na regra de mapeamento da entrada Parceiro IdP são definidos automaticamente no registro do usuário LDAP, para garantir que o mapeamento funcione na próxima vez que o usuário com uma resposta SSO idêntica executar SSO de Federação com OAM/SP.
Ativando o Provisionamento de Usuários no OAM/SP
Execute as seguintes etapas para ativar/desativar o Provisionamento do Usuário no OAM/SP:
-
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()
-
Atualize a propriedade
userprovisioningenabled
para: -
Ativar Provisionamento do Usuário no OAM/SP:
putBooleanProperty("/fedserverconNg /userprovisioningenabled", "true")
-
Desativar Provisionamento do Usuário no OAM/SP:
putBooleanProperty("/fedserverconNg /userprovisioningenabled", "false")
- Sair do ambiente WLST: exit()
Configuração de teste
Use a mesma configuração da Federação SAML 2.0 que foi configurada anteriormente, em que:
-
O OAM atua como um Provedor de Serviços
-
O IdP (
AcmeIdP
) envia uma Asserção SAML com-
NameID definido como
userID
-
Atributos enviados:
-
email
definido como endereço de e-mail do usuário -
fname
definido comofirst name
do usuário -
surname
definido comolast name
do usuário -
title
definido comolast job title
do usuário
-
-
-
OAM/SP configurado com um Perfil de Atributo IdP para
-
Mapeie
fname
paragivenname
-
Mapeie
surname
parasn
-
Mapeie
email
paramail
-
A alice do usuário é usada em IdP, enquanto não existe conta do usuário para a alice em OAM/SP:
userID
: aliceemail
: alice@oracle.comfirst name
: Alicelast name
: Appletontitle
: gerente
-
Durante um SSO de Federação SAML 2.0 com o parceiro IdP remoto, a Resposta SAML XML com a Asserção enviada de volta pelo IdP seria:
<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://acme.com</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="title" ...>
<saml:AttributeValue
...>manager</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>
O resultado do processamento da Asserção SAML 2.0 por OAM/SP mostra os atributos transformados, bem como o NameID
Descrição da ilustração Operation_Result.jpg
Testes
Os casos de teste mostram configurações diferentes para o módulo Provisionamento do Usuário, com o elemento do usuário não existente no OAM/SP antes de cada teste:
Caso de Uso 1:
-
Nenhuma configuração do módulo de Provisionamento do Usuário
-
A regra de mapeamento é feita via NameID para o atributo LDAP
uid
Caso de Uso 2:
-
Nenhuma configuração do módulo de Provisionamento do Usuário
-
A regra de mapeamento é feita por e-mail do Atributo SAML para o atributo de e-mail LDAP
Caso de Uso 3:
-
A regra de mapeamento é feita via NameID para o atributo LDAP
uid
-
Módulo de Provisionamento do Usuário configurado para definir
givenname
,sn
e atributos de e-mail
Caso de Uso 4:
-
A regra de mapeamento é feita por e-mail do Atributo SAML para o atributo de e-mail LDAP
-
Módulo de Provisionamento do Usuário configurado para usar
givenname
como ouserID
Caso de Uso 5:
-
A regra de mapeamento é feita por e-mail do Atributo SAML para o atributo de e-mail LDAP
-
Módulo de Provisionamento do Usuário configurado para Usar NameID como o
userID
-
Definir atributos
givenname
esn
Após cada operação SSO da Federação, imprima o registro do usuário LDAP do usuário criado e depois exclui esse registro antes do próximo teste.
Observação importante: O Perfil de Atributo IdP deve mapear os nomes de Atributo SAML de entrada para os nomes de atributo usados no diretório LDAP. É por isso que em nosso Perfil de Atributo IdP de teste,
fname
é mapeado paragivenname
. O plug-in incorporado Provisionamento do usuário obtém os nomes de atributo da lista de atributos processados e os adiciona como estão ao registro do usuário LDAP (se configurado para isso): não há mapeamento de nome de atributo adicional.
Caso de Uso 1
Nesse caso de uso, a configuração é tal que:
-
Nenhuma configuração do módulo de Provisionamento do Usuário
-
A regra de mapeamento é feita via NameID para o atributo LDAP
uid
Após o SSO da Federação, o registro do usuário para o alice foi criado:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: alice
cn: alice
sn: alice
O registro do usuário LDAP tem as seguintes características:
-
UserID
:-
Não havia configuração do módulo de Provisionamento do Usuário
-
O módulo Provisionamento do Usuário marcou se o Armazenamento de Identidades do Usuário
UserID
(uid
no teste) era um atributo enviado pelo IdP: esse não era o caso -
O módulo Provisionamento do Usuário usou NameID como o
userID
(que é armazenado no atributo LDAPuid
):uid
foi definido como alice
-
-
Atributos extras:
-
O módulo Provisionamento do Usuário define o(s) atributo(s) que foi(ram) usado(s) na regra de mapeamento: NameID foi mapeado para
uid
. Este atributo já foi definido (comouserID
). -
cn
esn
são atributos obrigatórios de acordo com o esquema LDAP usado neste teste e, se não for especificado explicitamente,userID
será usado para preencher esses atributos
-
Caso de Uso 2
Nesse caso de uso, a configuração é tal que:
-
Nenhuma configuração do módulo de Provisionamento do Usuário
-
A regra de mapeamento é feita por e-mail do Atributo SAML para o atributo de e-mail LDAP
Após o SSO da Federação, o registro do usuário para o alice foi criado:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: alice
cn: alice
sn: alice
O registro do usuário LDAP tem as seguintes características:
-
UserID
:-
Não havia configuração do módulo de Provisionamento do Usuário
-
O módulo Provisionamento do Usuário marcou se o Armazenamento de Identidades do Usuário
UserID
(uid
no teste) era um atributo enviado pelo IdP: esse não era o caso -
O módulo Provisionamento do Usuário usou NameID como o
userID
(que é armazenado no atributo LDAPuid
):uid
foi definido como alice
-
-
Atributos extras:
-
O módulo de Provisionamento do Usuário define o(s) atributo(s) que foi(ram) usado(s) na regra de mapeamento: o atributo de e-mail na asserção SAML foi mapeado para e-mail. O atributo de e-mail foi definido como
alice@oracle.com
-
cn
esn
são atributos obrigatórios de acordo com o esquema LDAP usado neste teste e, se não for especificado explicitamente,userID
será usado para preencher esses atributos
-
Caso de Uso 3
Nesse caso de uso, a configuração é tal que:
-
A regra de mapeamento é feita via NameID para o atributo LDAP
uid
-
Módulo de Provisionamento do Usuário configurado para definir os atributos
givenname
,sn
email
.
Para isso, faça o seguinte:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
-
Navegue até Gerenciador de Acesso, Plug-ins
-
Selecione o FedUserProvisioningPlugin
-
No campo KEY_USER_RECORD_ATTRIBUTE_LIST, digite
givenname
,sn
e envie um e-mail como uma lista separada por vírgulas sem espaços:givenname
,sn
,mail
-
Clique em Salvar
Descrição da ilustração Plug_ins_Screen.jpg
Após o SSO da Federação, o registro do usuário para o alice é criado:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
givenName: Alice
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: alice
cn: alice
sn: alice
sn: Appleton
O registro do usuário LDAP tem as seguintes características:
-
UserID
:-
Não havia configuração do módulo de Provisionamento do Usuário para
userID
-
O módulo Provisionamento do Usuário marcou se o Armazenamento de Identidades do Usuário
UserID
(uid
no teste) era um atributo enviado pelo IdP: esse não era o caso -
O módulo Provisionamento do Usuário usou NameID como o
userID
(que é armazenado no atributo LDAPuid
):uid
foi definido como alice
-
-
Atributos extras:
-
O módulo Provisionamento do Usuário define o(s) atributo(s) que foi(ram) usado(s) na regra de mapeamento: NameID foi mapeado para
uid
. Este atributo já foi definido (comouserID
). -
O módulo Provisionamento do Usuário recuperou os atributos
givenname
,sn
e de e-mail da lista de atributos processados e os definiu no registro do usuário LDAP. -
cn
é um atributo obrigatório de acordo com o esquema LDAP usado neste teste e, se não for especificado explicitamente,userID
será usado para preencher esse atributo
-
Caso de Uso 4
Nesse caso de uso, a configuração é tal que:
-
A regra de mapeamento é feita por e-mail do Atributo SAML para o atributo de e-mail LDAP
-
Módulo de Provisionamento do Usuário configurado para usar
givenname
como ouserID
Para isso, faça o seguinte:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
-
Navegue até Gerenciador de Acesso, Plug-ins
-
Selecione o FedUserProvisioningPlugin
-
Defina o campo
KEY_USER_RECORD_ATTRIBUTE_LIST
como valor em branco -
Defina o campo
KEY_USERID_ATTRIBUTE_NAME
comogivenname
-
Clique em Salvar
Descrição da ilustração Access_mngt.jpg
Após o SSO da Federação, o registro do usuário para o alice é criado:
dn: uid=Alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: Alice
cn: Alice
sn: Alice
O registro do usuário LDAP tem as seguintes características:
-
UserID
:- O módulo Provisionamento do Usuário foi configurado para usar
givenname
comouserID
- O módulo Provisionamento do Usuário foi configurado para usar
-
Atributos extras:
-
O módulo de Provisionamento do Usuário define o(s) atributo(s) que foi(ram) usado(s) na regra de mapeamento: o atributo de e-mail na asserção SAML foi mapeado para e-mail. O atributo de e-mail foi definido como
alice@oracle.com
. -
cn
esn
são atributos obrigatórios de acordo com o esquema LDAP usado neste teste e, se não for especificado explicitamente,userID
será usado para preencher esses atributos
-
Caso de Uso 5
Nesse caso de uso, a configuração é tal que:
-
A regra de mapeamento é feita por e-mail do Atributo SAML para o atributo de e-mail LDAP
-
Módulo de Provisionamento do Usuário configurado para
-
Use NameID como
userID
-
Definir atributos
givenname
esn
-
Para isso, faça o seguinte:
-
Vá para a Console de Administração do OAM:
http(s)://oam-admin-host:oam-adminport/oamconsole
-
Navegue até Gerenciador de Acesso, Plug-ins
-
Selecione o FedUserProvisioningPlugin
-
Defina o campo
KEY_USER_RECORD_ATTRIBUTE_LIST
como (lista separada por vírgulas sem espaços):givenname
,sn
-
Defina o campo
KEY_USERID_ATTRIBUTE_NAME
comofed.nameidvalue
, que é o nome do atributo para o valor NameID -
Clique em Salvar
Descrição da ilustração Access_mngt_nameID_Value.jpg
Após o SSO da Federação, o registro do usuário para o alice é criado:
dn: uid=alice,ou=users,dc=us,dc=oracle,dc=com
mail: alice@oracle.com
givenName: Alice
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
uid: alice
cn: alice
sn: alice
sn: Appleton
O registro do usuário LDAP tem as seguintes características:
-
UserID:
- O módulo Provisionamento do Usuário foi configurado para usar o valor NameID (
fed.nameidvalue
) como ouserID
- O módulo Provisionamento do Usuário foi configurado para usar o valor NameID (
-
Atributos extras:
-
O módulo de Provisionamento do Usuário define o(s) atributo(s) que foi(ram) usado(s) na regra de mapeamento: o atributo de e-mail na asserção SAML foi mapeado para e-mail. O atributo de e-mail foi definido como alice@oracle.com.
-
O módulo Provisionamento do Usuário recuperou os atributos
givenname
esn
da lista de atributos processados e os definiu no registro do usuário LDAP. -
cn
é um atributo obrigatório de acordo com o esquema LDAP usado neste teste e, se não for especificado explicitamente,userID
será usado para preencher esse atributo
-
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.
JIT User Provisioning in OAM and SP
F61369-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.