Class: OAuth2Client

@nginstack/engine/lib/oauth2/OAuth2Client~ OAuth2Client


new OAuth2Client(options)

Classe utilizada para autenticação de usuários e sistemas em autorizadores externos utilizando o protocolo "OAuth 2.0".

Parameters:
Name Type Description
options OAuth2ClientConstructorOptions

Parâmetros para construção do cliente.

Example
const OpenIdProvider = require('@nginstack/engine/lib/oidc/OpenIdProvider');
const provider = OpenIdProvider.fromConfig(99999999);
const client = provider.newOAuth2Client();
const authData = client.getDeviceAuthorizationCode(); // Device Flow
authData.verificationUri

Methods


<static> encryptClientSecret(secret)

Encripta o segredo do cliente para ser armazenado na base de dados de forma mais segura. O valor encriptado pode ser informado diretamente para as APIs do sistema de OAuth2 e OpenID Connect, sendo descriptografado internamente de forma automática.

Parameters:
Name Type Description
secret string

Segredo do cliente.

Returns:

Segredo do cliente encriptado.

Type
string

exchangeClientCredentials( [scopes])

Obtém um token de acesso utilizando apenas as credenciais do próprio cliente.

Parameters:
Name Type Argument Description
scopes string | Array.<string> <optional>

Escopos de autorização do novo token.

Returns:

Dados sobre o token gerado.

Type
TokenResponse

exchangeCode(accessCode, redirectUri [, codeVerifier])

Substitui o código de acesso enviado pelo autorizador pelo token de acesso.

Quando utilizado o fluxo de código de autorização (responseTypes igual a 'code'), o autorizador envia uma requisição com o código de acesso para a URL informada em redirectUri, após a coleta e validação das credenciais. Este método permite trocar esse código de acesso provisório pelo token de acesso final.

Parameters:
Name Type Argument Description
accessCode string

Código de acesso recebido no primeiro acesso.

redirectUri string

URL de redirecionamento. Deve ser informada a mesma URL passada no primeiro acesso caso contrário o provedor de identidade retorna um erro.

codeVerifier string <optional>

Ao utilizar o fluxo de código de autorização com o uso de PKCE, esse parâmetro permite incluir na requisição de solicitação do token o verificador utilizado na geração do desafio enviado anteriormente.

Returns:

Dados sobre o token gerado.

Type
TokenResponse

exchangeDeviceAuthorization(deviceAuthResponse [, timeout])

Consulta o autorizador para saber se o usuário concluiu o processo de login. Quando o login é realizado pelo usuário no navegador, o autorizador responde a requisição enviada por este método com o token de acesso.

Parameters:
Name Type Argument Description
deviceAuthResponse DeviceAuthorizationResponse

Objeto retornado pelo método 'getDeviceAuthorization'.

timeout number <optional>

Quantidade de tempo, em milissegundos, que o processo deve esperar pela autenticação do usuário na página do autorizador. Se não for informado será considerado o valor da propriedade 'expires_in' do objeto retornado pela método 'getDeviceAuthorization'.

Returns:

Dados sobre o token gerado.

Type
TokenResponse

exchangePassword(username, password [, scopes])

Obtém um token de acesso com base nas credenciais do usuário, correspondente ao fluxo 'Resource Owner'.

Parameters:
Name Type Argument Description
username string

Identificador do usuário.

password string

Senha do usuário.

scopes string | Array.<string> <optional>

Escopos de autorização do novo token.

Returns:

Dados sobre o token gerado.

Type
TokenResponse

exchangeRefreshToken(refreshToken [, scopes])

Solicita um novo token de acesso com base em um token de renovação, caso o token anterior tenha expirado.

Parameters:
Name Type Argument Description
refreshToken string

Token utilizado para obtenção de novos tokens de acesso.

scopes string | Array.<string> <optional>

Novos valores de escopo, caso seja necessário ajustar os escopos do token anterior.

Returns:

Dados sobre o token gerado.

Type
TokenResponse

getAuthorizationUri( [options])

Este método realiza a montagem da URL do autorizador que deve ser utilizada no redirecionamento do usuário, para que a autenticação seja realizada.

Parameters:
Name Type Argument Description
options AuthorizationRequestOptions <optional>

Parâmetros para construção da URL de autorização.

Returns:

URL montada com os parâmetros informados.

Type
string

getCodeChallenge(verifier)

Gera um desafio com base em um verificador (string aleatória), para quando é utilizado o fluxo de código de autorização com o uso de PKCE.

A geração do desafio consiste em aplicar: Base64(SHA256(verifier))

Parameters:
Name Type Description
verifier string

String aleatória que servirá como verificador do desafio.

Returns:

Desafio gerado a partir do verificador.

Type
string

getCodeVerifier()

Gera um verificador (string aleatória), para quando for utilizado o fluxo de código de autorização com o uso de PKCE.

Returns:

String aleatória gerada para ser utilizada como verificador.

Type
string

getDeviceAuthorization( [scopes])

Retorna as informações necessárias para iniciar o fluxo de autorização de dispositivo, como a URL que o usuário deve acessar.

Parameters:
Name Type Argument Description
scopes string | Array.<string> <optional>

Escopos de autorização que terão acesso solicitado.

Returns:

Objeto com os detalhes retornados pelo autorizador sobre esse processo de autorização.

Type
DeviceAuthorizationResponse

introspect(accessToken)

Obtém detalhes sobre um token emitido previamente.

Parameters:
Name Type Description
accessToken string

Token de acesso que se deseja obter detalhes.

Returns:

Objeto com detalhes sobre o token.

Type
TokenIntrospectionResponse

revoke(token [, tokenType])

Revoga um token emitido previamente. Podem ser revogados tokens de acesso ou tokens de renovação conforme descrito na especificação.

Parameters:
Name Type Argument Description
token string

Token de acesso ou de renovação.

tokenType string <optional>

Tipo do token informado. Aceita os valores 'refresh' ou 'access'. Caso não seja informado será considerado o valor 'refresh'