我有一个由OWIN保护的Web API,需要使用Azure Active Directory对用户进行身份验证。我可以通过Postman使用Microsoft授权URL获取的访问令牌发出请求。
但是,在我的Angular客户端(也由Azure AD保护)中,如果没有重定向到API,我无法获取Web API的访问令牌。有没有办法让客户端应用程序(其客户端ID与服务器API不同)检索它需要在API请求的Authorization标头中使用的访问令牌?
答案 0 :(得分:0)
您已在Azure Active Directory(您的UI和API)中注册了两个应用程序。您需要代表 API 的当前用户授予UI访问权限。您使用注册的UI应用程序ID登录用户,最后检索API的访问令牌。
这里是ng2-adal
组件的伪代码:
import { Injectable } from '@angular/core';
@Injectable()
export class AuthconfigService {
constructor() { }
public get adalConfig(): any {
return {
tenant: 'yourTenant.onmicrosoft.com',
clientId: 'UI AppId (GUID)',
redirectUri: window.location.origin + '/',
postLogoutRedirectUri: window.location.origin + '/'
};
}
public get apiKey(): string
{
return "API AppId (GUID)";
}
}
然后在你的app.component.ts中:
this.adalService.init(this.authconfigService.adalConfig);
this.adalService.login();
this.adalService.acquireToken(this.authconfigService.apiKey).subscribe(
(data) => {
.....});