Я следовал руководству по созданию приложения Angular 6, которое использует библиотеку ADAL для оболочки angular, чтобы получить токен-носитель из Azure AD и использовать его для вызова моего API.
Учебник: https://spikesapps.wordpress.com/2017/07/27/securing-an-angular-application-with-azure-ad/
Аутентификация и получение токена работает нормально, но затем я пытаюсь вызвать мой API:
this.http .get('https://foo.azurewebsites.net/' + this.url, this.prepareOptions()) .pipe( map((r: Response) => { const a = r['data'] as BIExplorerSettings; if (a) { this.BIExplorerSettings = a; this.alreadyFetchedSettings = true; } return a; })) prepareOptions(): any { let headers = new HttpHeaders(); headers = headers .set('Content-Type', 'application/json') .set('Authorization', `Bearer ${this.adal6Service.userInfo.token}`); return { headers }; }
Но мое приложение НЕ вызывает API под "https://foo.azurewebsites.net/". Вместо этогопереход на веб-сайт корпорации Майкрософт, например:
https://login.microsoftonline.com/foo.com/oauth2/authorize?response_type=token&client_id=xxxxxxx-xxx-xxx-xxxxx-xxxxx&resource=xxxxxxx-2342-xxxx-xxxx-0292xxxxxx&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fframe%2Fportal%2Fhome&state=a99xxxx7-xxx6-xxxc-a7b5-9xxxxx4c%7Cbceb8191-2342-4xxx-b48b-029xxxxxd4a&client-request-id=50xxxx9-fa10-xxxx-9e36-bbf9062xxxx&x-client-SKU=Js&x-client-Ver=1.0.16&prompt=none&login_hint=username%40foo.com&domain_hint=foo.com
Меня это смущает. Я только хочу перенаправить свой токен на мой API. Но по какой-то причине клиент-упаковщик ADAL переходит на Microsoftстр.
Есть ли какие-либо обвинения, почему это происходит?
microsoft-adal-angular6 Если вы используете angular 6+, вы можете использовать этот пакет, он гораздо проще и удобнее https://www.npmjs.com/package/microsoft-adal-angular6
Более того, вам нужно добавить URL перенаправления входа и выхода вВаш Azure рекламный аккаунт в службе приложений
Необходимо проверить, есть ли у веб-сайта разрешения на доступ к API, и неявный поток в манифесте имеет значение true.