Configurando o Provisionamento JIT SAML
O Provisionamento Just-In-Time (JIT) SAML automatiza a criação de conta de usuário quando o usuário tenta pela primeira vez executar SSO e o usuário ainda não existe no domínio de identidades. Além da criação automática de usuário, o Provisionamento JIT SAML permite conceder e revogar associações de grupos como parte do provisionamento. O Provisionamento JIT SAML pode ser configurado para atualizar os usuários provisionados, de forma que os atributos de usuários no armazenamento do Provedor de Serviços (SP) possam ser mantidos sincronizados com os atributos de armazenamento de usuário do Provedor de Identidades (IdP).
Ao configurar o Provisionamento JIT SAML, você define como os dados do usuário enviados pelo seu IdP SAML serão usados para criar e/ou atualizar usuários no seu domínio de identidades. Primeiro, você cria e configura um SAML IdP para SSO federado e, em seguida, ativa e configura as opções de Provisionamento JIT SAML para esse IdP.
O Provisionamento JIT SAML só pode ser configurado usando o ponto final da API REST /admin/v1/IdentityProviders
.
Propriedade IdentityProvider |
Descrição | Exemplo de JSON |
---|---|---|
jitUserProvEnabled |
Propriedade booleana para ativar/desativar o recurso Provisionamento JIT SAML para este IdP. Se essa propriedade fortrue , pelo menos um de jitUserProvCreateUserEnabled ou jitUserProvAttributeUpdateEnabled também deverá ser true . |
|
jitUserProvCreateUserEnabled |
Propriedade booleana que indica se um usuário deve ser criado, com base na asserção recebida, se o usuário ainda não existir. Por padrão, os usuários criados usando o Provisionamento JIT SAML são usuários "federados". Os usuários federados não têm credenciais para acessar diretamente o domínio de identidades, mas devem ser autenticados pelo provedor de identidades externo. O status federado de um usuário pode ser alterado usando a console Admin e atualizando o atributo |
|
jitUserProvAttributeUpdateEnabled |
Propriedade booleana que indica se os atributos do usuário devem ser atualizados, com base na asserção recebida, se o usuário já existir. |
|
jitUserProvAttributes |
Essa é uma referência a um objeto Veja abaixo detalhes do uso de |
|
jitUserProvGroupAssertionAttributeEnabled |
Propriedade booleana que indica se as associações de grupo devem ser designadas ao usuário com base em uma lista de nomes de grupo recebidos do IdP em um atributo SAML. Se essa propriedade for |
|
jitUserProvGroupMappingMode |
Propriedade de string que controla como os grupos em IdP são mapeados para aqueles no domínio de identidades. O valor deve ser: explícito - Os grupos IdP são mapeados explicitamente para os grupos no domínio de identidades usando a propriedade de configuração implícito - Os nomes de grupo na asserção SAML devem corresponder aos nomes de grupo no domínio de identidades. O padrão é explicit se nenhum valor for especificado. |
|
jitUserProvGroupMappings |
Array de mapeamentos entre grupos na asserção IdP e grupos no domínio de identidades. Cada objeto no array representa um mapeamento entre um grupo IdP e um grupo de domínios de identidades.
O número máximo de mapeamentos de grupo por IdP é 250. |
|
jitUserProvGroupSAMLAttributeName |
O nome do atributo de asserção SAML que conterá grupos a serem designados ao usuário, se a propriedade O atributo de asserção pode incluir:
|
|
jitUserProvGroupStaticListEnabled |
Propriedade booleana que indica se as associações de grupo devem ser atribuídas ao usuário com base em uma lista estática de nomes de grupo. Se essa propriedade for |
|
jitUserProvAssignedGroups |
Array de grupos a serem designados ao usuário, além de quaisquer valores recebidos na asserção SAML, se a propriedade Observação: os valores definidos nesta matriz são IDs de grupo (não nomes de grupo). |
|
jitUserProvGroupAssignmentMethod |
Propriedade de string que controla como as associações de grupo serão designadas ao usuário no domínio de identidades. O valor deve ser:
|
|
jitUserProvIgnoreErrorOnAbsentGroups |
Propriedade booliana que determina a ação a ser tomada quando o atributo de asserção de entrada especifica um grupo que não existe ou um grupo para o qual um mapeamento de grupo não existe no domínio de identidades. Se essa propriedade for verdadeira, o grupo ausente será ignorado e o usuário será criado. Se esta propriedade for falsa e um grupo não existente for especificado, a criação do usuário falhará. O padrão é verdadeiro para o modo explicit e falso para o modo implicit especificado usando |
|
Configurando o Mapeamento jitUserProvAttributes
Depois que o IdentityProvider
tiver sido criado e os atributos de Provisionamento JIT SAML configurados conforme necessário, o recurso jitUserProvAttributes
deverá ser atualizado para adicionar seus mapeamentos de atributo de entrada. O recurso MappedAttributes
, referenciado por jitUserProvAttributes
, é criado e excluído automaticamente com o recurso IdentityProvider
, e essa propriedade é marcada como imutável. Os mapeamentos de atributo de Provisionamento JIT SAML são configurados atualizando o objeto MappedAttributes
existente, não substituindo-o.
MappedAttributes
usadas pelo Provisionamento JIT SAML.Propriedade MappedAttributes |
Descrição | Exemplos de JSON |
---|---|---|
attributeMappings |
A lista de mapeamentos entre os atributos de asserção SAML e os atributos do usuário do domínio de identidades. Cada mapeamento consiste em:
Observação: os nomes de atributos de asserção SAML fazem distinção entre maiúsculas e minúsculas. |
|
refResourceType |
O nome do recurso que está usando/tem uma referência a esse atributo mapeado (sempre |
|
idcsResourceType |
O tipo do recurso do domínio de identidades para o qual estamos mapeando (sempre |
|
direction |
Direção do mapeamento, com relação ao recurso do domínio de identidades em questão (sempre |
|
refResourceID |
O ID do recurso |
|
Para atualizar os mapeamentos de atributo, primeiro você deve identificar o recurso MappedAttributes
correto para seu IdP. Isso pode ser feito recuperando o recurso IdentityProvider
e observando o atributo $ref
da propriedade jitUserProvAttributes
.
Por exemplo, você pode ter um recurso MappedAttributes
, como https://<domainURL>/admin/v1/MappedAttributes/6533d475754845a8b0e971c48b87edda
, que seria PATCH para atualizar sua propriedade attributeMappings
.
Payload PATCH de Amostra para MappedAttributes
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
], "Operations": [
{
"op": "replace",
"path": "attributeMappings",
"value": [
{
"managedObjectAttributeName": "$(assertion.mail)",
"idcsAttributeName": "userName"
},
{
"managedObjectAttributeName": "$(assertion.firstname)",
"idcsAttributeName": "name.givenName"
},
{
"managedObjectAttributeName": "$(assertion.lastname)",
"idcsAttributeName": "name.familyName"
},
{
"managedObjectAttributeName": "$(assertion.mail)",
"idcsAttributeName": "emails[primary eq true and type eq \"work\"].value"
}
]
}
]
}
Uso de Mapeamento de Atributo de Provisionamento JIT SAML e Comportamento de Runtime
Se os valores de userName
, name.givenName
e name.familyName
não estiverem presentes, haverá um erro no runtime, pois esses atributos são marcados como obrigatórios no esquema User
. O mesmo se aplica ao endereço de e-mail principal, a menos que o tenant tenha sido configurado para tornar isso opcional.
No runtime, se qualquer valor de atributo de asserção não puder ser convertido em um tipo de dados que possa ser designado ao atributo do usuário para o qual ele está mapeado, haverá um erro e o SSO falhará.
Se vários mapeamentos de atributo forem configurados visando o mesmo atributo de usuário dos domínios de identidades, eles serão avaliados e executados na ordem da posição e somente o resultado do último mapeamento será retido.
Um atributo de asserção de entrada que não contém valores resultará na remoção do valor do atributo de usuário dos domínios de identidades mapeados correspondentes, se jitUserProvAttributeUpdateEnabled
for true
.
${assertion.fed.issuerid)
$(assertion.fed.nameidvalue)
- Atributos confidenciais - ou seja, atributos marcados como
"idcsSensitive: hash"
ou"idcsSensitive: encrypt"
no esquema - Atributos marcados como
"idcsInternal: true"
no esquema - Atributos que são readOnly
- Todos os atributos que o User Sync não permite
Quando um usuário for criado usando o Provisionamento JIT SAML, os atributos a seguir serão definidos. Esses atributos não são configuráveis:
bypassNotification : true
- Por exemplo, um e-mail de ativação de conta não será enviado ao usuário recém-criado.syncedFromApp
- Uma referência ao recurso do Provedor de Identidades correspondente ao emissor da asserção SAML de entrada.
isFederatedUser
é definido como true
por padrão. Esse comportamento pode ser alterado definindo o atributo isFederatedUser
como false
na configuração attributeMappings
do Provisionamento JIT SAML.Esse comportamento padrão (
isFederatedUser = true
) só se aplica à criação do usuário, não à atualização do usuário; a configuração attributeMappings
se aplica à criação do usuário e à atualização do usuário.Perguntas Frequentes
P: É obrigatório que os grupos estejam presentes nos domínios de identidades para atualizar a associação do grupo durante o Provisionamento JIT SAML?
R: Sim. Os grupos precisam ser sincronizados ou criados manualmente nos domínios de identidades antes que a associação do grupo seja atualizada. O Provisionamento JIT SAML não criará grupos em tempo real.
P: Posso mapear um literal no mapeamento de atributos? Por exemplo, quero mapear isFederatedUser = true
durante a criação do usuário?
R: Sim.
P: Suportamos atributos de vários valores no mapeamento de atributos? Em caso afirmativo, aplicamos patch ao payload ou fazemos uma substituição?
R: Sim. Todos os valores do atributo de usuário do domínio de identidades são substituídos pelo resultado líquido do mapeamento do atributo Provisionamento JIT SAML.
P: Se um usuário for removido de um grupo no IdP, como trataremos isso? E se esse grupo for designado manualmente em domínios de identidades? Podemos configurar o comportamento de substituição versus patch?
A: A atribuição de grupo usando a atualização de Provisionamento JIT SAML pode ser configurada para ter o comportamento Mesclar ou Substituir, para as atribuições de grupo do usuário em geral. Por exemplo, se a atualização estiver configurada para Substituir, todas as designações de grupo manuais que não aparecerem na asserção IdP serão removidas.
P: Podemos configurar o Provisionamento JIT SAML para ocorrer somente durante a criação do usuário, mas não para atualizar o usuário posteriormente?
R: Sim. Se jitUserProvCreateUserEnabled
for verdadeiro e jitUserProvAttributeUpdateEnabled
for falso, o Provisionamento JIT SAML criará usuários se eles estiverem ausentes, mas não os atualizará em log-ins subsequentes.