es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conexión de Blazor WASM utilizando ConfidentialClientApplicationBuilder

Estoy intentando implementar una llamada a un servicio existente de Azure utilizando ConfidentialClientApplicationBuilder en Blazor WASM. Recibo un error ‘Operación no admitida en esta plataforma’ cuando intento obtener un Token usando el comando ExecuteAsync(). ¿Existe otra forma de obtener un token o una manera de pasar el comando ExecuteAsync()?

“`csharp
private async Task<string> GetToken()
{
var app = ConfidentialClientApplicationBuilder.Create(ClientId)
.WithClientSecret(ClientSecret)
.WithAuthority(new Uri(AADInstance+ "/"+Tenant))
.Build();

<pre><code>string[] scopes = new string[] { AADInstance + ".default" };

AuthenticationResult result = null;
try{
AcquireTokenForClientParameterBuilder builderResult = app.AcquireTokenForClient(scopes);
var token = await builderResult.ExecuteAsync();
}
</code></pre>

}
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Blazor WASM se ejecuta en el lado del cliente y no puede realizar llamadas a servicios que requieren autenticación de la misma manera que las aplicaciones en el lado del servidor. El mensaje de error indica que el comando ExecuteAsync() no es compatible en Blazor WASM.

    Para llamar a un servicio de Azure desde una aplicación Blazor WASM, puedes utilizar la biblioteca de autenticación de Azure AD (MSAL.js) para autenticar al usuario y obtener un token de acceso. Luego, puedes utilizar el token de acceso para llamar al servicio de Azure.

    Aquí tienes un ejemplo de cómo puedes autenticar al usuario utilizando MSAL.js y obtener un token de acceso:

    private async Task<string> GetToken()
    {
        var msalConfig = new ConfigurationBuilder()
            .AddInMemoryCollection(new Dictionary<string, string="">()
            {
                {"ClientId", "tu-id-de-cliente"},
                {"TenantId", "tu-id-de-tenant"}, // O "common"
                {"Authority", "https://login.microsoftonline.com/{0}/v2.0"}
            })
            .Build();
    
        var cca = ConfidentialClientApplicationBuilder
            .FromConfiguration(msalConfig)
            .WithClientSecret("tu-client-secret")
            .Build();
    
        var scopes = new string[] { "https://tu-servicio/tu-alcance" };
    
        try
        {
            var result = await cca.AcquireTokenForClient(scopes).ExecuteAsync();
            return result.AccessToken;
        }
        catch (MsalException ex)
        {
            // Manejar fallo de autenticación
        }
    }
    

    Debes reemplazar los marcadores de posición en este ejemplo con tus propios valores, como el ID de cliente, el ID de tenant, el secreto de cliente y la URL del servicio. Una vez que tengas un token de acceso, puedes utilizarlo en tus llamadas de API para autenticarte como el usuario autenticado.</string,>

Comments are closed.