Procurando feedback sobre uma primeira implementação SAML

Fui encarregado de projetar um processo SSO (logon único) muito simples. Meu empregador especificou que deveria ser implementado no SAML. Eu gostaria de criar mensagens absolutamente tão simples quanto possível, confirmando as especificações SAML.

Ficaria muito grato se alguns de vocês examinassem minhas mensagens de solicitação e resposta e me dissessem se elas fazem sentido para o meu propósito, se incluem algo quenão precisa estar lá, e se estiverem faltando algo quefaz precisa estar lá.

Além disso, gostaria de saber onde, na resposta, devo colocar informações adicionais sobre o assunto; em particular, o endereço de e-mail do sujeito.

A interação precisa funcionar da seguinte maneira:

O usuário solicita serviço do provedor de serviços neste momento, o provedor de serviços não sabe nada sobre o usuário.O provedor de serviços solicita autenticação do usuário ao provedor de identidadeO usuário é autenticado / registrado pelo provedor de identidadeO provedor de identidade responde ao provedor de serviços com a mensagem de êxito da autenticação, o endereço de e-mail do usuário PLUS.

Aqui está o que eu acho que a solicitação deve ser:

<?xml version="1.0" encoding="UTF-8"?>
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
ID="abc" 
IssueInstant="1970-01-01T00:00:00.000Z" 
Version="2.0"
AssertionConsumerServiceURL="http://www.IdentityProvider.com/loginPage">
   <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
    http://www.serviceprovider.com
    </saml:Issuer>
    <saml:Subject>
        <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameID>
    </saml:Subject>

Aqui está o que eu acho que a resposta deve ser:

<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://www.serviceprovider.com/desitnationURL" ID="123" IssueInstant="2008-11-21T17:13:42.872Z" Version="2.0">
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0">
        <saml:Subject>
            <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameID>
            <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:profiles:SSO:browser">
                <saml:SubjectConfirmationData InResponseTo="abc"/>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:AuthnStatement AuthnInstant="2008-11-21T17:13:42.899Z">
            <saml:AuthnContext>
                <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
            </saml:AuthnContext>
        </saml:AuthnStatement>
    </saml:Assertion>
</samlp:Response>

Então, novamente, minhas perguntas são:

Esta é uma interação SAML válida?

O XML da solicitação ou resposta pode ser simplificado?

Onde na resposta devo colocar o endereço de e-mail do sujeito?

Eu realmente aprecio sua ajuda. Muito obrigado!

-Morgan

questionAnswers(2)

yourAnswerToTheQuestion