Estoy tratando de asegurar mi aplicación SPA contra la obtención de claves API para usuarios no autorizados. En primer lugar, creé Azure Maps en el portal y asigné la aplicación de registro de Azure Active Directory para ser propietario de todas las acciones de Azure Maps. Después de eso, obtuve el token del cliente C# usando la clase AzureTokenServiceProvider:
var azureServiceTokenProvider = new AzureServiceTokenProvider("RunAs=App;AppId={AppId};TenantId={TenantId};AppKey={AppKey}"); var token = await azureServiceTokenProvider.GetAccessTokenAsync("https://atlas.microsoft.com");El token obtenido del servidor se usó para representar el mapa del lado del cliente:
{ "authOptions":{ "authType": AuthenticationType.anonymous, "clientId":"{clientId}", "getToken": (resolve) => resolve('ey...') } }El mapa que usa este tipo de autenticación no se está representando, porque en la pestaña de red hay una respuesta con el código de estado 403 con cuerpo:
"Provided principal ID '{...}' was NotAllowed access with Azure Role Based Access Control. Confirm access at {...}. "target": "Microsoft.Maps/accounts/services/render/read"".
No estoy seguro de si mi configuración es correcta, pero pensé que el token de acceso logrado para la aplicación de registro relacionada con Azure Maps debería ser suficiente para representar el mapa de esta manera.
¿Qué debo hacer para generar un token que podría usarse en el método getToken en el lado del cliente?
Gracias de antemano por cualquier respuesta.