Creé un proyecto de Angular CLI con una referencia de proxy a mi proyecto de back-end que contiene los servicios de API web.
launchSettings.json (proyecto de fondo):
... "iisSettings": { "windowsAuthentication": true, "anonymousAuthentication": false, "iisExpress": { "applicationUrl": "http://localhost:10863/", "sslPort": 0 } }, ...proxy.conf.json (proyecto de interfaz):
{ "/api": { "target": "http://localhost:10863", "secure": false, "logLevel": "debug" } }paquete.json (proyecto de interfaz):
... "scripts": { "ng": "ng", "start": "start http://localhost:4200 && ng serve --proxy-config proxy.conf.json", "build": "ng build --prod --output-path=..\\CoreTest\\wwwroot", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, ... Luego enciendo el back-end y ejecuto el servidor web Kestrel ejecutando npm start . Con un servicio angular2 hago un http-get a uno de los servicios de back-end. Dado que los servicios de back-end se ejecutan en IISExpress con autenticación de Windows (quiero autenticación de Windows), aparece un error 401.
Podría hacer npm run build y buscar mi URL de IISExpress y cargar el index.html publicado por ng build, pero me gustaría usar el método ng serve ya que el desarrollo es mucho más fluido porque ng serve funciona en la memoria.
Mi pregunta es: ¿cómo puedo usar Angular CLI con la autenticación de Windows durante el desarrollo?
Por lo que vale, una mejor solución es usar un archivo proxy js https://github.com/angular/angular-cli/issues/5627#issuecomment-289381319
Encontré un truco aquí: http://www.meekdeveloper.com/angular-cli-asp-net-core-windows-authentication/ funciona. Mi proyecto backend ahora puede identificar correctamente al usuario que llama con User.Identity.Name . Realmente es un truco, ¡sería bueno si Angular CLI pudiera admitir esto oficialmente!
Espero que esto ayude.
Cree un archivo proxy.conf.json con los siguientes contenidos (reemplace la URL de destino con la URL de su backend):
{ "/api": { "target": "http://localhost:20938", "secure": false } }Cree un archivo proxy.conf.js con los siguientes contenidos (reemplace la URL de destino con la URL de su backend):
const Agent = require("agentkeepalive"); module.exports = { '/api': { target: "http://localhost:20938", secure: false, agent: new Agent({ maxSockets: 100, keepAlive: true, maxFreeSockets: 10, keepAliveMsecs: 100000, timeout: 6000000, keepAliveTimeout: 90000 }), onProxyRes: proxyRes => { const key = "www-authenticate"; proxyRes.headers[key] = proxyRes.headers[key] && proxyRes.headers[key].split(","); } } };Ponga esta línea en su archivo package.json, en la sección "scripts":
"start": "ng serve --proxy-config proxy.conf.json --o --port 4200" ejecutar npm start .