Antes de criar um cliente, você precisa estar autenticado na API do Vantage. Consulte Autenticação para mais detalhes.
Para criar um cliente, você precisará enviar uma solicitação POST com o cabeçalho Authorization: Bearer <access token> para {baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/ com os seguintes parâmetros no corpo da requisição:
| Parâmetro | Descrição |
|---|
clientId | O identificador do cliente. |
clientName | O nome do cliente (por exemplo, o nome do seu app). |
allowOfflineAccess | Especifica se um token de atualização será gerado junto com o token de acesso, que o aplicativo pode usar para atualizar o token de acesso automaticamente sem intervenção do usuário. Definido como False por padrão. |
allowRememberConsent | Especifica se o usuário pode optar por armazenar decisões de consentimento. Definido como True por padrão. |
backChannelLogoutSessionRequired | Especifica se o mecanismo de Backchannel Logout é obrigatório. Definido como True por padrão. |
requireClientSecret | Especifica se um segredo do cliente é obrigatório. Definido como True por padrão. |
requireConsent | Especifica se uma tela de consentimento é necessária. Definido como False por padrão. |
allowNoPkce | Especifica se o esquema de autenticação Authorization Code Flow with Proof Key for Code Exchange (PKCE) é permitido. Definido como False por padrão, permitindo apenas o esquema de autenticação Authorization Code Flow with Proof Key for Code Exchange (PKCE). |
allowedGrantTypes | Especifica os tipos de concessão (grant types) que podem ser usados. |
allowedCorsOrigins | Especifica se o mecanismo padrão de compartilhamento de recursos entre origens (CORS) é usado. |
allowedScopes | Define o conjunto de recursos e dados do usuário que devem ser transferidos no token. O valor do escopo deve ser exatamente “openid permissions publicapi.all”. |
postLogoutRedirectUris | Lista de URIs permitidas para redirecionamento após o logout. |
redirectUris | Lista de sites ou URLs de apps permitidas para redirecionamentos do token de autorização. Prefixos são permitidos na URL. Se o prefixo corresponder, qualquer URL será permitida, por exemplo: [ “https://myDomain.”, “https://myApp.myDomain.com/oauth-signin.html” ]. |
accessTokenLifetime | Define o período durante o qual o token de acesso emitido permite o acesso do usuário ao Vantage. O tempo de vida padrão de um token de acesso é de 24 horas. |
refreshTokenLifetime | Define o período absoluto, a partir da emissão do primeiro token de acesso, durante o qual o token de atualização emitido pode ser usado para renovar o token de acesso. O tempo de vida padrão de um token de atualização é de 30 dias. |
Importante! Ao autenticar usando Resource Owner Password Credentials, você deve definir o parâmetro allowRopc como TRUE. Observe que esse esquema de autenticação pressupõe que o usuário envie suas credenciais para o aplicativo; portanto, recomenda-se usar ROPC apenas se um cliente confidencial confiável estiver autenticado.
Exemplo de solicitação:
curl --location --request POST "{baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/"
-H "accept: application/json" \
-H "Authorization: Bearer {token}"
{
"clientId": "{clientId}",
"clientName": "{clientName}",
"allowOfflineAccess": true,
"allowRememberConsent": true,
"backChannelLogoutSessionRequired": true,
"requireClientSecret": true,
"requireConsent": false,
"allowNoPkce": true,
"allowedGrantTypes": [
"{allowedGrantTypes}"
],
"allowedCorsOrigins": [
"{allowedCorsOrigins}"
],
"allowedScopes": [
"openid",
"permissions",
"publicapi.all"
]
"postLogoutRedirectUris": [
"{postLogoutRedirectUris}"
],
"redirectUris": [
"{redirectUris}"
]
}
curl --location --request POST '{baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/'
-H 'accept: application/json' \
-H 'Authorization: Bearer {token}'
{
'clientId': '{clientId}',
'clientName': '{clientName}',
'allowOfflineAccess': true,
'allowRememberConsent': true,
'backChannelLogoutSessionRequired': true,
'requireClientSecret': true,
'requireConsent': false,
'allowNoPkce': true,
'allowedGrantTypes': [
'{allowedGrantTypes}'
],
'allowedCorsOrigins': [
'{allowedCorsOrigins}'
],
'allowedScopes': [
'openid',
'permissions',
'publicapi.all'
]
'postLogoutRedirectUris': [
'{postLogoutRedirectUris}'
],
'redirectUris': [
'{redirectUris}'
]
}
A resposta do servidor conterá uma descrição do cliente criado.
Cada cliente pode ter vários segredos (secrets). Isso permite que o cliente comece a usar um novo segredo quando o atual expirar, sem precisar excluí-lo. Por padrão, um segredo de cliente expira após seis meses.
Para criar um secret, você precisará enviar uma requisição POST com o cabeçalho Authorization = Bearer <access token> para {baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/{clientId}/secrets/ com os seguintes parâmetros no corpo da requisição:
| Parameter | Description |
|---|
description | Uma descrição do segredo do cliente. Pode ser um breve comentário para ajudar você a diferenciar os segredos. Este é um parâmetro opcional. |
start time | Especifica a data de início do segredo. |
expiration | Especifica a data de expiração do segredo (entre 1 dia e 3 anos). Por exemplo, “2021-09-07T13:03:38.380Z”. Por padrão, essa data é definida para exatamente seis meses após a criação do segredo. |
Exemplo de requisição:
curl --location --request POST "{baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/{clientId}/secrets/"
-H "accept: application/json" \
-H "Authorization: Bearer {token}"
-H "Content-Type: application/json-patch+json" \
-d
{
"description": "{description}",
"startTime": "{startTime}"
"expiration": "{expiration}"
}
curl --location --request POST '{baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/{clientId}/secrets/'
-H 'accept: application/json' \
-H 'Authorization: Bearer {token}'
-H 'Content-Type: application/json-patch+json' \
-d
{
'description': '{description}',
'startTime': '{startTime}'
'expiration': '{expiration}'
}
A resposta do servidor à sua solicitação conterá um segredo do cliente (value) e seu período de validade (startTime, expiration).
O valor do segredo do cliente só estará disponível no momento em que ele estiver sendo criado. Armazene-o em um local seguro para evitar perder o acesso ao cliente por meio desse segredo. Posteriormente, você só poderá visualizar os três primeiros caracteres do valor do segredo do cliente (valueDisplay).