Quando ci troviamo a mantenere una organizzazione su Azure DevOps, può capitare che spendiamo una notevole quantità di tempo nel dare i giusti accessi alle persone: più l'organizzazione crescerà, più sarà il tempo investito in quest'attività, perciò diventa fondamentale gestire i permessi e gli accessi in modo automatizzato il prima possibile. Vediamo, per esempio, come aggiungere un utente ad un gruppo.
E' possibile recuperare l'identità di un utente tramite una semplice chiamata API e poche righe di script:
# Utente da ricercare: user="Matteo Tumiati" # Sostituiamo eventuali caratteri speciali per la ricerca: search_user=$(echo "$user" | sed 's/ /%20/g') # Impostiamo l'endpoint di Azure DevOps url="https://vssps.dev.azure.com/${organization}/_apis/identities?api-version=7.1&searchFilter=General&filterValue=${search_user}" # Effettuiamo la chiamata e ritorniamo lo userId userId=$(curl -s -u ":$SYSTEM_ACCESSTOKEN" -X GET "$url" | jq -r '.value[0].id')
In questo caso, la variabile userId conterrà l'identità dell'utente cercato. Volendo si può anche ricercare l'utente in modo più preciso, sfruttando per esempio un codice identificativo per Azure DevOps (qualora lo avessimo già a disposizione) o, più genericamente, un indirizzo email.
Ora possiamo aggiungere l'utente ad un gruppo:
# Gruppo a cui aggiungere l'utente groupId="00000000-0000-0000-0000-000000000000" # Impostiamo l'endpoint di Azure DevOps url="https://vsaex.dev.azure.com/${organization}/_apis/groupentitlements/${groupId}/members/${userId}?api-version=7.1" # Aggiungiamo l'utente curl -s -u ":$SYSTEM_ACCESSTOKEN" -X PUT "$url" -H "Content-Length: 0" -H "Content-Type: application/json" -d ""
In questo caso il gruppo ha un identificativo preimpostato, ma è chiaro come sfruttando lo stesso endpoint sia facile ottenere le informazioni e farne le query opportune per recuperare un gruppo, nello stesso modo in cui abbiamo recuperato l'utente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare una libreria CSS universale: Clip-path
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Centralizzare gli endpoint AI Foundry con Azure API Management
Recuperare gli audit log in Azure DevOps
Gestione dei nomi con le regole @layer in CSS
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Gestire il routing HTTP in Azure Container App
.NET Conference Italia 2024
Eliminare una project wiki di Azure DevOps
Managed deployment strategy in Azure DevOps
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestire progetti .NET + React in .NET Aspire
I più letti di oggi
- Disponibile la release finale di Moonlight 1.0
- domani su @aspitalia troverete un articolo speciale dedicato a Windows Phone 8: non ... https://aspit.co/wp-summit #WPSummit
- vuoi costruire applicazioni web in real time? non perdere il nostro speciale! https://aspit.co/aln #signalr #websockets #polling #aspnet
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare l'access modifier private protected in C# 7.2