Acceso a la API pública de Azure Sphere con la entidad de servicio de la aplicación de AAD
Importante
Esta es la documentación de Azure Sphere (heredado). Azure Sphere (heredado) se retira el 27 de septiembre de 2027 y los usuarios deben migrar a Azure Sphere (integrado) en este momento. Use el selector de versiones situado encima de la TOC para ver la documentación de Azure Sphere (integrado).
Las herramientas automatizadas requieren acceso restringido y autenticación no interactiva en lugar de autenticarse como un usuario con privilegios completos. Esto se puede lograr mediante entidades de servicio que permiten a las aplicaciones iniciar sesión con permisos específicos. En pocas palabras, una entidad de servicio de Azure funciona como una identidad que se crea en Azure cuando una aplicación está registrada en Azure Active Directory.
En este modo, la entidad de servicio define el permiso de acceso para la aplicación en el inquilino de Azure Active Directory (AAD), que habilita la autenticación y la autorización al acceder a los recursos.
Hay dos tipos de métodos de autenticación disponibles para entidades de servicio, certificados de cliente y secretos de cliente.
Requisitos previos
- Inquilino de Azure Active Directory (dominio de inquilino).
- Inquilino de Azure Sphere.
- El secreto de cliente de la entidad de servicio o el certificado X509 que se usa para crear la entidad de servicio en formato PEM.
- Agregue el identificador de aplicación de API pública de Azure Sphere al inquilino de Azure.
Paso 1: Registrar una entidad de servicio
- En Azure Portal, en el panel de navegación izquierdo, haga clic en Azure Active Directory.
- Registre una aplicación con Azure AD y cree una entidad de servicio. Anote el identificador de cliente.
- Seleccione tipo de autenticación. Hay dos tipos de autenticación disponibles para las entidades de servicio:
- Secreto del cliente
- Certificado de cliente
Paso 2: Adición de la entidad de servicio al inquilino de Azure Sphere y asignación de un rol
Nota:
Asegúrese de que tiene lo siguiente antes de comenzar este paso:
- Inquilino de Azure Sphere: ejecute el comando **azsphere tenant show-selected** mediante la CLI de Azure Sphere.
- Identificador de inquilino de Azure: busque el identificador de inquilino a través de Azure Portal. Copie el identificador de inquilino de Azure Active Directory.
- Busque el identificador único del objeto de entidad de servicio asociado a esta aplicación:
- Vaya a Registros de aplicaciones y seleccione la aplicación que creó en paso 1: Registrar una entidad de servicio.
- En Aplicación administrada en directorio local, seleccione el vínculo con el nombre de la aplicación. Puede que la etiqueta de esta selección esté truncada.
- En la página Propiedades, copie el id. de objeto.
Azure Sphere trata la entidad de servicio como otro usuario. Para adquirir un token mediante la entidad de servicio, agregue primero el usuario de la entidad de servicio al inquilino de Azure Sphere y, a continuación, asigne un rol al usuario en un inquilino de Azure Sphere mediante la CLI de Azure Sphere.
La identidad del usuario se puede generar como <ObjectID>@<TenantID.onmicrosoft.com>.
En el ejemplo siguiente se crea un usuario mediante una combinación de id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
. de objeto y id zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
. de inquilino de Azure AD en el identificador tttttttt-tttt-tttt-tttt-tttttttttttt
de inquilino de Azure Sphere y, a continuación, se agrega el rol Colaborador para este usuario.
Inicie sesión con el inicio de sesión de Azure Sphere mediante la CLI de Azure Sphere:
azsphere login
Seleccione el inquilino necesario:
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
Para agregar el usuario a un rol necesario:
azsphere role add --role Contributor --user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
Paso 3: Registro de secretos de cliente o certificados de cliente mediante el portal de registro de aplicaciones
Los secretos de cliente y los certificados de cliente permiten a las aplicaciones identificarse en el servicio de autenticación al recibir tokens en una ubicación direccionable web (mediante un esquema HTTPS). Se recomienda usar un certificado en lugar de un secreto de cliente para escenarios de credenciales de cliente al autenticarse con Azure Active Directory.
El secreto de cliente o el certificado de cliente para el registro de aplicación se puede usar para obtener un token de acceso para la API pública (PAPI) de Azure Sphere.
Configuración de la aplicación con secreto de cliente
Para registrar la aplicación con un secreto de cliente:
En el panel de navegación izquierdo de Azure Portal, haga clic en Azure Active Directory.
Vaya a Registros de aplicaciones y seleccione la aplicación que creó en paso 1: Registrar una entidad de servicio.
En el panel izquierdo, seleccione Certificados y secretos Sección> Secretos de> cliente Nuevo secreto de cliente.
Escriba una descripción, seleccione la duración de validez y después seleccione Agregar. Se genera el secreto de cliente y se muestra el valor del secreto de cliente.
Copie el valor del secreto de cliente porque no podrá recuperar la clave más adelante.
Proporcione el valor del secreto de cliente con el identificador de aplicación de API pública de Azure Sphere para iniciar sesión como aplicación. Guarde el valor de clave donde la aplicación pueda recuperarlo.
Importante
El valor del secreto de cliente es una credencial de seguridad importante. No comparta el secreto de cliente con nadie ni distribúyalo dentro de una aplicación cliente. Se recomienda usar el servicio Azure Key Vault que proporciona administración centralizada de secretos, con control total sobre las directivas de acceso y el historial de auditoría.
Use el código de ejemplo siguiente:
IConfidentialClientApplication app =
ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")
.WithClientSecret("<<App registration Client Secret Value>>")
.WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")
.Build();
string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };
AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
string accessToken=result.AccessToken;
Configuración de la aplicación con certificado de cliente
Para configurar el certificado de cliente:
- En el panel de navegación izquierdo de Azure Portal, haga clic en Azure Active Directory.
- Vaya a Registros de aplicaciones y seleccione la aplicación que creó en paso 1: Registrar una entidad de servicio.
- En el panel izquierdo, seleccione Certificados y secretos>Cargar>certificado. Seleccione el certificado (un certificado existente o el certificado autofirmado que exportó).
- Después de registrar el certificado con la aplicación en el portal de registro de aplicación, habilite el código de la aplicación cliente para usar el certificado.
Para registrar la aplicación con un certificado de cliente, use el código de ejemplo siguiente:
IConfidentialClientApplication app =
ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")
.WithCertificate("<<App registration Certificate>>")
.WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")
.Build();
string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };
AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
string accessToken=result.AccessToken;
Nota:
Tendrá que agregar MSAL.Net biblioteca para usar IConfidentialClient.