Аутентификация
Altium Identity — это поставщик удостоверений Altium на основе OAuth 2.0 и OpenID Connect (OIDC). Ваше приложение аутентифицирует пользователя через Altium Identity, а затем вызывает API Altium 365 от его имени — при этом оно никогда не работает с паролем пользователя Altium.
Приложения выполняют вход с помощью authorization-code flow и PKCE. Публичные клиенты (настольные, on-prem, нативные, одностраничные приложения) используют PKCE без секрета клиента; конфиденциальные клиенты (веб-приложения/серверные бэкенды) дополнительно используют секрет клиента. Пошаговые сценарии, включая каждый запрос и ответ, опубликованы на GitHub — на этой странице объясняются основные концепции, чтобы вы могли понять, какой вариант выбрать.
Терминология токенов
Коммерческое предложение Altium 365 работает в четырех географических регионах:
Термин |
Что это такое |
Global access token |
Токен уровня пользователя, который вы получаете после входа с областями доступа |
Workspace access token |
Токен, ограниченный одним рабочим пространством через область доступа |
| Refresh token | Выдается, когда вы запрашиваете область доступа |
Полное описание структуры токена и его утверждений см. в разделах Tokens и OAuth Scopes.
Процесс входа
Этот процесс одинаков для веб-приложений и настольных/on-prem приложений — отличается только способ получения how кода авторизации (через перенаправление, которое размещает ваше приложение, либо по шаблону Altium-hosted ActionWait для приложений, которые не могут разместить такое перенаправление). Во всех случаях:
-
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, используя конечную точку, соответствующую рабочему пространству (Commercial или Gov Cloud — см. ниже).
-
Call the Altium 365 API с токеном рабочего пространства, обновляя его через ту конечную точку, которая его выдала.
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)
Обычно приложение одновременно хранит несколько токенов — один глобальный токен и по одному токену рабочего пространства для каждого используемого рабочего пространства. Каждый из них обновляется через свою точку выдачи.
Commercial Cloud и Gov Cloud
Altium 365 работает в двух строго разделенных средах:
-
Commercial Cloud (
auth.altium.com) — среда по умолчанию. -
Gov Cloud (
auth.365-gov.altium.com) — изолированная среда для рабочих пространств ITAR/регулируемых проектов.
Издатель токена (iss) определяет, в какой среде он был выпущен, и эти две среды никогда не взаимозаменяемы: токен Gov отклоняется сервисами Commercial, а токен Commercial отклоняется сервисами Gov Cloud. Gov Cloud обеспечивает это с помощью two-token model — токен рабочего пространства Gov содержит маркер secure, который привязывает его к Gov Cloud. Вы выполняете вход один раз в Commercial Cloud, а затем обмениваете глобальный токен на токен каждого рабочего пространства в той среде, которой принадлежит это рабочее пространство.
Какой сценарий нужен мне?
Ваше приложение |
Сценарий |
Руководство |
| Web or server приложение, которое может разместить конечную точку HTTPS-перенаправления | Сценарий перенаправления с кодом авторизации |
Веб- и серверные приложения |
Desktop, on-prem, or native приложение, которое не может разместить перенаправление |
Вход через браузер по шаблону Altium-hosted ActionWait |
Настольные и on-prem приложения |
Клиентские библиотеки
Вам не обязательно реализовывать этот сценарий вручную. Altium поддерживает библиотеки с открытым исходным кодом, созданные по единой нейтральной к языку спецификации и проверенные общим набором тестов на соответствие:
Язык |
Справочная документация |
| TypeScript | Библиотека TypeScript |
| .NET | Библиотека .NET |