Autenticación
NoteEsta página asume que ya tienes un Proveedor de Identidad (IdP), como Google, Entra ID (anteriormente Azure AD) o Okta, que gestiona el proceso de autenticación y devuelve un token de acceso.
Aprende cómo permitir que los usuarios se autentiquen desde tu extensión usando OAuth 2.0 a través de un navegador web y luego regresen a tu extensión.
En OAuth 2.0, el término "tipo de concesión" (grant type) se refiere a la forma en que una aplicación obtiene un token de acceso. Aunque OAuth 2.0 define varios tipos de concesión, esta página solo describe cómo autorizar a los usuarios desde tu extensión utilizando el tipo de concesión de Código de Autorización (Authorization Code).
Flujo de concesión de código de autorización
El tipo de concesión de Código de Autorización es utilizado por clientes confidenciales y públicos para intercambiar un código de autorización por un token de acceso.
Después de que el usuario regresa al cliente a través de la URL de redirección, la aplicación obtiene el código de autorización de la URL y lo utiliza para solicitar un token de acceso.

La imagen anterior muestra que:
- La extensión de Docker solicita al usuario que autorice el acceso a sus datos.
- Si el usuario concede el acceso, la extensión solicita un token de acceso al proveedor de servicios, enviando la concesión de acceso del usuario y los detalles de autenticación para identificar al cliente.
- El proveedor de servicios valida estos detalles y devuelve un token de acceso.
- La extensión utiliza el token de acceso para solicitar los datos del usuario al proveedor de servicios.
Terminología de OAuth 2.0
- URL de autenticación (Auth URL): El endpoint del servidor de autorización del proveedor de la API para recuperar el código de autenticación.
- URI de redirección (Redirect URI): La URL de retorno (callback URL) de la aplicación cliente a la que se redirigirá después de la autenticación. Esta debe estar registrada con el proveedor de la API.
Una vez que el usuario introduce su nombre de usuario y contraseña, se autentica con éxito.
Abrir una página del navegador para autenticar al usuario
Desde la interfaz de usuario de la extensión, puedes proporcionar un botón que, al ser seleccionado, abra una nueva ventana en un navegador para autenticar al usuario.
Usa la API ddClient.host.openExternal para abrir un navegador con la URL de autenticación. Por ejemplo:
window.ddClient.openExternal("https://authorization-server.com/authorize?
response_type=code
&client_id=T70hJ3ls5VTYG8ylX3CZsfIu
&redirect_uri=${REDIRECT_URI});Obtener el código de autorización y el token de acceso
Puedes obtener el código de autorización desde la interfaz de usuario de la extensión indicando docker-desktop://dashboard/extension-tab?extensionId=awesome/my-extension como el redirect_uri en la aplicación OAuth que estás utilizando y concatenando el código de autorización como un parámetro de consulta (query parameter). El código de la interfaz de usuario de la extensión podrá entonces leer el parámetro de consulta del código correspondiente.
ImportantEl uso de esta función requiere el SDK de extensiones versión 0.3.3 en Docker Desktop. Debes asegurarte de que la versión del SDK requerida para tu extensión configurada con
com.docker.desktop.extension.api.versionen las etiquetas de imagen sea superior a 0.3.3.
Autorización
Este paso es donde el usuario introduce sus credenciales en el navegador. Una vez completada la autorización, el usuario es redirigido de vuelta a la interfaz de usuario de tu extensión, y el código de la interfaz de usuario de la extensión puede consumir el código de autorización que forma parte de los parámetros de consulta en la URL.
Intercambiar el código de autorización
A continuación, intercambias el código de autorización por un token de acceso.
La extensión debe enviar una solicitud POST al servidor de autorización OAuth con los siguientes parámetros:
POST https://authorization-server.com/token
&client_id=T70hJ3ls5VTYG8ylX3CZsfIu
&client_secret=YABbyHQShPeO1T3NDQZP8q5m3Jpb_UPNmIzqhLDCScSnRyVG
&redirect_uri=${REDIRECT_URI}
&code=N949tDLuf9ai_DaOKyuFBXStCNMQzuQbtC1QbvLv-AXqPJ_fNoteLas credenciales del cliente se incluyen en los parámetros de consulta del
POSTen este ejemplo. Los servidores de autorización OAuth pueden requerir que las credenciales se envíen como una cabecera de autenticación HTTP básica (HTTP Basic Authentication) o pueden admitir formatos diferentes. Consulta la documentación de tu proveedor de OAuth para obtener más detalles.
Almacenar el token de acceso
El SDK de extensiones de Docker no proporciona un mecanismo específico para almacenar secretos.
Se recomienda encarecidamente utilizar una fuente externa de almacenamiento para guardar el token de acceso.
NoteEl almacenamiento local (Local Storage) de la interfaz de usuario está aislado entre extensiones (una extensión no puede acceder al almacenamiento local de otra extensión), y el almacenamiento local de cada extensión se elimina cuando los usuarios desinstalan una extensión.
Qué sigue
Aprende cómo publicar y distribuir tu extensión