Autenticación y autorización en Azure Spatial Anchors

En este artículo obtendrá información sobre las distintas formas de autenticarse en Azure Spatial Anchors desde su aplicación o servicio web. También obtendrá información sobre las formas en que puede usar el control de acceso basado en rol (RBAC de Azure) en Microsoft Entra ID para controlar el acceso a las cuentas de Spatial Anchors.

Advertencia

Se recomienda usar claves de cuenta para la incorporación rápida, pero solo durante el desarrollo o la creación de prototipos. Asimismo, no es recomendable que envíe su aplicación a producción con una clave de cuenta insertada en ella. En su lugar, use los enfoques de autenticación de Microsoft Entra basados en el usuario o basados en el servicio que se describen a continuación.

Información general

Diagram that shows an overview of authentication to Azure Spatial Anchors.

Para obtener acceso a una determinada cuenta de Azure Spatial Anchors, los clientes deben obtener primero un token de acceso del servicio de token de seguridad (STS) de Azure Mixed Reality. Los tokens obtenidos de STS tienen una duración de 24 horas. Estos incluyen información de los servicios de Spatial Anchors que se usan para tomar decisiones de autorización acerca de la cuenta y asegurarse de que solo las entidades de seguridad autorizadas pueden tener acceso a esta.

Los tokens de acceso se pueden obtener a cambio de claves de cuenta o tokens emitidos por microsoft Entra ID.

Las claves de cuenta le permiten empezar a trabajar rápidamente con el servicio de Azure Spatial Anchors. Pero antes de implementar la aplicación en producción, se recomienda actualizar la aplicación para usar la autenticación de Microsoft Entra.

Puede obtener tokens de autenticación de Microsoft Entra de dos maneras:

  • Si va a compilar una aplicación empresarial y su empresa usa el identificador de Entra de Microsoft como sistema de identidad, puede usar la autenticación basada en el usuario de Microsoft Entra en la aplicación. Después, conceda acceso a las cuentas de Spatial Anchors mediante los grupos de seguridad existentes de Microsoft Entra. Igualmente, también puede conceder acceso directamente a los usuarios de la organización.
  • De lo contrario, se recomienda obtener tokens de Microsoft Entra de un servicio web que admita la aplicación. Se recomienda que use este método en las aplicaciones de producción, ya que le permite evitar la inserción de credenciales para obtener acceso a Azure Spatial Anchors en la aplicación cliente.

Claves de cuenta

La manera más sencilla de empezar es usar claves de cuenta para obtener acceso a la cuenta de Azure Spatial Anchors. Puede obtener las claves de cuenta en Azure Portal. Vaya a la cuenta y seleccione la pestaña Claves:

Screenshot that shows the Keys tab with the Copy button for the Primary key highlighted.

Hay disponibles dos claves. Ambas son válidas simultáneamente para obtener acceso a la cuenta de Spatial Anchors. Recuerde que es recomendable actualizar periódicamente la clave que use para acceder a la cuenta. Si cuenta con dos claves válidas independientes, podrá realizar las actualizaciones necesarias sin que se produzca tiempo de inactividad. Solo tiene que actualizar la clave principal y la clave secundaria de forma alternativa.

El SDK tiene compatibilidad integrada para realizar la autenticación a través de claves de cuenta. Solo tiene que establecer la propiedad AccountKey en el objeto cloudSession:

this.cloudSession.Configuration.AccountKey = @"MyAccountKey";

Una vez hecho esto, el SDK controlará el intercambio de la clave de cuenta para un token de acceso, así como el almacenamiento en caché necesario de tokens de la aplicación.

Autenticación de usuarios de Microsoft Entra ID

En el caso de las aplicaciones destinadas a usuarios de Microsoft Entra, se recomienda usar un token de Microsoft Entra para el usuario. Puede obtener este token mediante el MSAL. Siga los pasos descritos en la guía de inicio rápido sobre el registro de una aplicación, que incluye:

En Azure Portal

  1. Registre la aplicación en microsoft Entra ID como una aplicación nativa. Como parte del registro, deberá determinar si la aplicación debe ser multiinquilino. También debe proporcionar las direcciones URL de redireccionamiento permitidas en la aplicación.

  2. Vaya a la pestaña Permisos de API.

  3. Seleccione Agregar un permiso.

    1. Seleccione Mixed Reality Resource Provider (Proveedor de recursos de realidad mixta) en la pestaña API usadas en mi organización.
    2. Seleccione Permisos delegados.
    3. Seleccione mixedreality.signin en mixedreality.
    4. Seleccione Agregar permisos.
  4. Seleccione Conceder consentimiento de administrador.

  5. Asigne un rol RBAC de ASA a la aplicación o a los usuarios a los que quiera conceder acceso al recurso. Si quiere que los usuarios de la aplicación tengan roles diferentes en la cuenta de ASA, registre varias aplicaciones en el identificador de Microsoft Entra y asigne un rol independiente a cada uno. A continuación, implemente la lógica de autorización para usar el rol correcto para los usuarios. Para obtener los pasos de asignación de roles detallados, vea Asignación de roles de Azure mediante Azure Portal.

