Uwierzytelnianie
Altium Identity to dostawca tożsamości Altium obsługujący standardy 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 ma dostępu do hasła użytkownika w Altium.
Aplikacje logują się przy użyciu authorization-code flow i PKCE. Klienty publiczne (aplikacje desktopowe, lokalne, natywne i jednostronicowe) korzystają z PKCE bez sekretu klienta; klienty poufne (zaplecza aplikacji internetowych i serwerowych) dodatkowo używają sekretu klienta. Szczegółowe opisy przepływów, obejmujące wszystkie żądania i odpowiedzi, są dostępne w serwisie GitHub — ta strona wyjaśnia pojęcia, aby ułatwić wybór odpowiedniej ścieżki.
Terminologia tokenów
Komercyjna oferta Altium 365 działa w czterech regionach geograficznych:
Termin |
Opis |
Global access token |
Token na poziomie użytkownika otrzymywany po zalogowaniu z zakresami |
Workspace access token |
Token ograniczony do jednego obszaru roboczego za pomocą zakresu |
| Refresh token | Wydawany po zażądaniu zakresu |
Pełny opis struktury tokena i zawartych w nim oświadczeń znajdziesz w sekcjach Tokeny i Zakresy OAuth.
Przebieg logowania
Przebieg jest taki sam w przypadku aplikacji internetowych oraz desktopowych/lokalnych — różni się jedynie how uzyskania kodu autoryzacyjnego (przekierowanie obsługiwane przez aplikację lub hostowany przez Altium wzorzec ActionWait dla aplikacji, które nie mogą obsługiwać takiego przekierowania). 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 obszarów roboczych użytkownika. -
Discover the user's workspaces przy użyciu tokena globalnego.
-
Exchange the global token for a workspace access token, w punkcie końcowym odpowiadającym obszarowi roboczemu (Commercial lub GovCloud — patrz poniżej).
-
Call the Altium 365 API przy użyciu tokena obszaru roboczego, 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 zwykle przechowuje kilka tokenów jednocześnie — jeden token globalny oraz po jednym tokenie dla każdego używanego obszaru roboczego. Każdy z nich jest odświeżany we własnym punkcie końcowym, który go wydał.
Commercial Cloud i GovCloud
Altium 365 działa w dwóch ściśle odseparowanych środowiskach:
-
Commercial Cloud (
auth.altium.com) — środowisko domyślne. -
GovCloud (
auth.365-gov.altium.com) — odizolowane środowisko dla obszarów roboczych objętych przepisami ITAR lub innymi regulacjami.
Wystawca tokena (iss) wskazuje środowisko, w którym token został wydany. Tokenów z tych środowisk nigdy nie można używać zamiennie: token Gov jest odrzucany przez usługi Commercial, a token Commercial jest odrzucany przez GovCloud. GovCloud wymusza to za pomocą two-token model — token obszaru roboczego Gov zawiera znacznik secure wiążący go z GovCloud. Logujesz się raz w Commercial Cloud, a następnie wymieniasz token globalny na token każdego obszaru roboczego w środowisku, do którego należy dany obszar.
Którego przepływu potrzebuję?
Twoja aplikacja |
Przepływ |
Przewodnik |
| Web or server aplikacja, która może obsługiwać punkt końcowy przekierowania HTTPS | Przepływ przekierowania z kodem autoryzacyjnym |
Aplikacje internetowe i serwerowe |
Desktop, on-prem, or native aplikacja, która nie może obsługiwać przekierowania |
Logowanie w przeglądarce z użyciem hostowanego przez Altium wzorca ActionWait |
Aplikacje desktopowe i lokalne |
Biblioteki klienckie
Nie musisz samodzielnie implementować przepływu. Altium utrzymuje biblioteki open source opracowane na podstawie jednej specyfikacji niezależnej od języka programowania i weryfikowane wspólnym zestawem testów zgodności:
Język |
Dokumentacja referencyjna |
| TypeScript | Biblioteka TypeScript |
| .NET | Biblioteka .NET |
| Python | Biblioteka Python |