Skip to content

Uwierzytelnianie

Aby wejść w interakcję z serwerem, CLI musi uwierzytelnić żądania za pomocą uwierzytelniania na okaziciela. CLI obsługuje uwierzytelnianie jako użytkownik, jako konto lub przy użyciu tokena OIDC.

Jako użytkownik#

W przypadku korzystania z interfejsu CLI lokalnie na komputerze zalecamy uwierzytelnienie jako użytkownik. Aby uwierzytelnić się jako użytkownik, należy uruchomić następujące polecenie:

bash
tuist auth login

Polecenie przeprowadzi użytkownika przez proces uwierzytelniania internetowego. Po uwierzytelnieniu CLI będzie przechowywać długotrwały token odświeżania i krótkotrwały token dostępu pod adresem ~/.config/tuist/credentials. Każdy plik w katalogu reprezentuje domenę, w której dokonano uwierzytelnienia, co domyślnie powinno mieć postać tuist.dev.json. Informacje przechowywane w tym katalogu są wrażliwe, więc upewnij się, że są bezpieczne.

CLI automatycznie wyszuka poświadczenia podczas wykonywania żądań do serwera. Jeśli token dostępu wygasł, CLI użyje tokenu odświeżania, aby uzyskać nowy token dostępu.

Tokeny OIDC#

W przypadku środowisk CI, które obsługują OpenID Connect (OIDC), Tuist może uwierzytelniać się automatycznie, bez konieczności zarządzania długotrwałymi sekretami. Po uruchomieniu w obsługiwanym środowisku CI, CLI automatycznie wykryje dostawcę tokenów OIDC i wymieni token dostarczony przez CI na token dostępu Tuist.

Wspierani dostawcy usług CI#

  • Działania GitHub
  • CircleCI
  • Bitrise

Konfigurowanie uwierzytelniania OIDC#

  1. Połącz swoje repozytorium z Tuist: Postępuj zgodnie z przewodnikiem integracji GitHub, aby połączyć swoje repozytorium GitHub z projektem Tuist.

  2. Uruchom tuist auth login: W przepływie pracy CI należy uruchomić tuist auth login przed poleceniami wymagającymi uwierzytelnienia. Interfejs CLI automatycznie wykryje środowisko CI i uwierzytelni się przy użyciu OIDC.

Przykłady konfiguracji dla poszczególnych dostawców można znaleźć w przewodniku Continuous Integration.

Zakresy tokenów OIDC#

Tokenom OIDC przyznawana jest grupa ci scope, która zapewnia dostęp do wszystkich projektów połączonych z repozytorium. Zobacz Grupy zakresów by dowiedzieć się więcej o tym, co zawiera zakres ci.

Security Benefits

Uwierzytelnianie OIDC jest bezpieczniejsze niż długotrwałe tokeny, ponieważ

  • Brak sekretów do rotacji lub zarządzania
  • Tokeny są krótkotrwałe i przypisane do poszczególnych przepływów pracy
  • Uwierzytelnianie jest powiązane z tożsamością repozytorium.

Tokeny konta#

W przypadku środowisk ciągłej integracji, które nie obsługują OIDC, lub gdy potrzebna jest precyzyjna kontrola nad uprawnieniami, można użyć tokenów kont. Tokeny kont umożliwiają dokładne określenie zakresów i projektów, do których token może uzyskać dostęp.

Tworzenie tokenu konta#

bash
tuist account tokens create my-account \
--scopes project:cache:read project:cache:write \
--name ci-cache-token \
--expires 1y

Polecenie akceptuje następujące opcje:

Opcja Opis
--zakresy Wymagane. Oddzielona przecinkami lista zakresów, w których ma zostać przyznany token.
--name Wymagane. Unikalny identyfikator tokena (1-32 znaki, wyłącznie alfanumeryczne, myślniki i podkreślniki).
--wygasa Opcjonalnie. Kiedy token powinien wygasnąć. Użyj formatu takiego jak 30d (dni), 6m (miesiące) lub 1y (lata). Jeśli nie zostanie określony, token nigdy nie wygaśnie.
--projekty Ogranicza token do określonych uchwytów projektów. Jeśli nie określono inaczej, token ma dostęp do wszystkich projektów.

Dostępne zakresy#

Zakres Opis
account:members:read Przeczytaj członków konta
account:members:write Zarządzanie członkami konta
account:registry:read Odczyt z rejestru pakietów Swift
account:registry:write Publikowanie w rejestrze pakietów Swift
project:previews:read Pobieranie podglądów
project:previews:write Przesyłanie podglądów
project:admin:read Odczyt ustawień projektu
project:admin:write Zarządzanie ustawieniami projektu
project:cache:read Pobieranie buforowanych plików binarnych
project:cache:write Przesyłanie buforowanych plików binarnych
project:bundles:read Wyświetl pakiety
project:bundles:write Przesyłanie pakietów
project:tests:read Odczyt wyników testu
project:tests:write Prześlij wyniki testu
project:builds:read Czytaj analizy kompilacji
project:builds:write Prześlij dane analityczne kompilacji
project:runs:read Uruchomione polecenie odczytu
project:runs:write Tworzenie i aktualizowanie przebiegów poleceń

Grupy zakresów#

Grupy zakresów zapewniają wygodny sposób przyznawania wielu powiązanych zakresów za pomocą jednego identyfikatora. Gdy używasz grupy zakresów, automatycznie rozszerza się ona, aby objąć wszystkie indywidualne zakresy, które zawiera.

Grupa Scope Dołączone lunety
ci project:cache:write, project:previews:write, project:bundles:write, project:tests:write, project:builds:write, project:runs:write

Ciągła integracja#

W przypadku środowisk ciągłej integracji, które nie obsługują OIDC, można utworzyć token konta z grupą zakresu ci w celu uwierzytelnienia przepływów pracy ciągłej integracji:

bash
tuist account tokens create my-account --scopes ci --name ci

Spowoduje to utworzenie tokenu ze wszystkimi zakresami potrzebnymi do typowych operacji CI (pamięć podręczna, podglądy, pakiety, testy, kompilacje i uruchomienia). Wygenerowany token należy przechowywać jako sekret w środowisku CI i ustawić go jako zmienną środowiskową TUIST_TOKEN.

Zarządzanie tokenami konta#

Aby wyświetlić listę wszystkich tokenów dla konta:

bash
tuist account tokens list my-account

Aby odwołać token według nazwy:

bash
tuist account tokens revoke my-account ci-cache-token

Korzystanie z tokenów konta#

Tokeny konta powinny być zdefiniowane jako zmienna środowiskowa TUIST_TOKEN:

bash
export TUIST_TOKEN=your-account-token
When To Use Account Tokens

Korzystaj z tokenów konta, gdy tego potrzebujesz:

  • Uwierzytelnianie w środowiskach CI, które nie obsługują OIDC
  • Szczegółowa kontrola nad tym, jakie operacje może wykonywać token
  • Token umożliwiający dostęp do wielu projektów w ramach konta
  • Ograniczone czasowo tokeny, które automatycznie wygasają