En el código

  1. Asegúrese de usar el identificador de aplicación y el URI de redirección de su propia aplicación de Microsoft Entra para los parámetros id. de cliente y RedirectUri en MSAL.
  2. Establezca la información del inquilino:
    1. Si la aplicación admite Solo mi organización, reemplace este valor por el id. de inquilino o el nombre de inquilino. Por ejemplo, contoso.microsoft.com.
    2. Si la aplicación admite las cuentas de cualquier directorio organizativo, reemplace este valor por Organizations.
    3. Si la aplicación admite Todos los usuarios de cuentas Microsoft, reemplace este valor porComún.
  3. En la solicitud de token, establezca el ámbito en https://sts.mixedreality.azure.com//.default. Este ámbito indicará al identificador de Entra de Microsoft que la aplicación solicita un token para el servicio de token de seguridad (STS) de Mixed Reality.

Después de completar estos pasos, la aplicación debe poder obtener de MSAL un token de Microsoft Entra. Puede establecer ese token de Microsoft Entra como en el authenticationToken objeto de configuración de sesión en la nube:

this.cloudSession.Configuration.AuthenticationToken = @"MyAuthenticationToken";

Autenticación del servicio Microsoft Entra

Para implementar aplicaciones que Azure Spatial Anchors en la producción, se recomienda usar un servicio de back-end que gestione las solicitudes de autenticación. A continuación se muestra una información general acerca del proceso:

Diagram that provides an overview of authentication to Azure Spatial Anchors.

En este caso, se supone que la aplicación usa su propio mecanismo para autenticarse en su servicio back-end. (Por ejemplo, una cuenta de Microsoft, PlayFab, Facebook, un identificador de Google o un nombre de usuario y una contraseña personalizados). Una vez que los usuarios se autentican en el servicio back-end, ese servicio puede recuperar un token de Microsoft Entra, intercambiarlo por un token de acceso para Azure Spatial Anchors y devolverlo a la aplicación cliente.

El token de acceso de Microsoft Entra se recupera a través de MSAL. Siga los pasos que se indican en la guía de inicio rápido para registrar una aplicación, que incluyen:

En Azure Portal

  1. Registre la aplicación en el identificador de Microsoft Entra:
    1. En Azure Portal, seleccione Microsoft Entra ID y, a continuación, seleccione Registros de aplicaciones.
    2. Seleccione Nuevo registro.
    3. Escriba el nombre de la aplicación, seleccione Aplicación web o API como tipo de aplicación y escriba la dirección URL de autenticación para el servicio. Seleccione Crear.
  2. En la aplicación, seleccione Configuración y, a continuación, seleccione la pestaña Certificados y secretos. Cree un nuevo secreto de cliente, seleccione una duración y, a continuación, seleccione Agregar. Asegúrese de guardar el valor del secreto. Deberá incluirlo en el código del servicio web.
  3. Asigne un rol RBAC de ASA a la aplicación o a los usuarios a los que quiera conceder acceso al recurso. Si quiere que los usuarios de la aplicación tengan roles diferentes en la cuenta de ASA, registre varias aplicaciones en el identificador de Microsoft Entra y asigne un rol independiente a cada uno. A continuación, implemente la lógica de autorización para usar el rol correcto para los usuarios. Para obtener los pasos de asignación de roles detallados, vea Asignación de roles de Azure mediante Azure Portal.

En el código

Nota:

Puede usar el ejemplo de servicio que está disponible como parte de las aplicaciones de ejemplo de Spatial Anchors.

  1. Asegúrese de usar el identificador de aplicación, el secreto de aplicación y el URI de redirección de su propia aplicación de Microsoft Entra como los parámetros id. de cliente, secreto y RedirectUri en MSAL.
  2. Establezca el identificador de inquilino en su propio identificador de inquilino de Microsoft Entra en el parámetro authority en MSAL.
  3. En la solicitud de token, establezca el ámbito en https://sts.mixedreality.azure.com//.default.

Después de completar estos pasos, el servicio back-end puede recuperar un token de Microsoft Entra. A continuación, puede cambiarlo por un token de MR que va a devolver al cliente. El uso de un token de Microsoft Entra para recuperar un token de MR se realiza a través de una llamada REST. A continuación se muestra una llamada de ejemplo:

