Prima di creare un client, devi essere autenticato all’API Vantage; per maggiori dettagli, vedi Autenticazione.
Per creare un client, è necessario inviare una richiesta POST con l’intestazione Authorization = Bearer <access token> a {baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/ con i seguenti parametri nel body della richiesta:
| Parameter | Description |
|---|
clientId | L’identificatore del client. |
clientName | Il nome del client (ad es. il nome della tua app). |
allowOfflineAccess | Specifica se verrà generato un refresh token insieme all’access token, che l’applicazione può usare per aggiornare automaticamente l’access token senza intervento dell’utente. Impostato su False per impostazione predefinita. |
allowRememberConsent | Specifica se l’utente può scegliere di memorizzare le decisioni di consenso. Impostato su True per impostazione predefinita. |
backChannelLogoutSessionRequired | Specifica se è richiesto il meccanismo di Backchannel Logout. Impostato su True per impostazione predefinita. |
requireClientSecret | Specifica se è richiesto un client secret. Impostato su True per impostazione predefinita. |
requireConsent | Specifica se è richiesta una schermata di consenso. Impostato su False per impostazione predefinita. |
allowNoPkce | Specifica se è consentito lo schema di autenticazione Authorization Code Flow with Proof Key for Code Exchange (PKCE). Impostato su False per impostazione predefinita, consentendo solo lo schema di autenticazione Authorization Code Flow with Proof Key for Code Exchange (PKCE). |
allowedGrantTypes | Specifica i tipi di grant che possono essere utilizzati. |
allowedCorsOrigins | Specifica se viene utilizzato il meccanismo predefinito di condivisione delle risorse tra origini diverse (CORS). |
allowedScopes | Definisce l’insieme di risorse e dati utente che devono essere trasferiti nel token. Il valore dello scope deve essere esattamente “openid permissions publicapi.all”. |
postLogoutRedirectUris | Elenco degli URI consentiti verso cui reindirizzare dopo il logout. |
redirectUris | Elenco di siti web o URL di app autorizzati per i reindirizzamenti del token di autorizzazione. Sono consentiti i prefissi per l’URL: se il prefisso corrisponde, qualsiasi URL sarà consentito, ad esempio: [ “https://myDomain.”, “https://myApp.myDomain.com/oauth-signin.html” ]. |
accessTokenLifetime | Definisce il periodo durante il quale l’access token emesso consente l’accesso a Vantage. La durata predefinita di un access token è 24 ore. |
refreshTokenLifetime | Definisce il periodo assoluto a partire dall’emissione del primo access token durante il quale il refresh token emesso può essere utilizzato per rinnovare l’access token. La durata predefinita di un refresh token è 30 giorni. |
Importante! Quando si effettua l’autenticazione utilizzando Resource Owner Password Credentials, è necessario impostare il parametro allowRopc su TRUE. Nota che questo schema di autenticazione presuppone che l’utente invii le proprie credenziali all’applicazione; pertanto, si consiglia di utilizzare ROPC solo se viene autenticato un client riservato e considerato attendibile.
Esempio di richiesta:
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}'
]
}
La risposta del server conterrà una descrizione del client creato.
Ogni client può avere più secret. Questo consente al client di iniziare a utilizzare un nuovo secret alla scadenza di quello corrente, senza eliminarlo. Per impostazione predefinita, un client secret scade dopo sei mesi.
Per creare un secret, è necessario inviare una richiesta POST con l’intestazione Authorization = Bearer <access token> a {baseUrl}/api/adminapi2/v1/tenants/{tenantId}/clients/{clientId}/secrets/ con i seguenti parametri nel corpo della richiesta:
| Parameter | Description |
|---|
description | Una descrizione del client secret. Può essere un breve commento che aiuta a distinguere tra i diversi secret. Questo è un parametro facoltativo. |
start time | Specifica la data di inizio (attivazione) del secret. |
expiration | Specifica la data di scadenza del secret (in un intervallo compreso tra 1 giorno e 3 anni). Ad esempio, “2021-09-07T13:03:38.380Z”. Per impostazione predefinita, questa data è impostata esattamente a sei mesi dalla data di creazione del secret. |
Esempio di richiesta:
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}'
}
La risposta del server alla tua richiesta conterrà un client secret (value) e il relativo periodo di validità (startTime, expiration).
Il valore del client secret sarà disponibile solo al momento della creazione. Conservalo in un luogo sicuro per evitare di perdere l’accesso a un client tramite il suo client secret. In seguito potrai visualizzare solo i primi tre caratteri del valore del client secret (valueDisplay).