Provedor de Segurança - Provedor de Identidade SAML¶
A autenticação SAML Single Sign-On (SSO) é definida nos seguintes documentos:
- Asserções e protocolos para a linguagem de marcação de asserção de segurança OASIS (SAML) V2.0
- SAML Versão 2.0 Errata 05
Em um cenário de SSO, existem três funções:
- Principal - O usuário que acessa um serviço restrito.
- Provedor de Serviços (SP) - Fornece acesso a serviços restritos.
- Provedor de identidade (IdP) - Autentica usuários.
O Vinyl pode ser configurado como 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 externo. Normalmente, o externo é outra instância do Vinil.
Para a papel SP, consulte o SAML provedor de segurança.
Fluxos¶
A especificação SAML Single Sign-On (SSO) define vários fluxos. O provedor de segurança SAML IdP oferece suporte aos seguintes fluxos SAML SSO:
- Provedor de serviços (SP) iniciado
- Provedor de identidade (IdP) iniciado
Provedor de Serviços (sp) Iniciado¶
No fluxo iniciado pelo Provedor de Serviços (SP), um usuário navega para um serviço de externo e tenta acessar um recurso restrito. O serviço de externo redireciona o usuário para o Vinyl por meio da ligação de redirecionamento SAML (HTTP GET
). Se o usuário ainda não tiver se autenticado, o Vinyl redireciona o usuário para o formulário de login.
Depois que o usuário for autenticado, o Vinyl redirecionará o usuário de volta ao serviço de externo usando a ligação SAML Post (HTTP POST
). O serviço de externo 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 SP inicializado, o serviço de externo normalmente registra a URL que o usuário tentou acessar antes de executar o redirecionamento. Assim que o processo de SSO SAML for concluído, o SP redirecionará o usuário para esse URL. Isso permite links diretos.
Provedor de Identidade (idp) Iniciado¶
No fluxo iniciado pelo Provedor de Identidade (IdP), um usuário segue um link para o Serviço de Logon Único. Se o usuário ainda não tiver se autenticado, o Vinyl redireciona o usuário para o formulário de login.
Depois que o usuário for autenticado, o Vinyl redirecionará o usuário de volta ao serviço de externo usando a ligação SAML Post (HTTP POST
). Tal como acontece com o fluxo iniciado pelo SP, o serviço de externo 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 externo, o usuário normalmente é redirecionado para uma página padrão assim que o processo de SSO SAML for concluído. 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¶
Fichas¶
- Emissor: emissor de declaração SAML.
- Público: restrição de público de declaração SAML. O valor deve ser um URI sintaticamente válido.
- Destinatário: destinatário da declaração SAML. O valor deve ser um URI sintaticamente válido. O padrão é Assertion Consumer Service.
- ID da entidade: identificador da entidade SAML. O valor deve ser um URI sintaticamente válido. O padrão é Emissor.
- Assunto: NameId SAML. O padrão é o nome de usuário atual.
Endpoints¶
Tipo | Descrição |
---|---|
Afirmação Atendimento ao Consumidor | endpoint do provedor de serviços (SP) de terceiros que recebe mensagens de resposta SAML (SAMLResponse). |
Serviço de logon único | Endpoint que recebe mensagens de solicitação de autenticação (AuthNRequest). Padrões baseados no URL atual. Consulte Serviço de logon único 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 observado acima, o Vinyl 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 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 certificado autoassinado (cert.pem
):
$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -nodes -days 1095 -subj "/CN=localhost/O=Vinyl"
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
Você será solicitado a fornecer uma senha. O Vinyl 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
em Vinil.
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 RelayState arbitrários recebidos do cliente devem ser passados para o provedor de serviços SAML (SP). Observe que isso se aplica apenas a um logon iniciado por um Provedor de Identidade (IdP): em um logon iniciado por SP, o SP determina o valor do parâmetro RelayState. Por padrão, o IdP SAML não passará o valor RelayState para o SP. Definido como True para permitir que valores RelayState sejam passados para o SP. |
CacheDuration | Duração do cache de metadados SAML IdP em segundos. | |
RelayState | Valor passado para o provedor de serviços SAML (SP) no parâmetro RelayState. Observe que isso se aplica apenas a um logon iniciado por um Provedor de Identidade (IdP): em um logon iniciado por SP, o SP determina o valor do parâmetro RelayState. Os valores aceitáveis variam de acordo com a implementação. Algumas implementações SAML SP aceitam um URI de redirecionamento. | |
VálidoAté | Data de expiração dos metadados SAML IdP. Espera uma data formatada em ISO 8601, como:
|
Reivindicações¶
O provedor de segurança SAML IdP mapeia as propriedades do usuário para declarações. As declarações são incorporadas na declaração SAML como atributos. O nome do atributo corresponde ao identificador da declaração.
Por exemplo, se a propriedade Name tiver sido 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 ao grupo 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 ao grupo, crie um grupo de provedores de segurança e mapeie-o para um grupo Vinyl. Se o usuário for membro do grupo Vinyl, 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). O 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 do aplicativo Vinyl. |
SAMLIDP | Nome do provedor de segurança IdP SAML codificado em URL. O valor diferencia maiúsculas de minúsculas. |
Endpoint de Metadados¶
O Metadata Endpoint publica um documento de metadados (Metadados). O URL do Endpoint 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 do aplicativo Vinyl. |
SAMLIDP | Nome do provedor de segurança IdP SAML codificado em URL. O valor diferencia maiúsculas de minúsculas. |
Problemas Conhecidos e Limitações¶
O provedor de segurança Vinyl SAML IdP tem as seguintes limitações:
- Somente poderá ser fornecida uma única restrição de público.
- As respostas SAML não podem ser criptografadas.
- As respostas SAML não podem ser assinadas.
- As asserções SAML são sempre assinadas.
- O protocolo de resolução de artefato não é compatível.
- O protocolo Logout não é suportado.