# Uwierzytelnianie {#authentication}
Aby wejść w interakcję z serwerem, CLI musi uwierzytelnić żądania za pomocą
[uwierzytelniania na
okaziciela](https://swagger.io/docs/specification/authentication/bearer-authentication/).
CLI obsługuje uwierzytelnianie jako użytkownik, jako konto lub przy użyciu
tokena OIDC.
## Jako użytkownik {#as-a-user}
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 {#oidc-tokens}
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 {#supported-ci-providers}
- Działania GitHub
- CircleCI
- Bitrise
### Konfigurowanie uwierzytelniania OIDC {#setting-up-oidc-authentication}
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 {#oidc-token-scopes}
Tokenom OIDC przyznawana jest grupa `ci` scope, która zapewnia dostęp do
wszystkich projektów połączonych z repozytorium. Zobacz [Grupy
zakresów](#scope-groups) by dowiedzieć się więcej o tym, co zawiera zakres `ci`.
::: tip 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 {#account-tokens}
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 {#creating-an-account-token}
```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 {#available-scopes}
| 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 {#scope-groups}
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 {#continuous-integration}
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 {#managing-account-tokens}
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 {#using-account-tokens}
Tokeny konta powinny być zdefiniowane jako zmienna środowiskowa `TUIST_TOKEN`:
```bash
export TUIST_TOKEN=your-account-token
```
::: tip 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ą
:::