Autenticación
Altium Identity es el proveedor de identidad OAuth 2.0 y OpenID Connect (OIDC) de Altium. Tu aplicación autentica a un usuario a través de Altium Identity y luego llama a la API de Altium 365 en su nombre; nunca maneja la contraseña de Altium del usuario.
Las aplicaciones inician sesión con authorization-code flow y PKCE. Los clientes públicos (aplicaciones de escritorio, locales, nativas y de una sola página) usan PKCE sin secreto de cliente; los clientes confidenciales (backends web o de servidor) añaden un secreto de cliente. Los flujos paso a paso, con todas las solicitudes y respuestas, se encuentran en GitHub; esta página explica los conceptos para que sepas qué camino seguir.
Terminología de tokens
La oferta comercial de Altium 365 opera en cuatro regiones geográficas:
Término |
Qué es |
Global access token |
Un token de usuario que recibes después de iniciar sesión con los |
Workspace access token |
Un token limitado a un único espacio de trabajo mediante el ámbito |
| Refresh token | Se emite cuando solicitas el ámbito |
Para conocer la estructura completa de un token y sus declaraciones, consulta Tokens y Ámbitos de OAuth.
El proceso de inicio de sesión
El proceso es el mismo para las aplicaciones web y las aplicaciones de escritorio o locales; solo cambia how obtienes el código de autorización (una redirección alojada por tu aplicación o el patrón ActionWait alojado por Altium para las aplicaciones que no pueden alojar una). En todos los casos:
-
Sign in on Commercial Cloud (
https://auth.altium.com) para obtener un global access token. Úsalo para recursos globales, como enumerar los espacios de trabajo del usuario. -
Discover the user's workspaces con el token global.
-
Exchange the global token for a workspace access token, en el endpoint que corresponda al espacio de trabajo (comercial o GovCloud; consulta más abajo).
-
Call the Altium 365 API con el token del espacio de trabajo, renovándolo en el endpoint que lo emitió.
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)
Una aplicación suele mantener varios tokens a la vez: un token global y un token de espacio de trabajo por cada espacio de trabajo en uso. Cada uno se renueva en su propio endpoint de emisión.
Nube comercial y GovCloud
Altium 365 opera en dos entornos estrictamente separados:
-
Commercial Cloud (
auth.altium.com): el entorno predeterminado. -
GovCloud (
auth.365-gov.altium.com): un entorno aislado para espacios de trabajo sujetos a ITAR o a otras normativas.
El emisor de un token (iss) identifica qué entorno lo emitió, y los tokens de ambos entornos nunca son intercambiables: los servicios comerciales rechazan un token Gov, y GovCloud rechaza un token comercial. GovCloud aplica esta separación mediante un two-token model: un token de espacio de trabajo Gov incluye un marcador secure que lo vincula a GovCloud. Inicias sesión una vez en la nube comercial y luego intercambias tu token global por cada token de espacio de trabajo en el entorno al que pertenece ese espacio de trabajo.
¿Qué flujo necesito?
Tu aplicación |
Flujo |
Guía |
| Web or server aplicación que puede alojar un endpoint de redirección HTTPS | Flujo de redirección con código de autorización |
Aplicaciones web y de servidor |
Desktop, on-prem, or native aplicación que no puede alojar una redirección |
Inicio de sesión en el navegador mediante el patrón ActionWait alojado por Altium |
Aplicaciones de escritorio y locales |
Bibliotecas de cliente
No tienes que implementar el flujo manualmente. Altium mantiene bibliotecas de código abierto basadas en una única especificación independiente del lenguaje y validadas mediante un conjunto compartido de pruebas de conformidad:
Lenguaje |
Documentación de referencia |
| TypeScript | Biblioteca de TypeScript |
| .NET | Biblioteca de .NET |
| Python | Biblioteca de Python |