1

我有 Angular 应用程序版本 6,我正在尝试集成 Azure AD 身份验证,并且微服务位于 AWS 中。

令人惊讶的是,我得到了 access_token 和 id_token 的相同代码。他们应该是不同的吗?我的架构师这么认为,并要求我调整库以将 responseType 发送为“id_token+token”。

我做错了什么,有什么办法可以让 access_token 作为 api 调用的标头发送?我还附上了 api c microsoftadal-api failed alls 的控制台错误截图。

下面是我试图读取访问令牌以验证 api 调用的代码。

enter code here
export class AppComponent {
loading: boolean;
constructor(private adalSvc: MsAdalAngular6Service, private router: Router,
private http: HttpClient) {
this.adalSvc.acquireToken('https://api.test.test.com/Dev')
.subscribe((resToken: string) => {
console.log(this.adalSvc.userInfo);
console.log('get resToken -->', resToken);
console.log('get oid -->', this.adalSvc.userInfo.profile.oid);
console.log('get accessToken -->', this.adalSvc.accessToken);
localStorage.setItem('accessToken', this.adalSvc.accessToken);
console.log('get token -->', this.adalSvc[enter image description here][1]
.getToken('https://api.test.test.com/test?userId=111111'));
this.configureRoutes();
this.loading = true;
this.http.get('https://api.test.test.com/test?userId=11111', {
headers: {
'Authorization': 'Bearer ' + this.adalSvc.accessToken,
'userid': this.adalSvc.userInfo.profile.oid,
'username': 'username',
'userrole': 'somerole'
}
}).subscribe(console.log);
this.postCall();
},
error => {
console.log(error);
});
}
postCall() {
const data = {
'dealerId': '111111'
};
const headers = new Headers();
headers.append('Authorization', 'Bearer ' + this.adalSvc.accessToken);
headers.append('userid', this.adalSvc.userInfo.profile.oid);
headers.append('username', 'username');
headers.append('userrole', 'somerole');
return this.http.post(
'https://api.test.test.com/test', data, {
headers: {
'Authorization': 'Bearer ' + this.adalSvc.accessToken,
'userid': this.adalSvc.userInfo.profile.oid,
'username': 'username',
'userrole': 'somerole'
}
}).subscribe((response: Response) => {
console.log(response.json());
});
}
configureRoutes() {
this.router.navigate(['/dealer/home']);
}
}
4

1 回答 1

0

确保您指定了正确的资源。

您需要发送到后端 API 的是 id_token 而不是 access_token。然后就可以从 id_token 中获取 access_token 了。

看起来你可能犯了与这里的用户犯的同样的错误。

于 2019-01-14T06:05:56.850 回答