GET https://sts.mixedreality.azure.com/Accounts/35d830cb-f062-4062-9792-d6316039df56/token HTTP/1.1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni<truncated>FL8Hq5aaOqZQnJr1koaQ
Host: sts.mixedreality.azure.com
Connection: Keep-Alive

HTTP/1.1 200 OK
Date: Sun, 24 Feb 2019 08:00:00 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1153
Accept: application/json
MS-CV: 05JLqWeKFkWpbdY944yl7A.0
{"AccessToken":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjI2MzYyMTk5ZTI2NjQxOGU4ZjE3MThlM2IyMThjZTIxIiwidHlwIjoiSldUIn0.eyJqdGkiOiJmMGFiNWIyMy0wMmUxLTQ1MTQtOWEzNC0xNzkzMTA1NTc4NzAiLCJjYWkiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJ0aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJhaWQiOiIzNWQ4MzBjYi1mMDYyLTQwNjItOTc5Mi1kNjMxNjAzOWRmNTYiLCJhYW8iOi0xLCJhcHIiOiJlYXN0dXMyIiwicmlkIjoiL3N1YnNjcmlwdGlvbnMvNzIzOTdlN2EtNzA4NC00ODJhLTg3MzktNjM5Y2RmNTMxNTI0L3Jlc291cmNlR3JvdXBzL3NhbXBsZV9yZXNvdXJjZV9ncm91cC9wcm92aWRlcnMvTWljcm9zb2Z0Lk1peGVkUmVhbGl0eS9TcGF0aWFsQW5jaG9yc0FjY291bnRzL2RlbW9fYWNjb3VudCIsIm5iZiI6MTU0NDU0NzkwMywiZXhwIjoxNTQ0NjM0MzAzLCJpYXQiOjE1NDQ1NDc5MDMsImlzcyI6Imh0dHBzOi8vbXJjLWF1dGgtcHJvZC50cmFmZmljbWFuYWdlci5uZXQvIiwiYXVkIjoiaHR0cHM6Ly9tcmMtYW5jaG9yLXByb2QudHJhZmZpY21hbmFnZXIubmV0LyJ9.BFdyCX9UJj0i4W3OudmNUiuaGgVrlPasNM-5VqXdNAExD8acFJnHdvSf6uLiVvPiQwY1atYyPbOnLYhEbIcxNX-YAfZ-xyxCKYb3g_dbxU2w8nX3zDz_X3XqLL8Uha-rkapKbnNgxq4GjM-EBMCill2Svluf9crDmO-SmJbxqIaWzLmlUufQMWg_r8JG7RLseK6ntUDRyDgkF4ex515l2RWqQx7cw874raKgUO4qlx0cpBAB8cRtGHC-3fA7rZPM7UQQpm-BC3suXqRgROTzrKqfn_g-qTW4jAKBIXYG7iDefV2rGMRgem06YH_bDnpkgUa1UgJRRTckkBuLkO2FvA"}

El encabezado de autorización tiene el formato siguiente: Bearer <Azure_AD_token>.

La respuesta contiene el token de MR en texto sin formato.

Ese token de MR se devuelve después al cliente. La aplicación cliente, a continuación, puede establecerlo como su token de acceso en la configuración de la sesión en la nube:

this.cloudSession.Configuration.AccessToken = @"MyAccessToken";

Control de acceso basado en roles de Azure

Para ayudarle a controlar el nivel de acceso concedido a aplicaciones, servicios o usuarios de Microsoft Entra del servicio, puede asignar estos roles preexistentes según sea necesario en las cuentas de Azure Spatial Anchors:

  • Propietario de la cuenta de Spatial Anchors. Las aplicaciones o los usuarios que tienen este rol pueden crear anclajes espaciales, consultarlos y eliminarlos. Al autenticarse en la cuenta mediante las claves de cuenta, el rol de propietario de cuenta de Spatial Anchors se asigna a la entidad de seguridad autenticada.
  • Colaborador de la cuenta de Spatial Anchors. Las aplicaciones o los usuarios que tienen este rol pueden crear anclajes espaciales y consultarlos, pero no pueden eliminarlos.
  • Lector de la cuenta de Spatial Anchors. Las aplicaciones o los usuarios que tienen este rol solo pueden consultar los anclajes espaciales. No pueden crear otros nuevos, eliminar los existentes ni actualizar sus metadatos. Este rol se usa normalmente para aplicaciones en las que algunos usuarios ajustan el entorno, mientras que otros solo pueden recuperar los anclajes colocados anteriormente en ese entorno.

Pasos siguientes

Cree su primera aplicación con Azure Spatial Anchors:

iOS