O que é RelayState?
Como descrito pela
OASIS
:
"Às vezes, é utilizado um campo específico de ligação chamado RelayState para coordenar mensagens e ações de IdPs e SPs, por exemplo, para permitir que um IdP (com o qual o SSO foi iniciado) indique a URL de um recurso desejado ao comunicar com um SP."
Em outras palavras, RelayState é um parâmetro de URL que usamos para indicar ao nosso Provedor de Identidade para onde enviar a resposta de volta (diretamente para WebGUI? Fiori? NWBC?...).
Iniciado por Provedor de Identidade vs Iniciado por Provedor de Serviços
Para configurar corretamente o RelayState, é necessário compreender a diferença entre o fluxo de autenticação iniciado por IDP e o iniciado por SP.
O fluxo de autenticação iniciado por SP ocorre quando a URL do Provedor de Serviços é inserida e redirecionada para o IDP e, portanto, o IDP sabe quem está iniciando o fluxo de autenticação SAML. Isso é importante porque o Provedor de Identidade pode atender a mais de um SP, então ele sabe quem está enviando a solicitação. Não precisamos modificar a URL para informar ao IDP quem somos.
O iniciado por IDP ocorre quando a URL do IDP é inserida no navegador e, portanto, o IDP não sabe quem está enviando o SAMLRequest. É aí que o saml2sp entra em ação. Podemos usar o
http://idpurl?saml2sp=spname
. Isso é descrito
aqui
.
Pré-requisitos para usar o RelayState
-
Já tem um ambiente autenticando via SAML2
-
Está utilizando um fluxo de autenticação iniciado por IDP
Como configurar o RelayState em AS ABAP
-
Primeiramente, abra a transação
SAML2
do seu AS ABAP através do SAPGUI.
-
Clique em
Configuração do Provedor de Serviços
e role para baixo até
Mapeamento de RelayState.
-
Como pode ver, temos duas colunas:
RelayState
e
Rota da Aplicação
. No primeiro, pode usar qualquer nome porque é apenas um alias (usaremos esse nome como parâmetro de URL). O segundo é a rota para sua URL/Serviço (por exemplo, /sap/bc/...).
-
Portanto, crie um alias para seu serviço e especifique a rota.
-
Pronto! Você configurou o RelayState. Vamos testar.
-
Insira a URL do seu IDP usando o parâmetro saml2sp e o RelayState.
-
No meu caso, seria:
http://myidpurl:50200/saml2/idp/sso?saml2sp=ABAP_N50_SP&RelayState=fiori
-
Como pode ver, fui redirecionado para o Fiori e não para a rota padrão.
Conclusão
Para concluir, RelayState é um parâmetro de URL que podemos utilizar para redirecionar o usuário para um aplicativo diferente após o término do fluxo de autenticação.
Referências
https://www.oasis-open.org