Histórico da Página
...
Para mais detalhes sobre serviços REST na arquitetura Protheus clique aqui.
Definição do Serviço
Nome: WSTSSAUTH
Objetivo: Obter o Token de Autenticação JWT do serviço TSS através das chaves Client Id e Client Secret.
Métodos: POST
Configurações do Serviço
A Configuração do serviço REST está documentada no link Configuração REST SERVER - Protheus.
...
Nota | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||
Na seção HTTPURI, a chave PrepareIn deve ser comentada. Segue exemplo de configuração do WS REST para utilização no modulo TAF:
|
Definição dos métodos
POST
Descrição do Método: O método POST segue o conceito do próprio método em qualquer outro tipo de serviço REST, devendo seu conteúdo ser enviado no corpo da mensagem (body) no formato json.
O objetivo deste método no serviço WSTSSToken é obter um token JWT do serviço TSS utilizando as credenciais de autenticação previamente cadastradas conforme documento: https://tdn.totvs.com/x/1RhcIw
Estrutura da mensagem enviada no POST (Request):
Atributo | Pai | Nivel | Ocorrência | Formato |
---|---|---|---|---|
urlTSS | - | 1 | 1 | STRING |
grantType | - | 1 | 1 | NUMERICO |
clientId | - | 1 | 0-1 | STRING |
clientSecret | - | 1 | 0-1 | STRING |
refreshToken | - | 1 | 0-1 | STRING |
...
Aviso | ||
---|---|---|
| ||
Os atributos não obrigatórios têm que fazer parte da estrutura, somente o seu preenchimento é opcional. |
Estrutura da mensagem de retorno do POST (Response):
Atributo | Pai | Nivel | Ocorrência | Formato |
---|---|---|---|---|
accesstoken | - | 1 | 1 | STRING |
expiresIn | - | 1 | 1 | NUMERICO |
refreshToken | - | 1 | 1 | STRING |
tokenType | - | 1 | 1 | STRING |
- accesstoken – Token de autenticação
- expiresIn - Tempo de expiração do token (em segundos), esse parâmetro é retornado de acordo com a configuração da chave TSSTOKEN_TIMEEXP no arquivo de de configuração do TSS (appserver.ini)
- refreshToken - Token para atualização do tempo de expiração
- tokenType - Neste parâmetro sempre será retornado "Bearer" que é o padrão de autenticação que está sendo utilizado para geração do token.
Exemplo do Request para o método POST:
Geração do Token
Bloco de código | ||||
---|---|---|---|---|
| ||||
{ "urlTSS": "10.171.67.235:8092", "grantyType": 1, "clientId": "bd1e28d4dfbb0d66b640ea94298b2e77c443334c", "clientSecret": "19521598819c1fd3bd2b465b4230o1e1f41c64e1f4a09130afacc1f572df1d23" } |
Response:
Bloco de código | ||||
---|---|---|---|---|
| ||||
{ "accesstoken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkyNTY0LCJleHAiOjE2MzE3OTQzNjV9.YjVkNjRmMmNkODQ5MjhmZjUzYzljMmJkMDU1MWQ4ZjNlNzgzNWQ5OWUwMTAyNTFiNWUwNDNlYTIzMDU0NGYxOGFkYzVhMzQ3YWZmZWQwNmRiNDA3OWMzNjYxNDkxNGU4OGYwNmJkZTFhMzEyYjc1ZDdjNTljMjMwNTU0Yjg5YWM", "expiresIn": 1800, "refreshToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkyNTY1LCJleHAiOjE2MzE4Nzg5NjV9.ODRlZmM5NTViZDZkNjJiOTAyZmU3OWE3ZmI4NDNkOGZlZWU4ZTE1NWIwMzI4YzEyZWU3NTMzNGE2OWMzYWE2MDVhMDlkOTE0ZjFmZTU3ZDFhYTRkZDY2ZWRhNmFjZTEzYjYxZDIyZWJiMzhjMWJmMzFhNmY4NTMwMjdkOTI2NzY", "tokenType": "Bearer" } |
Atualização do Token
Bloco de código | ||||
---|---|---|---|---|
| ||||
{ "urlTSS": "10.171.67.235:8092", "grantType": 2, "refreshToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkyNTY1LCJleHAiOjE2MzE4Nzg5NjV9.ODRlZmM5NTViZDZkNjJiOTAyZmU3OWE3ZmI4NDNkOGZlZWU4ZTE1NWIwMzI4YzEyZWU3NTMzNGE2OWMzYWE2MDVhMDlkOTE0ZjFmZTU3ZDFhYTRkZDY2ZWRhNmFjZTEzYjYxZDIyZWJiMzhjMWJmMzFhNmY4NTMwMjdkOTI2NzY", } |
Response:
Bloco de código | ||||
---|---|---|---|---|
| ||||
{ "accesstoken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkzOTI4LCJleHAiOjE2MzE3OTU3Mjl9.NzM5OTkxZjVhNzViYjA1OTVkMzlmYWU2YmFiMTFkNjlmYWY5NDMyODRkZmNlZDQwMWIyZTE3N2U1ODIzMDMxMThiZTZmNjZhMTUyMTYyODQ0ODMzOGE3M2FlZGMxZDNjYjM1ZmQ0MGFmOTBhYjU3MDZmNjczZWU4MWFjMzI4OGE", "expiresIn": 1800, "refreshToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkzOTI4LCJleHAiOjE2MzE4ODAzMjh9.NjE0OTNmOWEzODEwNmQ4NDhmNGY5MWM4YjE3NDFjYTllZDI3MTczOWY2MmNlNGQzOTc1ZDVlZDk0YjNkNGUyZGI5ZDJlYWQ2NGVlMzFjZTQ2Y2VjZWU3N2JlODQ4ZTY3NGVlZjg5YjE2NmVkYjFiN2FhNzRmMDZhMWIwNTc1ZjI", "tokenType": "Bearer" } |
...