Uwierzytelnianie
Altium Identity to dostawca tożsamości Altium oparty na OAuth 2.0 i OpenID Connect (OIDC). Twoja aplikacja uwierzytelnia użytkownika za pośrednictwem Altium Identity, a następnie wywołuje interfejs API Altium 365 w jego imieniu — nigdy nie przetwarza hasła Altium użytkownika.
Aplikacje logują się przy użyciu authorization-code flow i PKCE. Klienci publiczni (aplikacje desktopowe, on-prem, natywne, jednostronicowe) używają PKCE bez client secret; klienci poufni (backendy webowe/serwerowe) dodatkowo używają client secret. Szczegółowe przebiegi, obejmujące każde żądanie i odpowiedź, znajdują się na GitHubie — ta strona wyjaśnia pojęcia, aby pomóc Ci wybrać właściwą ścieżkę.
Terminologia tokenów
Komercyjna oferta Altium 365 działa w czterech regionach geograficznych:
Termin |
Czym jest |
Global access token |
Token na poziomie użytkownika, który otrzymujesz po zalogowaniu z zakresami |
Workspace access token |
Token ograniczony do pojedynczego workspace'a za pomocą zakresu |
| Refresh token | Wydawany, gdy zażądasz zakresu |
Pełny opis struktury tokenu i jego claims znajdziesz w Tokens i OAuth Scopes.
Proces logowania
Proces jest taki sam dla aplikacji webowych i desktopowych/on-prem — różni się tylko sposób, how uzyskania authorization code (przekierowanie obsługiwane przez Twoją aplikację albo wzorzec ActionWait hostowany przez Altium dla aplikacji, które nie mogą go obsłużyć). W każdym przypadku:
-
Sign in on Commercial Cloud (
https://auth.altium.com), aby uzyskać global access token. Używaj go do zasobów globalnych, takich jak wyświetlanie listy workspace'ów użytkownika. -
Discover the user's workspaces przy użyciu tokenu globalnego.
-
Exchange the global token for a workspace access token, w punkcie końcowym odpowiadającym danemu workspace'owi (Commercial lub Gov Cloud — patrz poniżej).
-
Call the Altium 365 API przy użyciu tokenu workspace'a, odświeżając go w punkcie końcowym, który go wydał.
sequenceDiagram
participant App
participant Identity as Altium Identity
participant API as Altium 365 API
App->>Identity: 1. Sign in on auth.altium.com (openid profile) + PKCE
Identity-->>App: global access token
App->>API: 2. Discover workspaces (global token)
API-->>App: workspaces (+ location)
App->>Identity: 3. Exchange for a workspace token
Identity-->>App: workspace access token (+ refresh token)
App->>API: 4. API calls (workspace access token)
Aplikacja często przechowuje jednocześnie kilka tokenów — jeden token globalny oraz po jednym tokenie workspace'a dla każdego używanego workspace'a. Każdy z nich jest odświeżany we własnym punkcie końcowym wydającym.
Commercial Cloud i Gov Cloud
Altium 365 działa w dwóch ściśle odseparowanych środowiskach:
-
Commercial Cloud (
auth.altium.com) — środowisko domyślne. -
Gov Cloud (
auth.365-gov.altium.com) — izolowane środowisko dla workspace'ów ITAR/regulowanych.
Wystawca tokenu (iss) określa, które środowisko go wydało, i tych dwóch środowisk nigdy nie można używać zamiennie: token Gov jest odrzucany przez usługi Commercial, a token Commercial jest odrzucany przez Gov Cloud. Gov Cloud wymusza to za pomocą two-token model — token workspace'a Gov zawiera znacznik secure, który wiąże go z Gov Cloud. Logujesz się raz do Commercial Cloud, a następnie wymieniasz token globalny na token każdego workspace'a w środowisku, do którego należy dany workspace.
Jakiego przepływu potrzebuję?
Twoja aplikacja |
Przepływ |
Przewodnik |
| Web or server aplikacja, która może hostować punkt końcowy przekierowania HTTPS | Przepływ przekierowania authorization code |
Aplikacje webowe i serwerowe |
Desktop, on-prem, or native aplikacja, która nie może hostować przekierowania |
Logowanie w przeglądarce przy użyciu wzorca ActionWait hostowanego przez Altium |
Aplikacje desktopowe i on-prem |
Biblioteki klienckie
Nie musisz implementować tego przepływu ręcznie. Altium utrzymuje biblioteki open source zbudowane według jednej specyfikacji niezależnej od języka i weryfikowane przez wspólny zestaw testów zgodności:
Język |
Dokumentacja referencyjna |
| TypeScript | Biblioteka TypeScript |
| .NET | Biblioteka .NET |