Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Servizi di Azure DevOps
Azure DevOps Services supporta sia progetti privati che pubblici. I progetti privati limitano l'accesso agli utenti autenticati con autorizzazioni esplicite. I progetti pubblici consentono agli utenti non membri di visualizzare il contenuto del progetto in uno stato di sola lettura.
Un utente non membro può essere uno dei seguenti:
- Anonimo: non autenticato in Azure DevOps Services
- Pubblico: autenticato in Azure DevOps Services ma non membro dell'organizzazione
Gli utenti non membri visualizzano le stesse visualizzazioni degli utenti autenticati, ma Azure DevOps nasconde o disabilita funzionalità non pubbliche, ad esempio impostazioni, azioni e operazioni di compilazione della coda.
Importante
Solo le organizzazioni con i criteri Consenti progetto pubblico già abilitati possono creare progetti o modificare la visibilità di un progetto in pubblico. I criteri non sono più disponibili per le organizzazioni che non lo usano già. Microsoft consiglia di usare GitHub per tutte le esigenze del progetto pubblico.
Decidere se rendere visibile un'estensione agli utenti non membri
Gli sviluppatori di estensioni possono rendere disponibile tutto o parte dell'estensione agli utenti non membri. Questi utenti possono usare l'estensione solo all'interno di progetti pubblici. Se si sceglie di non rendere disponibile l'estensione agli utenti non membri, non sono necessarie modifiche e la decisione non ha alcun impatto sui membri che usano l'estensione all'interno di progetti pubblici.
Usare questo elenco di controllo per decidere se è necessario rendere disponibile l'estensione per gli utenti non membri:
- L'estensione presenta i dati rilevanti per gli utenti non membri
- L'estensione contribuisce con funzionalità a livello di progetto
- L'estensione contribuisce alle aree di prodotto a cui gli utenti non membri possono accedere
- L'estensione non estende o si basa sulle funzionalità a cui gli utenti non membri non possono accedere, ad esempio il servizio dati di estensione o alcune API REST di Azure DevOps Services. Per altre informazioni, vedere la sezione Limitazioni .
Configurare la visibilità dei contributi
Per impostazione predefinita, Azure DevOps mostra i contributi solo ai membri dell'organizzazione. Per dare visibilità agli utenti non membri su un contributo, impostare l'attributo restrictedTo su tale contributo. Il valore è una matrice di stringhe che elenca i tipi di utente che devono visualizzare il contributo. I valori possibili includono:
-
member: utente autenticato membro dell'organizzazione -
public: un utente autenticato che non è membro dell’organizzazione -
anonymous: utente non autenticato
Rendere visibile un hub agli utenti anonimi, pubblici e membri
{
"contributions": [
{
"id": "my-hub",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-code-web.code-hub-group"
],
"restrictedTo": [
"member",
"public",
"anonymous"
],
"properties": {
...
}
}
]
}
È anche possibile impostare la visibilità predefinita per tutti i contributi nell'estensione impostando l'attributo nella radice del manifesto dell'estensione restrictedTo . È quindi possibile eseguire l'override di questa impostazione predefinita per i singoli contributi.
Apportare ogni contributo, ad eccezione di uno, visibile a tutti gli utenti
{
"id:": "my-extension",
"name": "My Extension",
"version": "1.0.0",
...
"restrictedTo": [
"anonymous",
"public",
"member"
],
"contributions": [
{
"id": "my-member-only-widget",
"type": "ms.vss-dashboards-web.widget",
"restrictedTo": [
"member"
],
"properties": {
...
}
},
{
"id": "my-hub",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-code-web.code-hub-group"
],
"properties": {
...
}
},
{
"id": "my-second-hub",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-work-web.work-hub-group"
],
"properties": {
...
}
}
]
}
Informazioni sulle limitazioni per gli utenti non membri
Se si desidera rendere disponibili alcuni o tutti gli aspetti del contributo agli utenti pubblici, prendere in considerazione le limitazioni seguenti.
Restrizioni dei metodi di VSS SDK
Lo script dell'SDK principale, VSS.SDK.js, consente alle estensioni Web di comunicare con il frame padre per eseguire operazioni come l'inizializzazione della comunicazione e il recupero delle informazioni sul contesto utente correnti. I metodi di VSS SDK seguenti non supportano gli utenti non membri:
VSS.getAccessToken()VSS.getAppToken()
Limitazioni del servizio dati di estensione
Poiché il servizio dati di estensione gestisce dati che non sono con ambito né protetti per un progetto, gli utenti non membri non possono leggere o scrivere alcun tipo di dati di estensione.
Gestire gli errori di accesso ai dati
Quando il servizio dati non può accedere ai dati a causa di limitazioni di autorizzazione da parte dell'utente chiamante, la promessa restituita dalla chiamata a getValue viene rifiutata. L'errore passato alla funzione reject ha una proprietà name, che consente di comprendere il motivo per cui la chiamata non è riuscita a leggere o scrivere dati.
VSS.getService(VSS.ServiceIds.ExtensionData).then(function(dataService) {
dataService.getValue("someKey").then(function(value) {
// Process the value
}, function(error) {
if (error.name === "AccessCheckException") {
alert(error.message);
}
});
});
Accesso all’API REST
Azure DevOps Services offre un set limitato di API REST agli utenti non membri. Queste API includono la maggior parte delle API a livello di organizzazione e a livello di progetto per le funzionalità a cui gli utenti non membri possono accedere in genere. Prendere in considerazione queste informazioni quando si decide se rendere disponibile l'estensione agli utenti non membri.
È consigliabile usare le API 5.0 e successive, perché Azure DevOps rende alcune API disponibili per gli utenti non membri solo a partire dalla versione 5.0.
Riferimenti all'identità
La maggior parte delle API REST di Azure DevOps Services usa un "contratto" comune per rappresentare un utente o un gruppo. Per proteggere le informazioni sui membri, ad esempio gli indirizzi di posta elettronica, Azure DevOps omette determinati campi, ad esempio uniqueName, quando un utente anonimo o pubblico richiama un'API REST.
Controllare le autorizzazioni dell'utente
Usare le autorizzazioni per decidere se visualizzare o abilitare una funzionalità nell'estensione. Usare l'API REST di sicurezza dal codice dell'estensione Web per verificare se l'utente corrente dispone dell'autorizzazione in Azure DevOps Services per completare l'attività. Questo approccio impedisce agli utenti di pensare di avere l'autorizzazione a eseguire un'operazione, solo per scoprire che non lo fanno.
Controllare se l'utente dispone dell'autorizzazione a mettere in coda le build
In questo esempio viene illustrato come usare il client REST di sicurezza per verificare se l'utente ha le autorizzazioni per accodare le compilazioni nel progetto corrente. Per impostazione predefinita, gli utenti non membri non dispongono di questa autorizzazione.
VSS.require(["VSS/Service", "VSS/security/RestClient"], function(VSS_Service, Security_RestClient) {
var client = VSS_Service.getCollectionClient(Security_RestClient.SecurityHttpClient3);
var securityToken = VSS.getWebContext().project.id;
client.hasPermissionsBatch({
evaluations: [
{
"securityNamespaceId": "33344D9C-FC72-4d6f-ABA5-FA317101A7E9",
"token": securityToken,
"permissions": 128 /* queue builds */
}
],
alwaysAllowAdministrators: true
}
).then(function(response) {
console.log("Can user queue builds in this project? " + response.evaluations[0].value);
});
});
Prendere in considerazione i requisiti del widget del dashboard
Analogamente ad altri tipi di contributi, la restrictedTo proprietà del contributo controlla la visibilità dei contributi del widget del dashboard. Ad esempio, per rendere visibile un widget agli utenti non membri e membri:
{
"contributions": [
{
"id": "HelloWorldWidget",
"type": "ms.vss-dashboards-web.widget",
"targets": [
"ms.vss-dashboards-web.widget-catalog"
],
"restrictedTo": [
"member",
"public",
"anonymous"
],
"properties": {
...
}
}
]
}
Configurare le impostazioni del widget
Quando si controlla la visibilità dei widget per gli utenti non membri, il framework del dashboard fornisce anche un meccanismo facoltativo di archiviazione in formato aperto per le impostazioni del widget. Due meccanismi indicano se le impostazioni del widget sono disponibili per gli utenti non membri nei progetti pubblici.
Un widget con impostazioni configurabili visibili agli utenti non membri deve seguire uno dei modelli seguenti. Non seguendo questi modelli impedisce la visualizzazione del widget a questi utenti.
Modello 1: Il widget dichiara che le proprie istanze archiviano solo le impostazioni specifiche del progetto.
Impostare la proprietà del contributo del canStoreCrossProjectSettings widget su false, che indica che le impostazioni del widget sono specifiche del progetto.
{
"id:": "HelloWorldWidget",
"type": "ms.vss-dashboards-web.widget",
...
"properties": {
"canStoreCrossProjectSettings": false
}
}
Modello 2: un'istanza del widget dichiara che le relative impostazioni sono specifiche del progetto
Le singole istanze del widget possono anche indicare che le impostazioni sono specifiche del progetto e disponibili per gli utenti non membri. Quando si salvano le impostazioni, il widget deve impostare hasCrossProjectSettings su false nella stringa JSON serializzata:
{
"hasCrossProjectSettings": false,
"hypotheticalWidgetOption": true,
"backlogLevel": "Stories"
}
Prendere in considerazione i requisiti di compilazione e rilascio
Se l'estensione contribuisce a un'attività di compilazione o versione, non sono necessarie modifiche per usare tale attività da una pipeline in un progetto pubblico.
Gestire gli aspetti del tracciamento degli elementi di lavoro
Le estensioni non funzionano per gli utenti non membri nel contesto di un progetto pubblico senza modifiche. Sono inclusi il modulo dell'elemento di lavoro, altre esperienze degli elementi di lavoro e l'interazione con le API REST di rilevamento degli elementi di lavoro.
Limitazioni dei moduli degli elementi di lavoro
Azure DevOps non riesce a eseguire aggiornamenti e eliminazioni degli elementi di lavoro per utenti non membri.
Gestione delle identità
Nell'API REST di Azure DevOps Services versione 5.0 e successive il servizio restituisce le identità come IdentityRef oggetti anziché stringhe. Come descritto in precedenza, Azure DevOps non restituisce determinati campi, ad esempio uniqueName, in questi oggetti se un utente non membro effettua la chiamata API.
Restrizioni relative all'ambito DELL'API
Le estensioni possono richiamare solo LE API REST con ambito progetto quando l'utente corrente non è membro dell'organizzazione. Azure DevOps rifiuta tutte le chiamate API REST non con ambito a un progetto.
Limitazioni delle query
Gli utenti non membri riscontrano le limitazioni seguenti correlate alle query degli elementi di lavoro:
- Gli utenti non membri possono eseguire query note solo in base all'ID o al percorso
- Le query devono avere come ambito il progetto corrente. Azure DevOps esclude tutti gli elementi di lavoro che non appartengono al progetto corrente
- Gli utenti non membri non possono creare nuove query o eseguire query WIQL