Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services
Usługa Azure DevOps Services obsługuje zarówno projekty prywatne, jak i publiczne. Projekty prywatne ograniczają dostęp do uwierzytelnionych użytkowników z jawnymi uprawnieniami. Publiczne projekty umożliwiają użytkownikom niebędącym członkami wyświetlanie zawartości projektu w stanie tylko do odczytu.
Użytkownik niebędący członkiem może być:
- Anonimowy: Nieuwierzytelniony w usługach Azure DevOps Services
- Publiczne: Zautoryzowane w usługach Azure DevOps Services, ale nie jest członkiem organizacji
Użytkownicy niebędący członkami widzą te same widoki co uwierzytelnieni użytkownicy, ale usługa Azure DevOps ukrywa lub wyłącza funkcje inne niż publiczne, takie jak ustawienia, akcje i operacje kolejki kompilacji.
Ważne
Tylko organizacje z włączonymi zasadami zezwalania na projekt publiczny mogą tworzyć projekty lub zmieniać widoczność projektu na publiczny. Zasady nie są już dostępne dla organizacji, które jeszcze ich nie używają. Firma Microsoft zaleca korzystanie z usługi GitHub dla wszystkich potrzeb projektu publicznego.
Zdecyduj, czy rozszerzenie ma być widoczne dla użytkowników niebędących członkami
Jako deweloper rozszerzenia możesz udostępnić wszystkie lub część rozszerzenia użytkownikom niebędącym członkami. Ci użytkownicy mogą używać rozszerzenia tylko z poziomu projektów publicznych. Jeśli zdecydujesz się nie udostępniać rozszerzenia użytkownikom niebędącym członkami, nie potrzebujesz żadnych zmian, a decyzja nie ma wpływu na członków korzystających z rozszerzenia w projektach publicznych.
Użyj tej listy kontrolnej, aby zdecydować, czy rozszerzenie powinno być dostępne dla użytkowników niebędących członkami:
- Rozszerzenie przedstawia dane istotne dla użytkowników niebędących członkami
- Rozszerzenie przyczynia się do możliwości na poziomie projektu
- Rozszerzenie przyczynia się do obszarów produktów, do których użytkownicy niebędący członkami mogą uzyskiwać dostęp
- Rozszerzenie nie rozszerza ani nie polega na funkcjach, do których użytkownicy niebędący członkami nie mogą uzyskać dostępu, takich jak usługa danych rozszerzenia lub niektóre interfejsy API REST usługi Azure DevOps Services. Aby uzyskać więcej informacji, zobacz sekcję Ograniczenia .
Konfigurowanie widoczności udziału
Domyślnie usługa Azure DevOps pokazuje wkłady tylko członkom organizacji. Aby zapewnić użytkownikom niebędącym członkami widoczność wkładu, ustaw atrybut restrictedTo dla tego wkładu. Wartość jest tablicą ciągów znaków, która zawiera listę typów użytkowników, które powinny mieć dostęp do wkładu. Możliwe wartości to:
-
member: Uwierzytelniony użytkownik będący członkiem organizacji -
public: uwierzytelniony użytkownik, który nie jest członkiem organizacji -
anonymous: Nieautoryzowany użytkownik
Uwidocznij centrum użytkownikom anonimowym, publicznym i członkom
{
"contributions": [
{
"id": "my-hub",
"type": "ms.vss-web.hub",
"targets": [
"ms.vss-code-web.code-hub-group"
],
"restrictedTo": [
"member",
"public",
"anonymous"
],
"properties": {
...
}
}
]
}
Możesz również ustawić domyślną widoczność wszystkich wkładów w rozszerzeniu poprzez ustawienie atrybutu restrictedTo w głównym korzeniu manifestu rozszerzenia. Następnie można zastąpić to ustawienie domyślne dla poszczególnych wkładów.
Uczyń każdy wkład widoczny dla wszystkich użytkowników, z wyjątkiem jednego
{
"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": {
...
}
}
]
}
Omówienie ograniczeń dla użytkowników niebędących członkami
Jeśli chcesz udostępnić niektóre lub wszystkie aspekty udziału użytkownikom publicznym, rozważ następujące ograniczenia.
Ograniczenia metody zestawu VSS SDK
Podstawowy skrypt zestawu SDK, VSS.SDK.js, umożliwia rozszerzenia sieci Web komunikowanie się z ramką nadrzędną w celu wykonywania operacji, takich jak inicjowanie komunikacji i uzyskiwanie bieżących informacji kontekstowych użytkownika. Następujące metody zestawu VSS SDK nie obsługują użytkowników niebędących członkami:
VSS.getAccessToken()VSS.getAppToken()
Ograniczenia usługi danych rozszerzeń
Ponieważ usługa danych rozszerzenia zarządza danymi, które nie są objęte zakresem ani zabezpieczone w projekcie, użytkownicy niebędący członkami nie mogą odczytywać ani zapisywać żadnych typów danych rozszerzenia.
Obsługa błędów dostępu do danych
Gdy usługa danych nie może uzyskać dostępu do danych z powodu ograniczeń uprawnień przez użytkownika wywołującego, obietnica zwrócona z wywołania zostanie getValue odrzucona. Błąd przekazany do funkcji reject ma właściwość name, która pomaga zrozumieć, dlaczego wywołanie nie może odczytać lub zapisać danych.
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);
}
});
});
Dostęp do interfejsu API REST
Usługa Azure DevOps Services udostępnia ograniczony zestaw interfejsów API REST użytkownikom niebędącym członkami. Te interfejsy API obejmują większość interfejsów API na poziomie organizacji i na poziomie projektu dla funkcji, do których użytkownicy niebędący członkami mają ogólnie dostęp. Podczas podejmowania decyzji o udostępnieniu rozszerzenia użytkownikom niebędącym członkami należy wziąć pod uwagę te informacje.
Zalecamy używanie interfejsów API w wersji 5.0 lub nowszej, ponieważ usługa Azure DevOps udostępnia pewne interfejsy API tylko użytkownikom niebędącym członkami, począwszy od wersji 5.0.
Odniesienia do tożsamości
Większość interfejsów API REST usługi Azure DevOps Services używa wspólnego "kontraktu" do reprezentowania użytkownika lub grupy. Aby chronić informacje o członkach, takie jak adresy e-mail, usługa Azure DevOps pomija niektóre pola, takie jak uniqueName, gdy anonimowy lub publiczny użytkownik wywołuje interfejs API REST.
Sprawdź uprawnienia użytkownika
Użyj uprawnień, aby zdecydować, czy udostępnić lub włączyć funkcję w swoim rozszerzeniu. Skorzystaj z REST API zabezpieczeń z kodu rozszerzenia internetowego, aby sprawdzić, czy bieżący użytkownik ma uprawnienia do wykonania zadania w usługach Azure DevOps Services. Takie podejście uniemożliwia użytkownikom myślenie, że mają uprawnienia do zrobienia czegoś, tylko w celu odkrycia, że tego nie robią.
Sprawdź, czy użytkownik ma uprawnienia do dodawania kompilacji do kolejki
W tym przykładzie pokazano, jak używać klienta REST zabezpieczeń, aby sprawdzić, czy użytkownik ma uprawnienia do kolejkowania kompilacji w bieżącym projekcie. Domyślnie użytkownicy niebędący członkami nie mają tego uprawnienia.
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);
});
});
Rozważ wymagania dotyczące widżetu pulpitu nawigacyjnego
Podobnie jak w przypadku innych typów wkładów, restrictedTo właściwość wkładu kontroluje widoczność wkładu widżetu w pulpicie nawigacyjnym. Aby na przykład uwidocznić widżet dla użytkowników niebędących członkami i członkami:
{
"contributions": [
{
"id": "HelloWorldWidget",
"type": "ms.vss-dashboards-web.widget",
"targets": [
"ms.vss-dashboards-web.widget-catalog"
],
"restrictedTo": [
"member",
"public",
"anonymous"
],
"properties": {
...
}
}
]
}
Konfigurowanie ustawień widżetu
Gdy kontrolujesz widoczność widżetu dla użytkowników niebędących członkami, platforma pulpitu nawigacyjnego udostępnia również opcjonalny mechanizm przechowywania w formie otwartej dla ustawień widżetu. Dwa mechanizmy wskazują, czy ustawienia widżetu są dostępne dla użytkowników niebędących członkami w projektach publicznych.
Widżet z konfigurowalnymi ustawieniami widocznymi dla użytkowników niebędących członkami musi być zgodny z jednym z następujących wzorców. Nieprzestrzeganie tych wzorców blokuje wyświetlanie widżetu tym użytkownikom.
Wzorzec 1: Widżet deklaruje, że jego instancje przechowują wyłącznie ustawienia specyficzne dla projektu.
Ustaw właściwość wkładu widżetu canStoreCrossProjectSettings na false, co oznacza, że ustawienia widżetu są specyficzne dla projektu.
{
"id:": "HelloWorldWidget",
"type": "ms.vss-dashboards-web.widget",
...
"properties": {
"canStoreCrossProjectSettings": false
}
}
Wzorzec 2. Wystąpienie widżetu deklaruje, że jego ustawienia są specyficzne dla projektu
Poszczególne wystąpienia widżetów mogą również wskazywać, że ich ustawienia są specyficzne dla projektu i dostępne dla użytkowników niebędących członkami. Podczas zapisywania ustawień widżet powinien ustawić hasCrossProjectSettings na false w sformatowanym jako ciąg JSON.
{
"hasCrossProjectSettings": false,
"hypotheticalWidgetOption": true,
"backlogLevel": "Stories"
}
Rozważ wymagania dotyczące kompilacji i wydania
Jeśli twoje rozszerzenie współtworzy zadanie kompilacji lub wydania, nie są potrzebne żadne zmiany, aby korzystać z tego zadania w ramach procesu w projekcie publicznym.
Obsługa zagadnień dotyczących śledzenia elementów roboczych
Rozszerzenia nie działają dla użytkowników niebędących członkami w kontekście projektu publicznego bez zmian. Obejmuje to formularz elementów roboczych, doświadczenia z innymi elementami roboczymi oraz interakcję z interfejsami API REST śledzenia elementów roboczych.
Ograniczenia formularza zadania roboczego
Usługa Azure DevOps zawodzi w przypadku wszystkich aktualizacji lub usunięć elementów roboczych w przypadku użytkowników niebędących członkami.
Zarządzanie tożsamością
W interfejsie API REST usługi Azure DevOps Services, w wersji 5.0 lub nowszej, usługa zwraca tożsamości jako obiekty IdentityRef zamiast ciągów znaków. Jak opisano wcześniej, usługa Azure DevOps nie zwraca niektórych pól, takich jak uniqueName, w tych obiektach, jeśli użytkownik niebędący członkiem wykonuje wywołanie interfejsu API.
Ograniczenia zakresu interfejsu API
Rozszerzenia mogą wywoływać tylko interfejsy API REST o zakresie projektu, gdy bieżący użytkownik nie jest członkiem organizacji. Usługa Azure DevOps odrzuca wszystkie wywołania interfejsu API REST, które nie są ograniczone do projektu.
Ograniczenia zapytań
Użytkownicy niebędący członkami mają następujące ograniczenia związane z zapytaniami elementów roboczych:
- Użytkownicy niebędący członkami mogą uruchamiać znane zapytania tylko według identyfikatora lub ścieżki
- Zapytania muszą być ograniczone do bieżącego projektu. Usługa Azure DevOps wyklucza wszystkie elementy robocze, które nie należą do bieżącego projektu
- Użytkownicy niebędący członkami nie mogą tworzyć nowych zapytań ani wykonywać zapytań WIQL