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.

Usando el Token Antifalsificación de ASP.NET Core 6 Web API en un consumidor externo (Aplicación) sin autenticación.

¿Cómo puedo utilizar un token Antiforgery en ASP.NET Core 6 Web API con un consumidor externo como una aplicación iOS o Android? No necesito autenticación de usuario para las solicitudes. La aplicación está alojada en otro dominio.

He desarrollado una Web API con un token Antiforgery (Siguiendo este enlace: link) y ASP.NET 6 Razor Pages. Todo funciona perfectamente. Pero, ¿cómo puedo desarrollar una aplicación externa que utilice esta Web API? El problema es que no tengo idea de cómo puedo crear el token Antiforgery desde la aplicación “externa”. ¿Cómo puedo configurar la aplicación para usar la Web API con el token Antiforgery?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para usar un Token Antifalsificación en una API web ASP.NET Core 6 con un consumidor externo como una aplicación iOS o Android, puedes seguir los siguientes pasos:

    1. En tu proyecto de API web ASP.NET Core, instala el paquete NuGet Microsoft.AspNetCore.Antiforgery si aún no lo has hecho.
    2. Después de instalar el paquete, agrega el método services.AddAntiforgery() al método ConfigureServices en tu clase Startup:

      public void ConfigureServices(IServiceCollection services)
      {
         services.AddAntiforgery(options => options.HeaderName = "X-CSRF-TOKEN");
         // ...
      }
      

      Esto registrará el middleware del Token Antifalsificación en tu aplicación y establecerá el nombre del encabezado como “X-CSRF-TOKEN”.

    3. En tus métodos de acción de controlador que requieren el Token Antifalsificación, agrega el atributo [ValidateAntiForgeryToken]:

      [HttpPost]
      [ValidateAntiForgeryToken]
      public IActionResult SomeAction(SomeModel model)
      {
         // ...
      }
      

    4. En tu aplicación externa, puedes obtener el Token Antifalsificación del servidor enviando una solicitud GET al punto final /api/antiforgerytoken (o cualquier punto final que hayas configurado):
      using (var client = new HttpClient())
      {
         var response = await client.GetAsync("https://example.com/api/antiforgerytoken");
         var token = await response.Content.ReadAsStringAsync();
         // guarda el token para usarlo más tarde
      }
      
    5. Cuando realices solicitudes POST a tu API web ASP.NET Core, incluye el Token Antifalsificación en el encabezado de la solicitud:
      using (var client = new HttpClient())
      {
         // obtén el token de antes
         var token = "some-antiforgery-token";
      
         // establece el encabezado de la solicitud
         client.DefaultRequestHeaders.Add("X-CSRF-TOKEN", token);
      
         // crea y envía la solicitud POST
         var content = new StringContent(json, Encoding.UTF8, "application/json");
         var response = await client.PostAsync("https://example.com/api/someaction", content);
         // ...
      }
      

    Al incluir el Token Antifalsificación en el encabezado de la solicitud, tu aplicación externa puede autenticarse y realizar solicitudes a tu API web ASP.NET Core sin requerir autenticación del usuario.

Comments are closed.