Introdução #
A integração entre as aplicações, também conhecida por federação, utiliza protocolos padrão, para estabelecer a necessária comunicação, para a autenticação segura dos usuários.
Neste documento vamos detalhar alguns exemplos de integração utilizando os protocolos de SSO suportados pelo HORACIUS CSSO.
Definição de Parâmetros #
Todos os parâmetros utilizados no processo de autenticação são descritos a seguir:
- <organization_name>: nome da organização (subdomínio)
- <application_callback_url>: url de callback no qual o Cloud Single Sign-On emitirá as informações necessárias, como o Token JWT
- <jwt_token>: valor do token jwt
- <client_id>: parâmetro que representa o identificador da aplicação que pode ser obtido no Cloud Single Sign-On
- <redirect_uri>: representa a url na qual o Cloud Single Sign-On irá redirecionar o usuário com os dados necessários após a solicitação de informações (código ou token JWT)
- <state>: representa um valor randômico que pode ser enviado pela aplicação cliente que deve ser respondida com o mesmo valor pelo Cloud Single Sign-On
- <scope>: parâmetro que representa o escopo da requisição, possuindo um valor padrão definido pelo Cloud Single Sign-On, sendo public_profile
- <response_type>: parâmetro que representa tipo de resposta esperada pela aplicação cliente, podendo possuir o valor token ou code
- <access_token>: valor do token de acesso recebido pela aplicação
- <fields>: informações do cliente solicitada pela aplicação
Integração via Protocolo JWT #
O Cloud Single Sign-On suporta o uso do protocolo de autenticação JWT (JSON Web Token). Há algumas informações que o CSSO (Cloud Single Sign-On) necessita o processo de autenticação, sendo:
- URL da Aplicação: URL da página inicial da aplicação cliente
- ID da Aplicação: Identificador da aplicação configurada no CSSO
- Informação Secreta: Chave simétrica utilizada para validação do Token
Emissão de uma requisição de autenticação #
Para iniciar uma requisição de autenticação é necessário que a aplicação cliente a construa com as seguintes características:
- URL: https://<organization_name>.sso.e-trust.com.br/jwt/login/<application_id>/
- Método HTTP: GET
Exemplo #
- URL: https://comercial.sso.e-trust.com.br/jwt/login/30251233/
- Método HTTP: GET
Após emitir a requisição com os parâmetros da organização há a necessidade do usuário informar as credenciais. Após essa etapa o usuário será redirecionado para a URL de Callback cadastrada na aplicação JWT no Cloud Single Sign-On. Um exemplo de URL é exibido abaixo:
- https://dante.intranet.e-trust.com.br:9090/callback-url/? refer=&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1ZGI5YjlhNTFiMDY 2NTAwMDE5OWUwOWUiLCJpYXQiOjE1NzQyNTUxMTcsInN1YiI6ImNvbWVyY2lhbEBl LXRydXN0LmNvbS5iciIsImp0aSI6IjhkNDQ4ODMzLTI5N2ItNGIzZi05OGE2LTA2YzY1Y 2RhMTYwNSIsIm5hbWUiOiJDb21lcmNpYWwiLCJlbWFpbCI6ImNvbWVyY2lhbEBkZXNl bnZvbHZpbWVudG8uZS10cnVzdC5jb20uYnIiLCJyZW5ld1RpY2tldFZhbHVlIjoiUkRBZk hNRmFPaX5ZVW5RZnRBLnlZVUJiQzA4YW1zRTNpTGVVSjdrbEVlMElobG1LenFxczd 5SXN2N2ZCNEdmR0hOfjB0OCIsImV4cCI6MTU3NDI1NjAxNywiYWxnIjoiSFMyNTYifQ. dZRbTxY7X3dZc41Dy1bmwyepi_xtTgJCRbOq4XMDFao&return_to=
É importante ressaltar que caso houver falha no processo de autenticação será apresentada a mensagem de falha no login.
Exemplo de validação do token JWT pela aplicação cliente #
Solicitação de informações do usuário autenticado #
Para iniciar uma requisição de solicitação de informações do usuário é necessário que a aplicação cliente a construa com as seguintes características:
- URL: https://<organization_name>.sso.e-trust.com.br/api/idp/jwt/<application_id>/user
- Método: GET
- Header: Authorization Bearer <jwt_token>
Exemplo #
- URL: https://comercial.sso.e-trust.com.br/api/idp/jwt/30251233/user
- Método: GET
- Header: Authorization Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1ZGI5YjlhNTFiMDY2NTAwMDE 5OWUwOWUiLCJpYXQiOjE1NzQyNjcwOTIsInN1YiI6ImNvbWVyY2lhbEBlLXRydXN0L mNvbS5iciIsImp0aSI6IjA4ZGVmM2M4LWQ3YTEtNGIyMS1hODIyLWQwYzc2YWI4N2 UzYyIsIm5hbWUiOiJDb21lcmNpYWwiLCJlbWFpbCI6ImNvbWVyY2lhbEBkZXNlbnZvbH ZpbWVudG8uZS10cnVzdC5jb20uYnIiLCJyZW5ld1RpY2tldFZhbHVlIjoickVMM2g4SX56 Q3BXdlMuMzZ3Mk00bDg1M1ZIN0JBY2dDSG8ueGt1VUNoN2hjd2xwU2p1RmguUVZL LW9POVQub2J1UEE0YSIsImV4cCI6MTU3NDI2Nzk5MiwiYWxnIjoiSFMyNTYifQ.zjjIvE
- DqDDHtajQFVA88Ncq51M54jejRDCNcOzwBVzA
Resposta Esperada #
- StatusCode: 200
- Body: {“username”:”[email protected]“,”name”:”Comercial”}
Revogação do Token #
Para iniciar uma requisição de solicitação de revogação do token do usuário é necessário que a aplicação cliente a construa com as seguintes características:
- URL: https://<organization_name>.sso.e-trust.com.br/api/idp/jwt/<application_id>/ revoke
- Método: POST
- Header: Authorization Bearer <jwt_token>
Exemplo #
- URL: https://comercial.sso.e-trust.com.br/api/idp/jwt/30251233/revoke
- Método: POST
- Header: Authorization Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1ZGI5YjlhNTFiMDY2NTAwMDE 5OWUwOWUiLCJpYXQiOjE1NzQyNjcwOTIsInN1YiI6ImNvbWVyY2lhbEBlLXRydXN0L mNvbS5iciIsImp0aSI6IjA4ZGVmM2M4LWQ3YTEtNGIyMS1hODIyLWQwYzc2YWI4N2 UzYyIsIm5hbWUiOiJDb21lcmNpYWwiLCJlbWFpbCI6ImNvbWVyY2lhbEBkZXNlbnZvbH ZpbWVudG8uZS10cnVzdC5jb20uYnIiLCJyZW5ld1RpY2tldFZhbHVlIjoickVMM2g4SX56 Q3BXdlMuMzZ3Mk00bDg1M1ZIN0JBY2dDSG8ueGt1VUNoN2hjd2xwU2p1RmguUVZL LW9POVQub2J1UEE0YSIsImV4cCI6MTU3NDI2Nzk5MiwiYWxnIjoiSFMyNTYifQ.zjjIvE DqDDHtajQFVA88Ncq51M54jejRDCNcOzwBVzA
Resposta Esperada #
- StatusCode: 200
- Body: {“success_description”:”jwt token was revoked”}
Integração via Protocolo OAuth 2.0 #
O Cloud Single Sign-On suporta o uso do protocolo de autenticação OAuth 2.0 . Há algumas informações que o CSSO (Cloud Single Sign-On) necessita o processo de autenticação, sendo:
- URL da Aplicação: URL da página inicial da aplicação cliente
- ID da Aplicação: Identificador da aplicação configurada no CSSO
- Informação Secreta: Chave simétrica utilizada para validação do Token
- URL de Redirecionamento do Código: URL na qual será enviado o código (code) OAuth no fluxo de Autorização
- URL de Redirecionamento do Token: URL na qual será enviado o token JWT
- URL de Logout: URL na qual o usuário será redirecionado pelo CSSO para finalizar a sessão por parte da aplicação
Emissão de uma requisição de autenticação no Fluxo Implícito #
Para iniciar uma requisição de autenticação no fluxo implícito é necessário que a aplicação cliente a construa com as seguintes características:
- URL: https://<organization_name>.sso.e-trust.com.br/idp/oauth/authorize/sso/
- <application_id>
- Método HTTP: GET
- Parâmetros:
- client_id=<application_id>
- redirect_uri=<application_redirect_uri>
- state=<random_state_value>
- scope=public_profile
- response_type=token
Exemplo #
- URL:https://comercial.sso.e-trust.com.br/idp/oauth/authorize/sso/087d672d-1363-4baa-9207-cd2f16304e31?client_id=087d672d-1363-4baa-9207-cd2f16304e31&redirect_uri=https%3A%2F%2Fdante.intranet.e-trust.com.br%3A9090%2Foauth%2Ftoken&state=&scope=public_profile&response_type=token
- Método HTTP: GET
Após emitir a requisição com os parâmetros da organização há a necessidade do usuário informar as credenciais. Após essa etapa o usuário será redirecionado para a URL de Redirecionamento do Token cadastrada na aplicação OAuth no Cloud Single Sign-On. Um exemplo de URL para esse fluxo é exibido abaixo:
- https://<application_redirect_uri>? state=&access_token=787630f49072680f582f1abd5fd28dce62e1d56a2c0910eb6b83de b59b70bf42936c9d02fe0238b88581cb02d5f13e0e30752323ca9f507c6db9bd0bebc0d9 6d&expires_in=3600
É importante ressaltar que caso houver falha no processo de autenticação será apresentada a mensagem de falha no login.
Solicitação de informações do usuário autenticado #
Para iniciar uma requisição de solicitação de informações do usuário é necessário que a aplicação cliente a construa com as seguintes características:
- URL: https://<organization_name>.sso.e-trust.com.br/api/idp/oauth/userinfo/sso/<application_id>
- Método: GET
- Parâmetros:
- state=<random_state_value>
- access_token=<access_token_value>
- fields=username, name, e-mail
Exemplo #
- URL: https://comercial.sso.e-trust.com.br/api/idp/oauth/userinfo/sso/087d672d-1363- 4baa-9207-cd2f16304e31? state=a601f4329d34c8bf6184282e3230fa795a94f0ad41165e1884a4d4860cbd931bca6 98d8e8e04a6d47d47c55ad4fe633b628e61dc4254ae82d139d4e2fa87f84d&access_tok en=0cb1389f2ba75118ba2f5c0920ed2cc6f0112b14aa98ef21649e9b362ad2bc03332d8 cc98b81e5232cf5e38af6d6d1d29a3bd58241891f29cbfde39da318cb05&fields=usernam e%2C+name%2C+e-mail
- Método: GET
Resposta Esperada #
- StatusCode: 200
- Body: {“username”:”comercial@e- trust.com.br“,”name”:”Comercial”,”email”:”[email protected]”,”state”:”a601f4329d34c8bf6184282e3230fa795a94f0ad41165e1884a4d4860cbd931bca698d8e8e04a6d47d47c55ad4fe633b628e61dc4254ae82d139d4e2fa87f84 d”}
Revogação do Token #
Para iniciar uma requisição de solicitação de revogação do token do usuário é necessário que a aplicação cliente a construa com as seguintes características:
- URL: https://<organization_name>.sso.e-trust.com.br/api/idp/oauth/revoke/sso/<application_id>
- Método: POST
- Header: Authorization Basic base64(<application_id>:<application_secret>)
- Parâmetros:
- state=<random_state_value>
- access_token=<access_token_value>
Exemplo #
- URL: https://comercial.sso.e-trust.com.br/api/idp/oauth/revoke/sso/087d672d-1363- 4baa-9207-cd2f16304e31
- Método: POST
- Header: Authorization Basic MDg3ZDY3MmQtMTM2My00YmFhLTkyMDctY2QyZjE2MzA0ZTMxOkRyTEtzeC1DVlh yN3JzTHF1M3V0Y1ZrVGhpT0ZFZHZYTzMtTHJFSm93MXdaV0xmQkE2QTVzSUkxST FWUHdaU3EwcGVoRU9aSDNVRDVEWHZpRGwxcmNzb1ByNFcxS1F5MVgwcTF1NnV2RWh4NUwzbHotTWVucU9YeFJ2STRjcHFa
- Parâmetros:
- state=123
- access_token= 0cb1389f2ba75118ba2f5c0920ed2cc6f0112b14aa98ef21649e9b362ad2bc03332d8 cc98b81e5232cf5e38af6d6d1d29a3bd58241891f29cbfde39da318cb05
Resposta Esperada #
-
-
-
- StatusCode: 200
- Body: {“state”:”123″,”success_description”:”access_token was revoked”}
-
-
Integração via Protocolo SAML 2.0 #
O Cloud Single Sign-On suporta o uso do protocolo de autenticação SAML 2.0. Há algumas informações que o CSSO (Cloud Single Sign-On) necessita o processo de autenticação, sendo:
- URL da Aplicação: URL da página inicial da aplicação cliente
- Entity ID: Identifica a aplicação do cliente (também conhecido como Issuer)
- Assertion Consumer Service: URL na qual será enviada a resposta de autentição SAML pelo Cloud Single Sign-On
- Single Logout Service: URL na qual será enviada a resposta de logout SAML pelo Cloud Single Sign-On
- Name ID Format: Formato do identificador do usuário (não definido, e-mail, etc…)
- Digest Algorithm: Algoritmo de resumo (SHA1, SHA256)
- Signature Algorithm: Algoritmo para assinatura (RSA-SHA1, RSA-SHA256)
- Public Key: Chave Pública da aplicação
- Private Key: Chave Privada da aplicação
Fluxo de Autenticação SAML 2.0 #
Emissão de uma requisição de autenticação #
Para iniciar uma requisição de autenticação é necessário que a aplicação cliente a construa com as seguintes características:
- URL: https://<organization_name>.sso.e-trust.com.br/idp/saml/redirect/sso/<application_id>
- Método HTTP: GET
- Parâmetros:
- SAMLRequest=<saml_request_value>
- RelayState=<relay_state_value>
- Signature=<signature_value>
Exemplo #
- URL:https://c3po.sso.e-trust.com.br/idp/saml/redirect/sso/613d4646-7516-4ab1-894b- 454765bee088
- Método HTTP: GET
- Parâmetros:
- SAMLRequest: fVLJTsMwEL0j8Q+W79kqJMBqggoIUYklooEDN8eeNA6OXTxOCn+Pm4KAA1zfPL 9lPPOzt16TERwqa3KaxSklYISVyqxz+lhdRSf0rDg8mCPv9YYtBt+aB3gdAD0JLw2y aZDTwRlmOSpkhveAzAu2WtzesFmcso2z3gqrKVle5lQ2tYDWdJ16aRuja9GB1KKVPUBbgxRKv+hO6I6Sp69Ys12sJeIAS4OeGx+gNDuNsiyapVV2yo6OWXr0TEn56XSuzL7Bf7HqPQnZdVWVUXm/qiaBUUlwd4Gd07W1aw2xsP3OvuSIagxwwzUCJQtEcD4EvLAGhx7cCtyoBDw+3O S09X6DLEm22238LZPwRAKCGa0eVQ/G2xgi7wb0u2lcu4QLpMW0bTYVdj/W/H8d/ hWHFt+G8+SHVPH5i7tyy8vSaiXeyUJru71wwH1oFqKEYlfW9dz/ 7ZbF2YQoGTUTlQ0GNyBUo0BSkhR719/nEo7oAw==
- RelayState: https://accounts.google.com/CheckCookie?continue=https%3A%2F%2Fwww.google.com%2F&hl=pt&checkedDomains=youtube&checkConnection=youtube%3A175%3A1&pstMsg=1
Após emitir a requisição com os parâmetros da organização há a necessidade do usuário informar as credenciais. Após essa etapa o usuário será redirecionado para a URL Assertion Consumer Service cadastrada na aplicação SAML no Cloud Single Sign-On. Um exemplo de URL para esse fluxo é exibido abaixo:
- URL:https://www.google.com/a/desenvolvimento.e-trust.com.br/acs
- Método HTTP: POST
- Parâmetros:
- SAMLResponse: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNhbWwycDpS ZXNwb25zZSBEZXN0aW5hdGlvbj0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9hL2Rlc2Vudm9sdmltZW50by5lLXRydXN0LmNvbS5ici9hY3MiIElEPSJfNTBiYmQ4NDYtZ mI2ZC00OTE5LTlhZmEtNDE4ODBjMDFhNzM2IiBJblJlc3BvbnNlVG89ImRmYmNlaG5qamlraGZubGJjamVkbGNoZG1lZWhiZWRjaWxrbGpjbGoiIElzc3VlSW5zdGFudD 0iMjAxOSobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y WM6Y2xhc3Nlczp1bnNwZWNpZmllZDwvc2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sMjpBdXRobkNvbnRleHQ+PC9zYW1sMjpBdXRoblN0YXRlbWVu dD48L3NhbWwyOkFzc2VydGlvbj48L3NhbWwycDpSZXNwb25zZT4=
- RelayState: https://accounts.google.com/CheckCookie?continue=https%3A%2F%2Fwww.google.com%2F&hl=pt&checkedDomains=youtube&checkConnection=youtube%3A175%3A1&pstMsg=1
Através das ferramentas abaixo é possível decodificar e formatar a requisição de autenticação (SAMLRequest) e resposta de autenticação (SAMLResponse).