Provedor de identidade SAML no Jitterbit App Builder
A autenticação SAML Single Sign-On (SSO) é definida nos seguintes documentos:
- Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0
- SAML Version 2.0 Errata 05
Em um cenário SSO, existem três funções:
- Principal - O usuário que acessa um serviço restrito.
- Service Provider (SP) - Fornece acesso a serviços restritos.
- Identity Provider (IdP) - Autentica usuários.
O App Builder pode ser configurado como SP ou IdP usando o provedor de segurança apropriado. Este documento aborda o provedor de segurança SAML IdP. O provedor de segurança SAML IdP autentica usuários em nome de um SP terceirizado. Normalmente, o terceirizado é outra instância do App Builder.
Para a função SP, consulte o provedor de segurança SAML.
Fluxos
A especificação SAML Single Sign-On (SSO) define vários fluxos. O provedor de segurança SAML IdP suporta os seguintes fluxos SAML SSO:
- Service Provider (SP) iniciado
- Identity Provider (IdP) iniciado
Service provider (SP) iniciado
No fluxo iniciado por Service Provider (SP), um usuário navega para um serviço terceirizado e tenta acessar um recurso restrito. O serviço terceirizado redireciona o usuário para o App Builder por meio da vinculação SAML Redirect (HTTP GET). Se o usuário ainda não foi autenticado, o App Builder o redireciona para o formulário de login.
Após a autenticação do usuário, o App Builder o redireciona de volta para o serviço terceirizado usando a vinculação SAML Post (HTTP POST). O serviço terceirizado valida a SAML Response, mapeia o identificador de nome para uma conta de usuário local e concede os direitos associados a essa conta de usuário.
No fluxo SP Initiated, o serviço terceirizado normalmente registra a URL que o usuário tentou acessar antes de realizar o redirecionamento. Após a conclusão do processo SAML SSO, o SP redireciona o usuário para essa URL. Isso permite deep links.
Identity provider (IdP) iniciado
No fluxo iniciado por Identity Provider (IdP), um usuário segue um link para o Single Sign-On Service. Se o usuário ainda não foi autenticado, o App Builder o redireciona para o formulário de login.
Após a autenticação do usuário, o App Builder o redireciona de volta para o serviço terceirizado usando a vinculação SAML Post (HTTP POST). Como no fluxo SP Initiated, o serviço terceirizado valida a SAML Response, mapeia o identificador de nome para uma conta de usuário local e concede os direitos associados a essa conta de usuário.
Como o fluxo IdP não é iniciado pelo SP terceirizado, o usuário é normalmente redirecionado para uma página padrão após a conclusão do processo SAML SSO. No entanto, alguns SPs permitirão que o IdP redirecione o usuário para um local arbitrário passando uma URL no parâmetro RelayState.
Configuração
Tokens
- Issuer: Emissor de asserção SAML.
- Audience: Restrição de audiência de asserção SAML. O valor deve ser uma URI sintaticamente válida.
- Recipient: Destinatário de asserção SAML. O valor deve ser uma URI sintaticamente válida. O padrão é o Assertion Consumer Service.
- Entity ID: Identificador de entidade SAML. O valor deve ser uma URI sintaticamente válida. O padrão é o Issuer.
- Subject: SAML NameId. O padrão é o nome de usuário atual.
Endpoints
| Tipo | Descrição |
|---|---|
| Assertion Consumer Service | Endpoint do Service Provider (SP) terceirizado que recebe mensagens de resposta SAML (SAMLResponse). |
| Single Sign-On Service | Endpoint que recebe mensagens de solicitação de autenticação (AuthNRequest). O padrão é baseado na URL atual. Consulte Single Sign-On Service abaixo. |
Certificados
| Finalidade | Tipo | Formato | Descrição |
|---|---|---|---|
| Assinatura | Certificado X.509 com Chave Privada | PKCS#12 (PFX), protegido por senha, codificado em base64 | Certificado X.509 com chave privada. Usado para assinar a resposta SAML Single Sign-On (SSO). |
Conforme mencionado acima, o App Builder requer um certificado de assinatura PKCS#12 codificado em base64 com chave privada. O processo de geração de um certificado está fora do escopo deste documento. No entanto, para fins ilustrativos, os comandos a seguir demonstram como gerar um certificado compatível usando o utilitário de linha de comando OpenSSL.
O comando a seguir gera uma chave privada (key.pem) e um certificado autoassinado (cert.pem):
$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -nodes -days 1095 -subj "/CN=localhost/O=App Builder"
O comando a seguir gera um arquivo PKCS#12 (cert.pfx) contendo a chave privada e o certificado:
$ openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx
Será solicitado que você forneça uma senha. O App Builder precisará conhecer essa senha para descriptografar a chave privada.
Por fim, o comando a seguir codifica em base64 o arquivo PKCS#12:
$ openssl base64 -in cert.pfx -out cert.txt -A
Copie e cole o conteúdo de cert.txt no App Builder.
Propriedades
O provedor de segurança SAML IdP define os seguintes parâmetros adicionais:
| Parâmetro | Padrão | Descrição |
|---|---|---|
| AllowRelayStatePassthrough | False |
Indica se valores arbitrários de RelayState recebidos do cliente devem ser passados para o Provedor de Serviço SAML (SP). Observe que isso se aplica apenas a um logon iniciado pelo Provedor de Identidade (IdP): em um logon iniciado pelo SP, o SP determina o valor do parâmetro RelayState. Por padrão, o SAML IdP não passa o valor de RelayState para o SP. Defina como True para permitir que valores de RelayState sejam passados para o SP. |
| CacheDuration | Duração do cache de metadados do SAML IdP em segundos. | |
| RelayState | Valor passado para o Provedor de Serviço SAML (SP) no parâmetro RelayState. Observe que isso se aplica apenas a um logon iniciado pelo Provedor de Identidade (IdP): em um logon iniciado pelo SP, o SP determina o valor do parâmetro RelayState. Os valores aceitáveis variam de acordo com a implementação. Algumas implementações de SAML SP aceitam um URI de redirecionamento. |
|
| ValidUntil | Data de expiração dos metadados do SAML IdP. Espera uma data formatada em ISO 8601, como:
|
Declarações
O provedor de segurança SAML IdP mapeia propriedades de usuário para declarações. As declarações são incorporadas na asserção SAML como atributos. O nome do atributo corresponde ao identificador da declaração.
Por exemplo, se a propriedade Name foi mapeada para o identificador de declaração http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, a asserção SAML conteria o seguinte atributo:
<Attribute AttributeName="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>Arthur.Dent</AttributeValue>
</Attribute>
A propriedade Group pode ser usada para passar a associação de grupo de segurança. Por padrão, as asserções SAML não incluem grupos. É necessário registrar explicitamente os grupos que devem ser incluídos.
Para incluir a associação de grupo, crie um grupo de provedor de segurança e mapeie-o para um grupo do App Builder. Se o usuário for membro do grupo do App Builder, o grupo do provedor de segurança será adicionado à asserção. O identificador do grupo do provedor de segurança é usado. Se o identificador for nulo, o nome será usado.
Integração
O provedor de segurança SAML IdP expõe os seguintes endpoints:
- Serviço de Logon Único
- Endpoint de Metadados
Serviço de logon único
O Serviço de Logon Único recebe mensagens de solicitação SAML (AuthNRequest). A URL do Serviço de Logon Único terá o seguinte formato:
https://example.com/Vinyl/signin-SAMLIDP
A URL é composta pelas seguintes partes:
| Componente | Descrição |
|---|---|
| https://example.com/Vinyl/ | URL absoluta do diretório raiz da aplicação do App Builder. |
| SAMLIDP | Esquema do provedor de segurança SAML IdP. O valor diferencia maiúsculas de minúsculas. Caracteres especiais precisam ser codificados em URL. |
Ponto de extremidade de metadados
O Ponto de Extremidade de Metadados publica um documento de metadados (Metadata). A URL do Ponto de Extremidade de Metadados terá o seguinte formato:
https://example.com/Vinyl/metadata-SAMLIDP
A URL é composta pelas seguintes partes:
| Componente | Descrição |
|---|---|
| https://example.com/Vinyl/ | URL absoluta do diretório raiz da aplicação do App Builder. |
| SAMLIDP | Esquema do provedor de segurança SAML IdP. O valor diferencia maiúsculas de minúsculas. Caracteres especiais precisam ser codificados em URL. |
Problemas conhecidos e limitações
O provedor de segurança SAML IdP do App Builder tem as seguintes limitações:
- Apenas uma única restrição de público pode ser fornecida.
- Respostas SAML não podem ser criptografadas.
- Respostas SAML não podem ser assinadas.
- Asserções SAML são sempre assinadas.
- O protocolo de resolução de artefatos não é suportado.
- O protocolo de logout não é suportado.