Angular客户端需要Web API的访问令牌

时间:2018-03-13 20:44:57

标签: angular rest azure azure-active-directory

我有一个由OWIN保护的Web API,需要使用Azure Active Directory对用户进行身份验证。我可以通过Postman使用Microsoft授权URL获取的访问令牌发出请求。

但是,在我的Angular客户端(也由Azure AD保护)中,如果没有重定向到API,我无法获取Web API的访问令牌。有没有办法让客户端应用程序(其客户端ID与服务器API不同)检索它需要在API请求的Authorization标头中使用的访问令牌?

1 个答案:

答案 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) => {
.....});