Back to top

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:

  1. O usuário realiza o login através da api de autenticação

  2. 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

  3. 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

  4. 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 atual
GET/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

GET /me
Request
HideShow
Headers
Authorization: Bearer [auth-token ou id-token]
Response  200
HideShow
Body
{
  "id": "5c95450e55c0bd0b4b0d1feb",
  "login": "rjmunhoz",
  "email": "rogerio.j.munhoz@gmail.com",
  "name": "Rogério",
  "lastName": "Munhoz"
}
Response  200
HideShow
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 apps
GET/apps

Útil para consultar quais as aplicações e escopos disponíveis

Example URI

GET /apps
Response  200
HideShow
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 client
POST/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

POST /clients
Request
HideShow
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']
}
Response  201
HideShow
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=="
}
Response  422
HideShow
Headers
Content-Type: application/json
Body
{
  "status": 422,
  "error": {
    "code": "unprocessable_entity",
    "message": "'name' is required, 'grants' is required"
  }
}
Response  401
HideShow
Body
{
  "status": 401,
  "error": {
    "code": "unauthorized",
    "message": "user does not have following permissions: heimdall:clients:create"
  }
}

Obter auth_token

Obter auth_token
POST/clients/{client_id}/sessions

Gera um token de autenticação contendo as permissões do client

Example URI

POST /clients/xpto/sessions
URI Parameters
HideShow
client_id
string (required) Example: xpto

ID do client que deve ser passado

Request
HideShow
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#"
}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ijk3OjZjOjVlOjk0OjhiOjdhOjI2OmY2OjQ2OjNjOmRkOmJkOjBjOjNiOmVhOjhmIn0.eyJzY29wZSI6Im1zLWF1dGg6YXBwczpjcmVhdGUgbXMtYXV0aDp1c2VyczpjcmVhdGUgbXMtYXV0aDpwcm9maWxlczpjcmVhdGUgbXMtYXV0aDpjbGllbnRzOmNyZWF0ZSIsImdyYW50cyI6eyJtcy1hdXRoIjpbImFwcHM6Y3JlYXRlIiwidXNlcnM6Y3JlYXRlIiwicHJvZmlsZXM6Y3JlYXRlIiwiY2xpZW50czpjcmVhdGUiXX0sImlhdCI6MTU1MzgwMTI3NCwiZXhwIjoxNTUzODA0ODc0LCJhdWQiOiJueGNkIiwiaXNzIjoibnhjZC1hdXRoIiwic3ViIjoidXJuOnVzZXI6NWM5NTQ1MGU1NWMwYmQwYjRiMGQxZmViIn0.u7c9tn4YUgyrkp3_OMF7KSN2bGGZimv-SCIh2ahyfsk"
}
Response  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_token
POST/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

POST /login
Request
HideShow
Headers
Content-Type: application/json
Body
{
  "login": "usuario",
  "password": "suasenha"
}
Response  200
HideShow
Body
{
  "idToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ijk3OjZjOjVlOjk0OjhiOjdhOjI2OmY2OjQ2OjNjOmRkOmJkOjBjOjNiOmVhOjhmIn0.eyJzY29wZSI6Im9wZW5pZCIsInVzZXIiOnsiaWQiOiI1Yzk1NDUwZTU1YzBiZDBiNGIwZDFmZWIiLCJsb2dpbiI6InJqbXVuaG96IiwiZW1haWwiOiJyb2dlcmlvLmoubXVuaG96QGdtYWlsLmNvbSIsIm5hbWUiOiJSb2fDqXJpbyIsImxhc3ROYW1lIjoiTXVuaG96In0sImlhdCI6MTU1MzgwMTI3MiwiZXhwIjoxNTUzODA0ODcyLCJhdWQiOiJueGNkIiwiaXNzIjoibnhjZC1hdXRoIiwic3ViIjoidXJuOnVzZXI6NWM5NTQ1MGU1NWMwYmQwYjRiMGQxZmViIn0.ylwMwA0Wm4YeBqEvo2fCJqNayc0pYd1ug3Hf36w8Nq0"
}
Response  401
HideShow
Body
{
  "status": 401,
  "error": {
    "code": "unauthorized",
    "message": "incorrect login or password"
  }
}

Obter auth_token

Obter auth_token
POST/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

POST /users/sessions
Request
HideShow
Headers
Authorization: Bearer [id_token]
Response  200
HideShow
Body
{
  "authToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ijk3OjZjOjVlOjk0OjhiOjdhOjI2OmY2OjQ2OjNjOmRkOmJkOjBjOjNiOmVhOjhmIn0.eyJzY29wZSI6Im1zLWF1dGg6YXBwczpjcmVhdGUgbXMtYXV0aDp1c2VyczpjcmVhdGUgbXMtYXV0aDpwcm9maWxlczpjcmVhdGUgbXMtYXV0aDpjbGllbnRzOmNyZWF0ZSIsImdyYW50cyI6eyJtcy1hdXRoIjpbImFwcHM6Y3JlYXRlIiwidXNlcnM6Y3JlYXRlIiwicHJvZmlsZXM6Y3JlYXRlIiwiY2xpZW50czpjcmVhdGUiXX0sImlhdCI6MTU1MzgwMTI3NCwiZXhwIjoxNTUzODA0ODc0LCJhdWQiOiJueGNkIiwiaXNzIjoibnhjZC1hdXRoIiwic3ViIjoidXJuOnVzZXI6NWM5NTQ1MGU1NWMwYmQwYjRiMGQxZmViIn0.u7c9tn4YUgyrkp3_OMF7KSN2bGGZimv-SCIh2ahyfsk"
}

Generated by aglio on 05 Jun 2019