NXCD Auth
URL Base de Acesso à API para produção:
https://auth.nxcd.app
URL Base de Acesso à API para homologação:
https://auth-staging.nxcd.app
Serviço de autenticação e autorização da Nextcode. Todas as APIs de consumo localizadas na página de APIs necessitam de um token JWT identificado no header Authorization
como Bearer <token>
. Este token pode ser obtido através do fluxo abaixo.
Fluxo de autenticação
O fluxo de autenticação segue os seguintes passos:
-
O usuário realiza o login através da api de autenticação
-
Esta API retornará um ID Token, este token contem apenas a informação do usuário e NÃO pode ser usado para realizar chamadas na API
-
Com o ID token em mãos, faça uma requisição para a api de autorização utilizando o ID Token como Bearer Token no cabeçalho
Authorization
da requisição -
A API irá retornar um AuthToken que PODE ser usado para acessar as APIs de consumo
Autenticação ¶
Obter usuário atual ¶
Obter usuário atualGET/me
Retorna os dados de autenticação do usuário do token informado.
No caso de clients, retorna os dados do client e suas permissões.
Example URI
Headers
Authorization: Bearer [auth-token ou id-token]
200
Body
{
"id": "5c95450e55c0bd0b4b0d1feb",
"login": "rjmunhoz",
"email": "rogerio.j.munhoz@gmail.com",
"name": "Rogério",
"lastName": "Munhoz"
}
200
Body
{
"id": "5c9b91bbdb4b7095402f2fb5",
"name": "Web client",
"userId": "5c95450e55c0bd0b4b0d1feb",
"grants": {
"heimdall": [
"clients:create"
]
}
}
Apps ¶
Apps são recursos disponibilizados pela Nextcode para consumo. Eles são criados pela Nextcode estão ligados à estrutura de permissionamento granular
Listar todos os apps ¶
Listar todos os appsGET/apps
Útil para consultar quais as aplicações e escopos disponíveis
Example URI
200
Headers
Content-Type: application/json
Body
[
{
"id": "5c95450355c0bd0b4b0d1fea",
"slug": "document-validation",
"scopes": [
"filtypes:pdf",
"filetypes:png",
"filetypes:jpeg"
]
},
{
"id": "5c9a83ac1524777138aac236",
"slug": "heimdall",
"scopes": [
"apps:create",
"users:create",
"profiles:create",
"clients:create"
]
}
]
Clients ¶
Clients são entidades utilizadas para associar permissões a um Client ID e Client Secret.
O Client ID e o Client Secret são necessários para gerar os chamados machine-to-machine
tokens; Esses tokens não dependem de um usuário e senha, embora o client seja atrelado ao usuário que o criou.
Um client pode ter todas ou algumas permissões dentre as concedidas ao usuário que o criou.
Criar novo client ¶
Criar novo clientPOST/clients
Registra um novo client para o usuário atual
-
name (string) - Nome do client (para apresentação na tela)
-
grants (object) - Uma estrutura definindo quais permissões o client deve em cada app
Example URI
Headers
Content-Type: application/json
Authorization: Bearer [auth-token]
Body
{
"name": "Web client",
"grants": {
"heimdall": [
"clients:create"
]
}
}
Schema
{
type: 'object',
properties: {
name: { type: 'string' },
grants: {
type: 'object',
patternProperties: {
'^[a-z0-9]+(?:-[a-z0-9]+)*$': {
type: 'array',
minItems: 1,
items: {
type: 'string',
pattern: '[a-zA-Z]+?[:a-zA-Z]*'
}
}
},
minProperties: 1,
additionalProperties: false
}
},
required: ['name', 'grants']
}
201
Headers
Content-Type: application/json
Body
{
"client": {
"id": "5c9b91bbdb4b7095402f2fb5",
"name": "Web client",
"userId": "5c95450e55c0bd0b4b0d1feb",
"grants": {
"heimdall": [
"clients:create"
]
}
},
"secret": "p7BlBVJhz0pBljwuyRDC+7FEOZDeIH8LO1uQ1K31SqPtR0gIIHMMH2FsXaNWKXXOQE/9nUZL/e82fvGk6cm+Fx39MpvUvGGMxlrM4QeC852XFNX4ppykISZQevgWKCgTe7cd+GiFnME2LzsLZhsFMMcNLZ/ww7WvfaUV6G2op27V/eYhlp/Si4s+DeTPsMGagTwQMScPQdd3+NDSKzvuLmhRkppFa25bw/K+ybdisZQ27C2dl7FJjYtm0xLMuDO0WFuhjU9CUI+UnpHa3NF/UOhHHAmJ1ikIbiTzSg8yBKzBwE2Oip4rQ9/BVA5sX/V1sDdMEw7xexwFiNv35EiQ7A=="
}
422
Headers
Content-Type: application/json
Body
{
"status": 422,
"error": {
"code": "unprocessable_entity",
"message": "'name' is required, 'grants' is required"
}
}
401
Body
{
"status": 401,
"error": {
"code": "unauthorized",
"message": "user does not have following permissions: heimdall:clients:create"
}
}
Obter auth_token ¶
Obter auth_tokenPOST/clients/{client_id}/sessions
Gera um token de autenticação contendo as permissões do client
Example URI
- client_id
string
(required) Example: xptoID do client que deve ser passado
Body
{
"secret": "p7BlBVJhz0pBljwuyRDC+7FEOZDeIH8LO1uQ1K31SqPtR0gIIHMMH2FsXaNWKXXOQE/9nUZL/e82fvGk6cm+Fx39MpvUvGGMxlrM4QeC852XFNX4ppykISZQevgWKCgTe7cd+GiFnME2LzsLZhsFMMcNLZ/ww7WvfaUV6G2op27V/eYhlp/Si4s+DeTPsMGagTwQMScPQdd3+NDSKzvuLmhRkppFa25bw/K+ybdisZQ27C2dl7FJjYtm0xLMuDO0WFuhjU9CUI+UnpHa3NF/UOhHHAmJ1ikIbiTzSg8yBKzBwE2Oip4rQ9/BVA5sX/V1sDdMEw7xexwFiNv35EiQ7A=="
}
Schema
{
"type": "object",
"properties": {
"secret": {
"type": "string"
}
},
"required": [
"secret"
],
"$schema": "http://json-schema.org/draft-04/schema#"
}
200
Headers
Content-Type: application/json
Body
{
"authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ijk3OjZjOjVlOjk0OjhiOjdhOjI2OmY2OjQ2OjNjOmRkOmJkOjBjOjNiOmVhOjhmIn0.eyJzY29wZSI6Im1zLWF1dGg6YXBwczpjcmVhdGUgbXMtYXV0aDp1c2VyczpjcmVhdGUgbXMtYXV0aDpwcm9maWxlczpjcmVhdGUgbXMtYXV0aDpjbGllbnRzOmNyZWF0ZSIsImdyYW50cyI6eyJtcy1hdXRoIjpbImFwcHM6Y3JlYXRlIiwidXNlcnM6Y3JlYXRlIiwicHJvZmlsZXM6Y3JlYXRlIiwiY2xpZW50czpjcmVhdGUiXX0sImlhdCI6MTU1MzgwMTI3NCwiZXhwIjoxNTUzODA0ODc0LCJhdWQiOiJueGNkIiwiaXNzIjoibnhjZC1hdXRoIiwic3ViIjoidXJuOnVzZXI6NWM5NTQ1MGU1NWMwYmQwYjRiMGQxZmViIn0.u7c9tn4YUgyrkp3_OMF7KSN2bGGZimv-SCIh2ahyfsk"
}
401
Users ¶
Usuários são a entidade de autenticação da API. Eles são criados e suas permissões são definidas pela Nextcode.
Um usuário possui um login e senha que são utilizados para gerar um token de autenticação, que é, então, utilizado para obter um token de autorização, contendo as permissões daquele usuário.
Obter id_token ¶
Obter id_tokenPOST/login
Autentica um usuário através de login e senha. Recebe um ID Token que deve ser utilizado no cabeçalho Authorization
da api de autorização
O token tem duração de 1 hora.
Este token NÃO pode ser utilizado como token de autenticação para consumir APIs
Example URI
Headers
Content-Type: application/json
Body
{
"login": "usuario",
"password": "suasenha"
}
200
Body
{
"idToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ijk3OjZjOjVlOjk0OjhiOjdhOjI2OmY2OjQ2OjNjOmRkOmJkOjBjOjNiOmVhOjhmIn0.eyJzY29wZSI6Im9wZW5pZCIsInVzZXIiOnsiaWQiOiI1Yzk1NDUwZTU1YzBiZDBiNGIwZDFmZWIiLCJsb2dpbiI6InJqbXVuaG96IiwiZW1haWwiOiJyb2dlcmlvLmoubXVuaG96QGdtYWlsLmNvbSIsIm5hbWUiOiJSb2fDqXJpbyIsImxhc3ROYW1lIjoiTXVuaG96In0sImlhdCI6MTU1MzgwMTI3MiwiZXhwIjoxNTUzODA0ODcyLCJhdWQiOiJueGNkIiwiaXNzIjoibnhjZC1hdXRoIiwic3ViIjoidXJuOnVzZXI6NWM5NTQ1MGU1NWMwYmQwYjRiMGQxZmViIn0.ylwMwA0Wm4YeBqEvo2fCJqNayc0pYd1ug3Hf36w8Nq0"
}
401
Body
{
"status": 401,
"error": {
"code": "unauthorized",
"message": "incorrect login or password"
}
}
Obter auth_token ¶
Obter auth_tokenPOST/users/sessions
Gera um token de autorização contendo as permissões do usuário a partir de um ID Token gerado na api de autenticação.
O token tem duração de 1 hora e precisa ser renovado ao expirar refazendo o fluxo de autenticação.
Este token PODE ser utilizado para as APIs de consumo
Example URI
Headers
Authorization: Bearer [id_token]
200
Body
{
"authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ijk3OjZjOjVlOjk0OjhiOjdhOjI2OmY2OjQ2OjNjOmRkOmJkOjBjOjNiOmVhOjhmIn0.eyJzY29wZSI6Im1zLWF1dGg6YXBwczpjcmVhdGUgbXMtYXV0aDp1c2VyczpjcmVhdGUgbXMtYXV0aDpwcm9maWxlczpjcmVhdGUgbXMtYXV0aDpjbGllbnRzOmNyZWF0ZSIsImdyYW50cyI6eyJtcy1hdXRoIjpbImFwcHM6Y3JlYXRlIiwidXNlcnM6Y3JlYXRlIiwicHJvZmlsZXM6Y3JlYXRlIiwiY2xpZW50czpjcmVhdGUiXX0sImlhdCI6MTU1MzgwMTI3NCwiZXhwIjoxNTUzODA0ODc0LCJhdWQiOiJueGNkIiwiaXNzIjoibnhjZC1hdXRoIiwic3ViIjoidXJuOnVzZXI6NWM5NTQ1MGU1NWMwYmQwYjRiMGQxZmViIn0.u7c9tn4YUgyrkp3_OMF7KSN2bGGZimv-SCIh2ahyfsk"
}