Búsqueda de sitios web

typescript - La autenticación MSAL no funciona en Angular 17.0.5


Estoy implementando la autenticación MSAL en Angular 17.0.5 y no puedo autenticarme usando credenciales de AD y está dando un error 401 No autorizado. El mismo código estaba funcionando en Angular 11.2.12.

Estas son las dependencias de la aplicación

Node: 18.16.0
Package Manager: npm 9.5.1
"@angular/animations": "^17.0.0",
"@angular/cdk": "^17.0.2",
"@angular/common": "^17.0.0",
"@angular/compiler": "^17.0.0",
"@angular/core": "^17.0.0",
"@angular/forms": "^17.0.0",
"@angular/material": "^17.0.2",
"@angular/platform-browser": "^17.0.0",
"@angular/platform-browser-dynamic": "^17.0.0",
"@angular/router": "^17.0.0",
"@azure/msal-browser": "^3.0.0-alpha.2",
"minimatch": "^9.0.3",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.2"
  1. He intentado cambiar la versión de msal de ^3.6.0 a ^3.0.0-alpha.2.
  2. Se agregó system: { allowNativeBroker: false }.

dentro de PublicClientApplication en MSALInstanceFactory.

Respuesta #1

Puedo usar MSAL con Angular 17. Vea a continuación las versiones de Angular y MSAL junto con otros paquetes en package.json

"@angular/animations": "^17.0.5",
    "@angular/cdk": "^17.0.1",
    "@angular/common": "^17.0.5",
    "@angular/compiler": "^17.0.5",
    "@angular/core": "^17.0.5",
    "@angular/flex-layout": "^14.0.0-beta.41",
    "@angular/forms": "^17.0.5",
    "@angular/localize": "^17.0.5",
    "@angular/material": "^17.0.1",
    "@angular/platform-browser": "^17.0.5",
    "@angular/platform-browser-dynamic": "^17.0.5",
    "@angular/router": "^17.0.5",
    "@azure/msal-angular": "^3.0.11",
    "@azure/msal-browser": "^3.7.1",
    "@ng-bootstrap/ng-bootstrap": "^16.0.0",
    "bootstrap": "^5.3.2",
    "crypto-js": "^4.2.0",
    "exceljs": "^4.4.0",
    "file-saver": "^2.0.5",
    "hammerjs": "^2.0.8",
    "rxjs": "~7.8.1",
    "tslib": "^2.6.2",
    "zone.js": "~0.14.2"

También asegúrate de inicializar usando la siguiente línea en el cuerpo del constructor de tu servicio donde uses MSAL

this.msalService.initialize();

Respuesta #2

"@azure/msal-browser" aún no es compatible con Angular 17. Para usar las bibliotecas de @azure necesitas degradar Angular a la versión 16.

https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/6719