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 de SSO, existem três papéis:
- Principal - O usuário que acessa um serviço restrito.
- Provedor de Serviço (SP) - Fornece acesso a serviços restritos.
- Provedor de Identidade (IdP) - Autentica usuários.
O App Builder pode ser configurado como o SP ou IdP usando o provedor de segurança apropriado. Este documento abrange o provedor de segurança SAML IdP. O provedor de segurança SAML IdP autentica usuários em nome de um SP de terceiros. Normalmente, o terceiro é outra instância do App Builder.
Para o papel de 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 SSO SAML:
- Iniciado pelo Provedor de Serviço (SP)
- Iniciado pelo Provedor de Identidade (IdP)
Iniciado pelo Provedor de Serviço (SP)
No fluxo iniciado pelo Provedor de Serviço (SP), um usuário navega até um serviço de terceiros e tenta acessar um recurso restrito. O serviço de terceiros redireciona o usuário para o App Builder via o binding de redirecionamento SAML (HTTP GET
). Se o usuário ainda não tiver se autenticado, o App Builder redireciona o usuário para o formulário de login.
Uma vez que o usuário tenha se autenticado, o App Builder redireciona o usuário de volta para o serviço de terceiros usando o binding SAML Post (HTTP POST
). O serviço de terceiros valida a Resposta SAML, 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 Iniciado pelo SP, o serviço de terceiros normalmente registra a URL que o usuário tentou acessar antes de realizar o redirecionamento. Uma vez que o processo SSO SAML esteja completo, o SP redireciona o usuário para essa URL. Isso permite links profundos.
Provedor de identidade (IdP) iniciado
No fluxo iniciado pelo Provedor de Identidade (IdP), um usuário segue um link para o Serviço de Autenticação Única. Se o usuário ainda não tiver se autenticado, o App Builder redireciona o usuário para o formulário de login.
Uma vez que o usuário tenha se autenticado, o App Builder redireciona o usuário de volta para o serviço de terceiros usando o binding SAML Post (HTTP POST
). Assim como no fluxo Iniciado pelo SP, o serviço de terceiros valida a Resposta SAML, 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 do IdP não é iniciado pelo SP de terceiros, o usuário é tipicamente redirecionado para uma página padrão uma vez que o processo SSO SAML esteja completo. 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
- Emissor: emissor da asserção SAML.
- Público: restrição de público da asserção SAML. O valor deve ser uma URI sintaticamente válida.
- Destinatário: destinatário da asserção SAML. O valor deve ser uma URI sintaticamente válida. O padrão é o Serviço de Consumidor de Asserção.
- ID da Entidade: identificador da entidade SAML. O valor deve ser uma URI sintaticamente válida. O padrão é o Emissor.
- Sujeito: SAML NameId. O padrão é o nome do usuário atual.
Endpoints
Tipo | Descrição |
---|---|
Serviço de Consumidor de Asserção | Endpoint do Provedor de Serviço (SP) de terceiros que recebe mensagens de resposta SAML (SAMLResponse). |
Serviço de Autenticação Única | Endpoint que recebe mensagens de solicitação de autenticação (AuthNRequest). O padrão é baseado na URL atual. Veja o Serviço de Autenticação Única abaixo. |
Certificados
Propósito | 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 de Single Sign-On (SSO). |
Como mencionado acima, o App Builder requer um certificado de assinatura PKCS#12 codificado em base64 com chave privada. O processo para gerar um certificado está fora do escopo deste documento. No entanto, para fins ilustrativos, os seguintes comandos demonstram como gerar um certificado compatível usando a ferramenta de linha de comando OpenSSL.
O seguinte comando 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 seguinte comando 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
Você será solicitado a fornecer uma senha. O App Builder precisará saber essa senha para descriptografar a chave privada.
Finalmente, o seguinte comando 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 login iniciado por um Provedor de Identidade (IdP): em um login iniciado por um SP, o SP determina o valor do parâmetro RelayState. Por padrão, o SAML IdP não passará o valor de RelayState para o SP. Defina como True para permitir que os 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 login iniciado por um Provedor de Identidade (IdP): em um login iniciado por um SP, o SP determina o valor do parâmetro RelayState. Os valores aceitáveis variam com base na implementação. Algumas implementações de SAML SP aceitam uma URI de redirecionamento. |
|
ValidUntil | Data de expiração dos metadados do SAML IdP. Espera uma data formatada em ISO 8601, como:
|
Reivindicações
O provedor de segurança SAML IdP mapeia propriedades de usuário para reivindicações. As reivindicações estão incorporadas na asserção SAML como atributos. O nome do atributo corresponde ao identificador da reivindicação.
Por exemplo, se a propriedade Nome foi mapeada para o identificador da reivindicaçã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 Grupo pode ser usada para passar a associação a grupos de segurança. Por padrão, as asserções SAML não incluem grupos. Você deve registrar explicitamente os grupos que devem ser incluídos.
Para incluir a associação a grupos, 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 é utilizado. Se o identificador for nulo, o nome é utilizado.
Integração
O provedor de segurança SAML IdP expõe os seguintes endpoints:
- Serviço de SSO
- Endpoint de Metadados
Serviço de SSO
O Serviço de SSO recebe mensagens de solicitação SAML (AuthNRequest). A URL do Serviço de SSO terá a seguinte forma:
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 App Builder. |
SAMLIDP | Nome do provedor de segurança SAML IdP codificado em URL. O valor é sensível a maiúsculas e minúsculas. |
Endpoint de Metadados
O Endpoint de Metadados publica um documento de metadados (Metadata). A URL do Endpoint de Metadados terá a seguinte forma:
Componente | Descrição |
---|---|
https://example.com/Vinyl/ | URL absoluta do diretório raiz da aplicação App Builder. |
SAMLIDP | Nome do provedor de segurança SAML IdP codificado em URL. O valor é sensível a maiúsculas e minúsculas. |
Problemas conhecidos e limitações
O provedor de segurança SAML IdP do App Builder possui as seguintes limitações:
- Apenas uma restrição de público pode ser fornecida.
- As respostas SAML podem não ser criptografadas.
- As respostas SAML podem não ser assinadas.
- As afirmações SAML são sempre assinadas.
- O protocolo de resolução de Artifact não é suportado.
- O protocolo de Logout não é suportado.