Аутентификация
Altium Identity — это поставщик удостоверений Altium на базе OAuth 2.0 и OpenID Connect (OIDC). Ваше приложение аутентифицирует пользователя через Altium Identity, а затем вызывает API Altium 365 от его имени — при этом оно никогда не работает с паролем пользователя Altium.
Приложения выполняют вход с помощью authorization-code flow и PKCE. Публичные клиенты (desktop, on-prem, native, single-page apps) используют PKCE без client secret; конфиденциальные клиенты (web/server backends) дополнительно используют client secret. Пошаговые сценарии со всеми запросами и ответами размещены на GitHub — на этой странице объясняются основные концепции, чтобы вы могли понять, какой путь выбрать.
Терминология токенов
Коммерческое предложение Altium 365 доступно в четырех географических регионах:
Термин |
Что это такое |
Global access token |
Токен уровня пользователя, который вы получаете после входа с областями доступа |
Workspace access token |
Токен, ограниченный одним рабочим пространством, через область доступа |
| Refresh token | Выдается, когда вы запрашиваете область доступа |
Полное описание структуры токена и его утверждений см. в разделах Tokens и OAuth Scopes.
Процесс входа
Процесс одинаков для web и desktop/on-prem приложений — отличается только способ получения how authorization code (через redirect, размещенный вашим приложением, либо по шаблону Altium-hosted ActionWait для приложений, которые не могут разместить такой redirect). В любом случае:
-
Sign in on Commercial Cloud (
https://auth.altium.com), чтобы получить global access token. Используйте его для глобальных ресурсов, например для получения списка рабочих пространств пользователя. -
Discover the user's workspaces с использованием глобального токена.
-
Exchange the global token for a workspace access token, на endpoint, соответствующем рабочему пространству (Commercial или GovCloud — см. ниже).
-
Call the Altium 365 API с использованием токена рабочего пространства, обновляя его через endpoint, который его выдал.
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)
Обычно приложение одновременно хранит несколько токенов — один глобальный токен плюс по одному токену рабочего пространства для каждого используемого рабочего пространства. Каждый из них обновляется через свой endpoint выдачи.
Commercial Cloud и GovCloud
Altium 365 работает в двух строго разделенных средах:
-
Commercial Cloud (
auth.altium.com) — среда по умолчанию. -
GovCloud (
auth.365-gov.altium.com) — изолированная среда для рабочих пространств ITAR/regulated.
Издатель токена (iss) определяет, в какой среде он был выпущен, и эти среды никогда не взаимозаменяемы: токен Gov отклоняется сервисами Commercial, а токен Commercial отклоняется GovCloud. GovCloud обеспечивает это с помощью two-token model — токен рабочего пространства Gov содержит маркер secure, который привязывает его к GovCloud. Вы выполняете вход один раз в Commercial Cloud, а затем обмениваете свой глобальный токен на токен каждого рабочего пространства в той среде, которой принадлежит это рабочее пространство.
Какой сценарий мне нужен?
Ваше приложение |
Сценарий |
Руководство |
| Web or server приложение, которое может разместить HTTPS endpoint для redirect | Сценарий redirect с authorization code |
Web и server приложения |
Desktop, on-prem, or native приложение, которое не может разместить redirect |
Вход через браузер по шаблону Altium-hosted ActionWait |
Desktop и on-prem приложения |
Клиентские библиотеки
Вам не обязательно реализовывать этот сценарий вручную. Altium поддерживает open-source библиотеки, созданные по единой независимой от языка спецификации и проверенные общим набором тестов на соответствие:
Язык |
Справочная документация |
| TypeScript | Библиотека TypeScript |
| .NET | Библиотека .NET |