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
Configurare lo startup di applicazioni server e client con .NET Aspire
Potenziare la ricerca su Cosmos DB con Full Text Search
Definire il metodo di rilascio in .NET Aspire
Esporre un server MCP con Azure API Management
Utilizzare DeepSeek R1 con Azure AI
Escludere alcuni file da GitHub Copilot
Path addizionali per gli asset in ASP.NET Core MVC
Testare il failover sulle region in Azure Storage
Creare una libreria CSS universale: Cards
Gestione CSS in Blazor con .NET 9
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Recuperare App Service cancellati su Azure
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Gli oggetti CallOut di Expression Blend 4.0
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform
- Sfruttare una CDN con i bundle di ASP.NET
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Utilizzare dati in formato XML in XAML


