Autenticação
Altium Identity é o provedor de identidade OAuth 2.0 e OpenID Connect (OIDC) da Altium. Sua aplicação autentica um usuário por meio do Altium Identity e, em seguida, chama a API do Altium 365 em nome dele — ela nunca lida com a senha Altium do usuário.
As aplicações fazem login com authorization-code flow e PKCE. Clientes públicos (aplicações desktop, locais, nativas e de página única) usam PKCE sem segredo do cliente; clientes confidenciais (backends web/servidor) adicionam um segredo do cliente. Os fluxos passo a passo, com todas as solicitações e respostas, estão no GitHub — esta página explica os conceitos para que você saiba qual caminho seguir.
Vocabulário de tokens
A oferta comercial do Altium 365 opera em quatro regiões geográficas:
Termo |
O que é |
Global access token |
Um token de nível de usuário que você recebe após fazer login com os escopos |
Workspace access token |
Um token restrito a um único espaço de trabalho por meio do escopo |
| Refresh token | Emitido quando você solicita o escopo |
Para conhecer a estrutura completa de um token e suas declarações, consulte Tokens e Escopos OAuth.
A jornada de login
A jornada é a mesma para aplicações web e desktop/locais — apenas a forma como how você obtém o código de autorização difere (um redirecionamento hospedado pela sua aplicação ou o padrão ActionWait hospedado pela Altium para aplicações que não podem hospedar um). Em todos os casos:
-
Sign in on Commercial Cloud (
https://auth.altium.com) para obter um global access token. Use-o para recursos globais, como listar os espaços de trabalho do usuário. -
Discover the user's workspaces com o token global.
-
Exchange the global token for a workspace access token, no endpoint correspondente ao espaço de trabalho (Comercial ou GovCloud — veja abaixo).
-
Call the Altium 365 API com o token do espaço de trabalho, renovando-o no endpoint que o emitiu.
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)
Uma aplicação geralmente mantém vários tokens ao mesmo tempo — um token global mais um token de espaço de trabalho para cada espaço de trabalho em uso. Cada um é renovado no endpoint que o emitiu.
Nuvem Comercial e GovCloud
O Altium 365 opera em dois ambientes estritamente separados:
-
Commercial Cloud (
auth.altium.com) — o ambiente padrão. -
GovCloud (
auth.365-gov.altium.com) — um ambiente isolado para espaços de trabalho sujeitos ao ITAR ou a outras regulamentações.
O emissor de um token (iss) identifica qual ambiente o emitiu, e os dois nunca são intercambiáveis: um token Gov é rejeitado pelos serviços Comerciais, e um token Comercial é rejeitado pelo GovCloud. O GovCloud impõe essa separação com um two-token model — um token de espaço de trabalho Gov contém um marcador secure que o vincula ao GovCloud. Você faz login uma vez na Nuvem Comercial e, em seguida, troca seu token global por cada token de espaço de trabalho no ambiente ao qual esse espaço de trabalho pertence.
De qual fluxo preciso?
Sua aplicação |
Fluxo |
Guia |
| Web or server aplicação que pode hospedar um endpoint de redirecionamento HTTPS | Fluxo de redirecionamento com código de autorização |
Aplicações web e de servidor |
Desktop, on-prem, or native aplicação que não pode hospedar um redirecionamento |
Login pelo navegador usando o padrão ActionWait hospedado pela Altium |
Aplicações desktop e locais |
Bibliotecas cliente
Você não precisa implementar o fluxo manualmente. A Altium mantém bibliotecas de código aberto desenvolvidas com base em uma única especificação independente de linguagem e validadas por uma suíte de testes de conformidade compartilhada:
Linguagem |
Documentação de referência |
| TypeScript | Biblioteca TypeScript |
| .NET | Biblioteca .NET |
| Python | Biblioteca Python |