Guida all'autenticazione
Le richieste a tutti gli endpoint API Bluebeam devono essere autenticate. Le app si connettono a Bluebeam tramite OAuth 2.0. Questa guida ti mostra come ottenere un access_token per autenticarti, per conto di un utente, nella tua app.
Prima di avviare il processo di autenticazione, assicurati di effettuare le seguenti operazioni:
-
Registra la tua App
-
Fornire un URI di reindirizzamento
-
Salva il tuo ID cliente e segreto
Se non hai ancora eseguito quanto sopra, visita la pagina Introduzione nel Bluebeam Developer Portal per saperne di più.
Esistono URL di base specifici per Area che si Applica a tutti gli endpoint:
-
Stati Uniti: https://api.bluebeam.com
Ad esempio, https://api.bluebeam.com/publicapi/v1/sessions negli Stati Uniti sarebbe https://api.bluebeamstudio.com.au/publicapi/v1/sessions in Australia.
Flusso del codice di autorizzazione
Utilizza l'autenticazione tramite codice di autorizzazione solo quando la tua app può mantenere un segreto (ad esempio, se l'app viene eseguita su un server web da te controllato). Assicurati di trattare client_secret come tratteresti una password.
Il primo passo è richiedere l'autorizzazione dell'utente per la tua App. L'utente verrà reindirizzato all'endpoint di autorizzazione, dove gli verrà chiesto di accedere con le credenziali dello Studio e di concedere l'autorizzazione alla tua app. Per fare ciò, effettuare una richiesta GET all'endpoint di autorizzazione con i seguenti parametri.
Endpoint di autorizzazione
https://api.bluebeam.com/oauth2/authorize
Parametri di richiesta
I parametri devono essere passati in una stringa di query.
|
Nome |
Descrizione |
|---|---|
|
|
Deve essere impostato su |
|
|
ID cliente ricevuto durante il processo di registrazione dell'app (vedi Le mie app) |
|
|
URI di reindirizzamento specificato durante il processo di registrazione dell'app (vedi Le mie app) |
|
|
Applicabile solo agli endpoint Studio. Consultare la tabella seguente per un elenco degli ambiti degli endpoint di Studio (separati da spazi). |
|
|
Stringa casuale generata dalla tua app. Studio restituirà questo stato in una callback al tuo |
Ambiti per endpoint di Studio
|
Nome dell'ambito |
Descrizione |
|---|---|
|
|
Accesso in sola lettura ai progetti Studio e alle sessioni Studio di un utente per la creazione di report |
|
|
Accesso completo ai progetti Studio e alle sessioni Studio di proprietà dell'utente |
|
|
Accedi ai lavori automatizzati nei progetti Studio |
|
|
Richiedi questo ambito per ricevere un refresh_token |
Aggiorna i token
Assicurati di richiedere l'ambito 'offline_access' nella tua richiesta per ricevere indietro un refresh_token. Per maggiori informazioni sui refresh_token, vedere il passaggio 4 di seguito.
Quando scegli gli ambiti, considera a quali dati la tua app deve avere accesso. Per ridurre al minimo i rischi per la sicurezza, si prega di richiedere gli ambiti minimi necessari.
Esempio di richiesta
GET https://api.bluebeam.com/oauth2/authorize?response_type=code&client_id=b5f9fc7c-60dd-469f-a21e-3f4a7ceb874b&redirect_uri=http://myserver.com&scope=full_prime offline_access jobs&state=myteststate
Esperienza utente
Gli utenti verranno indirizzati alla pagina di accesso di Bluebeam.
Dopo aver effettuato l'accesso, l'utente può selezionare Consenti accesso per concedere alla tua app l'accesso ai suoi dati.
Se l'utente concede l'accesso alla tua app selezionando Consenti accesso, riceverai una callback all'URL specificato da redirect_uri nella tua richiesta originale. Se il callback ha esito positivo, includerà un code di autorizzazione che dovrai scambiare con un access_token. Assicurati di convalidare che lo state nella risposta corrisponda allo stato inviato nella richiesta originale. Se si è verificato un errore, riceverai il reindirizzamento con il parametro error .
Parametri di risposta
I parametri vengono ricevuti come parte della stringa di query.
|
Nome |
Descrizione |
|---|---|
|
|
Codice di autorizzazione temporaneo che deve essere scambiato con un |
|
|
Stringa casuale generata dalla tua app. Bluebeam restituirà questo stato in una callback al tuo |
|
|
Questo campo contiene un codice di errore se la richiesta di autorizzazione non riesce. Consultare i codici di risposta HTML comuni per gli errori di autorizzazione e autenticazione. |
Esempio di risposta
https://www.myserver.com/?code=acf3cabd-08c1-44db-88a9-4f785ec7c6ec&state=myteststate
Assicurarsi che il codice di autorizzazione non sia visibile all'utente come parte del processo di reindirizzamento.
Il codice di autorizzazione è valido solo per 5 minuti. Per un elenco delle durate del codice e del token, vedere Scadenza del token .
Ora che hai ricevuto il code di autorizzazione, il passo successivo è scambiarlo con un access_token da Bluebeam. Per fare ciò, invia una richiesta POST all'endpoint Token con i parametri indicati di seguito.
Endpoint token
https://api.bluebeam.com/oauth2/token
Parametri di richiesta
I parametri devono essere codificati in formato.
|
Nome |
Descrizione |
|---|---|
|
|
Deve essere impostato su |
|
|
Codice di autorizzazione restituito nel passaggio precedente |
|
|
ID cliente ricevuto durante il processo di registrazione dell'app (vedi Le mie app) |
|
|
Chiave privata client ricevuta durante il processo di registrazione dell'app (vedi Le mie app) |
|
|
URI di reindirizzamento specificato durante il processo di registrazione dell'app (vedi Le mie app) |
|
|
Includi ambiti separati da spazi |
esempio cURL
curl [https://api.bluebeam.com/oauth2/token](https://api.bluebeam.com/oauth2/token) \
-d grant_type=authorization_code \
-d code={code returned from previous step} \
-d redirect_uri={your redirect_uri} \
-d client_id={your client_id} \
-d client_secret={your client_secret} \
-d scope= offline_access {your requested scopes} \
-X POST
Esempio di risposta
{
"token_type":"Bearer",
"expires_in":3600,
"access_token":"eyJraWQiOiIybEczWnV2Q1pHRDFQX0FYclk4U0YyVVdmU2x3WHFpNWxZcUFzaHc4M05rIiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULjJ0Ml9nQWtxc2RvcDFWcWR1ajdLVUZwbXdNT1ZvU1VxcmZWVm5TOUZuMU0iLCJpc3MiOiJodHRwczovL3NpZ25pbi5ibHVlYmVhbS5jb20vb2F1dGgyL2F1c2JlcGh2azBlYkk3T09UNHg3IiwiYXVkIjoiYXBpOi8vYmItYWNtIiwiaWF0IjoxNzA4OTcwMzM2LCJleHAiOjE3MDg5NzM5MzYsImNpZCI6IjBvYWc2aGFjYWhnRUtqM0loNHg3IiwidWlkIjoiMDB1YngyeThtMDlwelVKRms0eDciLCJzY3AiOlsiZnVsbF9wcmltZSJdLCJhdXRoX3RpbWUiOjE3MDg5NzAzMTcsInN1YiI6InRvcnlhZGFtc0BwbS5tZSIsImJiaWQiOiJkNzE3MGZmYy03ZjlmLTQxZjYtOTY2ZS0xOTg1NTJlNzQwOTAifQ.S8m-cIfq8m19GtJ67skC8WM4bMWvJbAAr74A7g3HrUmH66M1_MN4MaDWjgcYjNFOI1zWsiZ5qm1HODLYY92lgUfzGuiYnkvpiJEKBtIUzLec2E2uEGE5HuW6FbyiX_SdGnSKeHlTr_FfiWGcpTYF816rI6q72kFm2J_3pKA-z_6REkNhI7qouRDRIHqT88tOE9KcjrF8_HsRAuixYAOlcGoVq3rvupvNVVaekoLyGiGWovXdJ-Wrx-1pKo0r7px2_Y8ew9OWEgYCX0u8pQvvPB6HAfF8dNCGTz_jFw9MbItu70rIniDoycILZKNxOcdKTLsCK7AC5doBcg9dV0OrHQ",
"scope":"full_user offline_access",
"refresh_token":"f5Mj16b7eVXwlY3Axc7TH2oEG_FPV1BrY05ht0uin6B"
}
Parametri di risposta
|
Nome |
Descrizione |
|---|---|
|
|
Questo sarà sempre "Portatore" |
|
|
Tempo, in secondi, fino alla scadenza del token |
|
|
Token portatore utilizzato per effettuare richieste per conto dell'utente |
|
|
Può essere scambiato con un nuovo access_token e refresh_token senza richiedere all'utente di accedere nuovamente |
|
|
Elenco degli ambiti richiesti separati da spazi |
Una volta ricevuto un access_token, puoi utilizzarlo per accedere all'API. Per utilizzare un access_token, includilo nell'intestazione Authorization:
Authorization: Bearer {a valid access_token}
Quando si invia l'intestazione dell'autorizzazione, assicurarsi che la "B" di "Bearer" sia scritta in maiuscolo. Se "Portatore" non è scritto in maiuscolo, verrà visualizzato un errore.
Token di accesso
Un access_token è la stringa effettiva che consente di effettuare richieste per conto dell'utente. Ogni richiesta all'API Bluebeam deve includere un access_token valido.
Ogni access_token è valido per 60 minuti. Dopo la scadenza di un access_token , è possibile emetterne access_token nuovo senza richiedere all'utente di effettuare nuovamente l'accesso, scambiando un refresh_token valido.
Aggiorna i token
Lo scopo dei token di aggiornamento
I token di aggiornamento rappresentano un modo comodo e sicuro per effettuare richieste autenticate all'API Bluebeam senza richiedere agli utenti di effettuare l'accesso per ogni richiesta.
I token di aggiornamento vengono sempre scambiati con 1) un access_token della durata di 1 ora e 2) un nuovo refresh_token che rimarrà valido finché verrà utilizzato almeno una volta ogni 7 giorni.
In teoria, una volta che un utente concede manualmente l'accesso nel passaggio 1, è possibile scambiare continuamente token di aggiornamento validi con token di accesso, in modo che l'utente non debba più autorizzare manualmente, a condizione che si scambino token di aggiornamento almeno una volta ogni 7 giorni.
Per ottenere il tuo primo refresh_token, ti consigliamo di richiedere l'ambito offline_access nel passaggio 1, in modo da ricevere anche un refresh_token.
Scambia il tuo refresh_token con un nuovo access_token entro 3600 secondi dall'ottenimento dell'ultimo access_token. Quando si scambia un refresh_token con un access_token, viene emesso un nuovo refresh_token .
A differenza access_token, che scade dopo 1 ora, un refresh_token rimane valido indefinitamente, purché venga utilizzato almeno una volta ogni 7 giorni. Un refresh_token non sarà più valido se non verrà utilizzato entro 7 giorni.
Conservare il refresh_token crittografato e in un luogo sicuro. Se un refresh_token viene perso o è scaduto, sarà necessario chiedere agli utenti di autorizzarlo nuovamente dall'inizio del flusso OAuth.
Per scambiare un refresh_token con un nuovo access_token e refresh_token, effettuare una richiesta POST all'endpoint Token:
Endpoint token
https://api.bluebeam.com/oauth2/token
Nell'intestazione, includere una stringa codificata in base64 di "{your client_id}:{your client_scret}" – Nota: i due punti devono essere presenti senza spazi. Vedi l'esempio di seguito.
Parametri di richiesta
I parametri devono essere codificati in formato.
|
Nome |
Descrizione |
|---|---|
|
|
Deve essere impostato su |
|
|
Deve essere impostato sul valore restituito durante la chiamata di autorizzazione |
esempio cURL
curl [https://api.bluebeam.com/oauth2/token](https://api.bluebeam.com/oauth2/token) \
-H Content-Type: application/x-www-form-urlencoded \
-H Authorization: Basic {base64 encoded string of client_id:client_secret} \
-d grant_type=refresh_token \
-d refresh_token={your refresh_token} \
-X POST
Tratta refresh_token come una password. Dovrebbe essere conservato in uno stato crittografato e in un luogo sicuro.
Revoca dei token di aggiornamento
I token di aggiornamento possono essere revocati. Quando un refresh_token viene revocato, gli utenti dovranno autorizzarlo nuovamente dopo la scadenza dell'access_token corrente.
Scadenza del token
-
I codici di autorizzazione scadono dopo 5 minuti.
-
I token di accesso scadono dopo 60 minuti.
-
I token di aggiornamento scadono se non vengono utilizzati almeno una volta ogni 7 giorni.
Errori di autorizzazione e autenticazione
Fateci sapere che tipo di errori ricevete e vi aiuteremo a risolverli.
Codici di risposta HTML comuni
|
Codice HTTP |
Messaggio |
Definizione |
|---|---|---|
|
200 |
OK |
La richiesta è andata a buon fine. |
|
201 |
Creato |
La richiesta ha avuto successo e ha portato alla creazione di nuove risorse. |
|
204 |
Nessun contenuto |
Il server ha soddisfatto la richiesta e non ha bisogno di restituire un entity-body. |
|
400 |
Brutta richiesta |
La richiesta non è stata compresa a causa di una sintassi non corretta. |
|
401 |
Non autorizzato |
La richiesta richiede l'autenticazione dell'utente. Se hai ricevuto questo messaggio dopo aver passato un access_token, prova a ottenere un nuovo access_token. Se ricevi ancora un 401, controlla gli ambiti. Se continui a ricevere un messaggio 401, contatta l'assistenza all'indirizzo integrations@bluebeam.com. |
|
403 |
Vietato |
Il server ha compreso la richiesta, ma si rifiuta di soddisfarla. |
|
404 |
Non trovato |
Il server non ha trovato nulla che corrisponda al Request-URI. |
|
409 |
Conflitto |
La richiesta non può essere completata a causa di un conflitto con lo stato attuale della risorsa. |
Vedi anche:
Risorse
Revu 21
Portale per sviluppatori
Portale per sviluppatori