2
votes

Try to use adal-angular5 and have problem with Adal5Service.acquireToken method: it is always falls with:

Token renewal operation failed due to timeout

Online full example on StackBlitz. To test:

  • paste your tenant
  • paste your clientId
  • register URL https://angular-96tws9.stackblitz.io in Azure Portal for your app
  • open in new window

Here is app.component.ts:

import { Component, OnInit } from '@angular/core';
import { Adal5Service } from 'adal-angular5';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  constructor(private adalSvc: Adal5Service) {
    let config: adal.Config = {
      tenant: 'XXX.onmicrosoft.com',
      clientId: '21efffd5-29fc-XXX',
      postLogoutRedirectUri: window.location.origin,
      endpoints: {
        graphApiUri: "https://graph.microsoft.com",
      },
      cacheLocation: "localStorage",
      redirectUri: ''
    };

    this.adalSvc.init(config);
  }

  ngOnInit(): void {
    this.adalSvc.handleWindowCallback();

    if (!this.adalSvc.userInfo.authenticated) {
      this.adalSvc.login();
      return;
    }

    // work correct
    console.log(this.adalSvc.userInfo.username);

    this.adalSvc.acquireToken("https://graph.microsoft.com")
      .subscribe(
        token => console.log(token), // never comes
        error => console.log(error)); // error: Token renewal operation failed due to timeout
  }
}

There are correct acquired token In network: enter image description here

Error on page enter image description here

Here is package.json:

{
  "name": "angular-template",
  "description": "",
  "homepage": "https://stackblitz.com/edit/angular-96tws9",
  "dependencies": {
    "@angular/animations": "^5.0.0",
    "@angular/common": "5.0.0",
    "@angular/compiler": "5.0.0",
    "@angular/core": "5.0.0",
    "@angular/forms": "5.0.0",
    "@angular/http": "^5.0.0",
    "@angular/platform-browser": "5.0.0",
    "@angular/platform-browser-dynamic": "5.0.0",
    "@angular/router": "5.0.0",
    "core-js": "2.5.1",
    "rxjs": "5.5.2",
    "zone.js": "0.8.18",
    "adal-angular5": "1.0.36"
  },
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "devDependencies": {
    "@angular/cli": "1.5.4",
    "@angular/compiler-cli": "^5.0.0",
    "@angular/language-service": "^5.0.0",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.0.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.0.4",
    "tslint": "~5.3.2",
    "typescript": "~2.4.2"
  }
}
3
Can you post your package.json? - Milo
@Milo, added package.json. Also full online demo example - user1167761

3 Answers

0
votes

I'm not sure if it's your implementation but it seems other people are having this issue as well. This issue on ng2-adal states that there is an issue w/ acquireToken() for [email protected] (read last comment).

adal-angular is the underlying package for both of those adal implementations. I ran into this myself using ng2-adal and downgraded to [email protected] and got acquireToken() to work. Not sure how adal-angular5 handles this though.

Here is example I used with ng2-adal package (using Angular/.NET Core) and another (standalone) if you are looking to try ng2-adal. Hope this helps.

0
votes

Finally get it working, without adal-angular5 library. Here is full example of

  • authorize user
  • acquire token for Microsoft Graph Api
  • get user messages from Microsoft Graph Api
  • silence renew token

Example use only standard Adal.js (without wrappers) and typings from @types/adal-angular.

Angular routs is working. Also, there are no double requests when renewing token.

0
votes

The error is from the reference of dependency : adal-angular In library adal-angular5 the depency is not good. You don't have to restart with adal-angular. This topic save my day : benbaran issue comment