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.

Angular 12 con .NET y Autenticación de Dominio de Windows

Así que he estado intentando configurar el inicio de sesión de Angular con la autenticación del dominio de Windows y el backend está alojado con .NET. Cada recurso en Internet sobre esto sugiere agregar un interceptor en el lado de Angular:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<><any>> {
req = req.clone({ withCredentials: true });
return next.handle(req);
}

y registrándolo en app.module

providers: [
{ provide: HTTP_INTERCEPTORS, useClass: CredentialsInterceptor, multi: true}
],

Entonces, una solicitud HTTP de muestra en un servicio

this.http.get(this.baseUrl + 'user')

Pero al hacer una solicitud que devuelve [500] (https://i.stack.imgur.com/rz9f9.png) con el error de política CORS:

No se presenta el encabezado ‘Access-Control-Allow-Origin’ en el recurso solicitado.

Y lo que resulta extraño, los encabezados de cors necesarios ya se han agregado en el backend. Dado que estoy trabajando solo en el frontend, ¿hay algo que se pueda agregar en el lado de Angular? Lo que espero es que se muestre una ventana de inicio de sesión de Windows Domain después de hacer una solicitud http. Se agradecerá cualquier ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para el inicio de sesión de Angular con autenticación de dominio de Windows y un backend .NET.

    Al configurar el inicio de sesión de Angular con autenticación de dominio de Windows y un backend .NET, el backend debe enviar el encabezado Access-Control-Allow-Origin en la respuesta para permitir el intercambio de recursos entre distintos orígenes. Sin embargo, en este caso, incluso si se han agregado los encabezados CORS necesarios en el backend, se devuelve un error de “No se encontró el encabezado ‘Access-Control-Allow-Origin’ en el recurso solicitado” al realizar una solicitud en el lado de Angular.

    Para resolver este problema, puede probar las siguientes soluciones:

    1. Verifique los encabezados CORS: En primer lugar, verifique que se hayan agregado los encabezados CORS correctos en el backend. Además de Access-Control-Allow-Origin, puede ser necesario agregar otros encabezados, como Access-Control-Allow-Credentials, Access-Control-Allow-Methods o Access-Control-Allow-Headers. Verifique los encabezados para asegurarse de que incluyan lo que es necesario.
    2. Configure el frontend: En Angular, puede configurar el frontend para enviar un encabezado de origen adecuado en la solicitud. Para hacer esto, puede modificar el código del interceptor de la siguiente manera:

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<><any>> {
           req = req.clone({
               setHeaders: {
                   "Content-Type": "application/json",
                   "Access-Control-Allow-Origin": "http://localhost:4200",
                   "Access-Control-Allow-Credentials": "true"
               },
               withCredentials: true
           });
           return next.handle(req);
    

    Aquí, establece los encabezados Access-Control-Allow-Origin y Access-Control-Allow-Credentials necesarios para que coincida con la configuración del backend. Asegúrate de establecer también el encabezado Content-Type, ya que es necesario para las solicitudes POST.

    1. Verificar la configuración en app.module: Asegúrese de que el CredentialsInterceptor esté registrado correctamente en el archivo app.module.
    providers: [
           { provide: HTTP_INTERCEPTORS, useClass: CredentialsInterceptor, multi: true },
       ],
    

    Con estos cambios, debería poder realizar una solicitud HTTP y ver la ventana de inicio de sesión de Windows Domain para la autenticación.

Comments are closed.