У меня есть два приложения: пользовательский интерфейс и API. Я использую Azure AD для защиты обоих. Поэтому я создал две регистрации приложений в Azure AD. Я добавил разрешения для API в проекте пользовательского интерфейса.
Я использую Nodejs с passport-azure-ad и следовал инструкциям здесь . Я использую expressjs вместо restify.
auth.js (конфигурация Azure):
credentials = {
identityMetadata: `https://login.microsoftonline.com/<tenantName>.onmicrosoft.com/.well-known/openid-configuration`,
clientID: <clientid>
};
const authenticationStrategy = new BearerStrategy(
credentials,
(token, done) => {
let currentUser = null;
let userToken = authenticatedUserTokens.find(user => {
currentUser = user;
user.sub === token.sub;
});
if (!userToken) {
authenticatedUserTokens.push(token);
}
return done(null, currentUser, token);
});
module.exports= authenticationStrategy;
App.js: (файл запуска узла)
const authStrategy = require('./auth');
....
app.use(passport.initialize());
app.use(passport.session());
passport.use(authStrategy);
app.use("/api", passport.authenticate('oauth-bearer', { session: false }),
(req, res, next) =>{
res.json({ message: 'response from API endpoint' });
return next();
});
Пользовательский интерфейс Angular использует adal-angular для проверки подлинности пользователей в Azure AD и работает нормально. Я пытаюсь использовать токен, полученный из этого приложения, для связи с API, который не работает.
Компонент пользовательского интерфейса:
import { Component } from "@angular/core";
import { AdalService } from "adal-angular4";
import { environment } from "src/environments/environment";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.sass"]
})
export class AppComponent {
accessToken:string;
ngOnInit() {
this.adalService.handleWindowCallback();
if (!this.adalService.userInfo.authenticated) this.adalService.login();
this.accessToken = this.adalService.getCachedToken(this.adalService.config.clientId);
}
logout(){
this.adalService.logOut();
}
constructor(private adalService: AdalService) {}
}
Я не могу отладить запросы, сгенерированные Passport, чтобы получить более подробную информацию об ошибке. Любая помощь в выявлении любых проблем с этой конфигурацией или способ отладки запросов на паспорт для сужения ошибки будут очень полезны.