Propósito do certificado x509 em arquivos de metadados no lado do IdP (estrutura de SSO)

4

Para implementar o SSO, tenho trabalhado com alguns IdP e uma instalação do Shibboleth SP sem poder responder a essa pergunta.

No lado do IdP, tenho alguns arquivos de metadados que descrevem alguns aplicativos. Esses arquivos podem conter um certificado, mas se nada for dado, a comunicação ainda funciona bem. Se eu colocar os mesmos arquivos no lado do SP, ele ainda funciona bem mesmo ao colocar alguns caracteres aleatórios como certificado.

Alguém poderia me explicar como isso funciona e qual é o propósito desses certificados X509 no lado do arquivo de metadados (IdP)?

    
por user72691 25.04.2012 / 15:08

3 respostas

7

Esses certificados são as âncoras de confiança. Eles permitem que você verifique as assinaturas e, portanto, estabeleça confiança nas mensagens que foram trocadas. (Isso é muito semelhante aos certificados de CA confiáveis que estão configurados no seu navegador para autenticar certificados de sites HTTPS.)

As solicitações e respostas de SAML devem ser assinadas (as respostas no mínimo). Você encontrará elementos como <ds:DigestMethod /> , <ds:DigestValue /> e <ds:SignatureValue /> (embora isso possa ser simplificado se você estiver usando a ligação de redirecionamento HTTP).

Quando o SP obtém uma resposta SAML do IdP através do navegador, ele deve verificar se a assinatura obtida vem de um IdP que ele conhece e o que assinou usando a chave privada do IdP; essa assinatura pode ser verificada em relação à chave pública do IdP no certificado configurado nos metadados.

Para um SP, deixar de fazer isso torna todo o processo sem valor, e ser capaz de aceitar qualquer afirmação sem verificar a autenticidade da mensagem do IdP sugere um erro de configuração.

No lado do IdP, é menos importante até certo ponto. É necessário apenas se o IdP desejar verificar se a solicitação realmente vem de um SP em que confia. É particularmente útil se o SP solicitar que determinados atributos confidenciais sejam divulgados (que nem todos os SPs devem ver) e, possivelmente, criptografar esses atributos na resposta, de modo que somente esse SP possa lê-lo.

Dito isto, o Shibboleth pode liberar esses atributos através de um canal de retorno (o serviço de atributos), onde uma conexão entre o SP e o IdP é feita diretamente (sem troca de mensagens com o navegador). A autenticação entre o SP e o IdP ainda deve ocorrer neste evento, mas acho que pode funcionar no nível do transporte (por exemplo, autenticação client-cert) em vez do nível da mensagem (por meio de assinaturas SAML), não tenho certeza. De qualquer forma, você também precisa configurar âncoras de confiança para isso.

    
por 26.04.2012 / 14:12
2

Esses certificados estão lá para garantir que os dados trocados entre o idp e o sp sejam:

  • livre de espionagem
  • é enviado da fonte que você acredita enviar a mensagem
  • a mensagem em inviolável, ninguém a modificou em trânsito

Estes são recursos de segurança dos protocolos que não devem ser omitidos ao implantar um sistema de produção.

Em sistemas que fazem parte de uma federação, os certificados x509 são realmente usados (eles são obrigatórios).

    
por 26.04.2012 / 08:22
1

Os Certificados X509 contêm chaves para criptografia de chave pública e uma chave IdP pode ser usada para assinar mensagens do IdP ou criptografar mensagens para o IdP ou ambos (embora normalmente não seja criptografada uma mensagem no IdP).

Dê uma olhada nesta pergunta de estouro de pilha para saber a diferença entre assinar & criptografia: link

Dê uma olhada na documentação do Shibboleth para exemplos de uso de chaves em metadados: link

O fato de uma chave ser ou não usada para assinatura ou criptografia depende do perfil das mensagens transmitidas entre o IdP e o SP. Ou seja, se as mensagens estão no formato SAML1 ou SAML2 e quais dos pontos finais são usados.

    
por 26.04.2012 / 13:27