Qual é exatamente o parâmetro RelayState usado no SSO (ex. SAML)?

Estou a tentar entender o SSO usando o SAML. Deparei-me com o parâmetro RelayState e estou muito confuso exatamente por que ele vem primeiro em SSO para enviar URLs codificadas? O que significa exactamente?

Leia por favor o seguinte de a documentação do Google Developer:

o Google gera um pedido de autenticação SAML. O pedido SAML é codificado e incorporado no URL para o serviço SSO do parceiro. O parâmetro RelayState que contém o URL codificado de a aplicação Google que o usuário está tentando alcançar também está incorporada no URL SSO. Este parâmetro do RelayState destina-se a ser um identificador opaco que é repassado sem qualquer modificação ou inspeção

Author: Matthew Read, 2015-12-18

3 answers

O significado original de {[[0]} é que o SP pode enviar algum valor ao IDP juntamente com o AuthnRequest e depois recuperá-lo. O SP pode colocar o valor que quiser no {[[0]} e o PDI deve fazer eco de volta na resposta.

Este parâmetro RelayState destina-se a ser um identificador opaco que é repassado sem qualquer alteração ou inspecção

Existe também outro uso padrão de facto para {[[0]} quando se utiliza o log on iniciado pelo Idp. Nesse caso, não há nenhum pedido de entrada do SP, então não pode haver nenhum estado para ser retransmitido. Em vez disso, o RelayState é usado pelo IDP para sinalizar para o SP qual o URL que o SP deve redireccionar para após o sinal de sucesso ligado. Isto não faz parte da norma SAML2.

Parece que o Google está a usar {[[0]} para o URL de destino, mesmo no sinal iniciado por SP, o que é perfeitamente normal. Mas o IDP deve, como diz a documentação, retransmiti-la.

 56
Author: Anders Abel, 2018-01-18 23:48:45

O RelayState é um identificador para o recurso no SP para o qual o IDP irá redireccionar o Utilizador (após uma autenticação bem sucedida). É uma maneira de tornar o processo de SSO mais transitório para o usuário porque eles são redirecionados novamente para a mesma página que eles originalmente solicitaram no SP.

 6
Author: Yasser Afifi, 2015-12-18 17:11:02

De acordo com o documento oficial SAML,

Algumas ligações definem um mecanismo "RelayState" para preservar e transmitir informações de Estado. Quando tal mecanismo é usado na transmissão de uma mensagem de pedido como o passo inicial de um protocolo SAML, impõe requisitos quanto à selecção e utilização da ligação posteriormente utilizada para transmitir a resposta. Nomeadamente, se uma mensagem de pedido SAML for acompanhada por dados RelayState, então o respondedor SAML Tenho de devolver o protocolo SAML. resposta usando uma ligação que também suporta um mecanismo de RelayState, e deve colocar os dados exactos do RelayState que recebeu com o pedido no correspondente RelayState parâmetro na resposta.
 2
Author: Aravin, 2017-09-20 07:29:28