QR Code e Push

Essa sessão destina-se a documentar a inegração dos métodos de autenticação por QR Code e notificação push.

Fluxograma

Esse método de autenticação segue o seguinte esquema:

Ambientes

API

Início da autenticação

POST {{BASE_URL}}/oauth/start

Headers

Name
Type
Description

Content-Type

string

application/json

Request Body

Name
Type
Description

client_id

string

Deve ter a identificação da aplicação.

client_secret

string

Deve ter a senha da aplicação

username (opcional)

string

Identificação do usuário por meio de CPF ou CNPJ.

scope

string

Escopo da autenticação. (ver lista de escopos)

lifetime

integer

Tempo de vida desejado para o token a ser gerado em segundos. Para pessoas físicas não deve ultrapassar (7 dias), e para pessoas jurídicas este limite será de (30 dias)

curl --location '{{BASE_URL}}/oauth/start' \
--header 'Content-Type: application/json' \
--data '{
    "client_id":"myclient",
    "client_secret":"mysecret",
    "scope":"authentication_session",
    "callback_url": "https://minha-aplicacao.com.br/auth/callback",
    "lifetime": 36000
}'

Response Body

Name
Type
Description

challenge

string

Desafio a ser informado no app no caso de notificação push

client_name

string

Nome aplicação do client_id informado

short_token

string

Token de identificação do fluxo de autenticação

ws_token

string

Token para conexão no websocket. Só é criado caso a aplicação possua permissão.

can_notify

boolean

Informa se a aplicação possui permissão para enviar notificação push.

notified

boolean

Informa se a aplicação conseguiu notificar o usuário via push. Só retorna verdadeiro caso o username tenha sido informado e a aplicação possua permissão para enviar notificação push.

qr_code

string

Código que permite a aplicação que está integrando gerar o qr code.

environment

string

Identificador do ambiente em que foi realizada a autenticação.

auth_ttl

integer

Tempo de vida em segundos do processo de autenticação.

{
    "challenge": "06",
    "client_name": "Minha Aplicacao",
    "short_token": "68113334cb92acb46b91b8a3",
    "ws_token": null,
    "notified": false,
    "can_notify": false,
    "qr_code": "birdid://auth-request/68113334cb92acb46b91b8a3?env=vault_dev",
    "envionment": "vault_dev",
    "auth_ttl": 300
}

Envio de notificação

Por padrão, as aplicações não possuem permissão para enviar notificação. Essa permissão deve ser solicitada junto ao comercial da Soluti.

POST {{BASE_URL}}/oauth/notify

Headers

Name
Type
Description

Content-Type

string

application/json

Request Body

Name
Type
Description

username

string

Identificação do usuário por meio de CPF ou CNPJ.

short_token

string

Propriedade recebida da chamada /oauth/start

curl --location '{{BASE_URL}}/oauth/notify' \
--header 'Content-Type: application/json' \
--data '{
    "username": "64733822312",
    "short_token":"68113334cb92acb46b91b8a3"
}'

Response Body

Name
Type
Description

challenge

string

Desafio a ser informado no app no caso de notificação push

client_name

string

Nome aplicação do client_id informado

short_token

string

Token de identificação do fluxo de autenticação

ws_token

string

Token para conexão no websocket. Só é criado caso a aplicação possua permissão.

notified

boolean

Informa se a aplicação conseguiu notificar o usuário via push. Só retorna verdadeiro caso o username tenha sido informado e a aplicação possua permissão para enviar notificação push.

qr_code

string

Código que permite a aplicação que está integrando gerar o qr code.

callback_url

string

URL que será chamada assim que o usuário confirmar a autenticação.

{
    "challenge": "06",
    "client_name": "Minha Aplicacao",
    "short_token": "68113677cb92acb46b91b8a4",
    "ws_token": null,
    "notified": true,
    "qr_code": "birdid://auth-request/68113677cb92acb46b91b8a4?env=vault_dev"
}

Callback de autenticação

Assim que o usuário autoriza a autenticação no app, o sistema notifica a aplicação integrada via webhook, fornecendo um token temporário JWT para obtenção do token de acesso.

POST {{CALLBACK_URL}}

Headers

Name
Type
Description

Content-Type

string

application/json

curl --location '{{CALLBACK_URL}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaG9ydFRva2VuIjoiNjgwYTljNzcxMGRiZDM3ODM0YmQ1NTYzIiwiaWF0IjoxNzQ1NTI1OTUwLCJleHAiOjE3NDU1MjYxODB9.DRqTYJzsvGdgz0EQlayv21RzsasYq-w3z350CNfJsVc",
    "short_token": "68113677cb92acb46b91b8a4"
}'

Request Body

Name
Type
Description

token

string

Token JWT que deverá ser utilizado para obtenção do token de acesso.

short_token

string

Token de identificação do fluxo de autenticação

Obtenção do token de acesso

GET {{BASE_URL}}/oauth/token

Headers

Name
Type
Description

Content-Type

string

application/json

Authorization

string

Bearer token

curl --location '{{BASE_URL}}/oauth/token' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token'

Response Body

Name
Type
Description

access_token

string

Token de acesso aos serviços da Public API.

expires_in

integer

Tempo para expiração do access token.

token_type

string

Bearer.

scope

string

Escopo da autenticação.

username

string

Identificação do usuário por meio de CPF ou CNPJ.

{
    "access_token": "0c95bfe4d60a3c9f1ac66fade5111849950c4297",
    "expires_in": 36000,
    "token_type": "bearer",
    "scope": "authorization_session"
    "username": "64733822312"
}

Last updated

Was this helpful?