无法获得Angular SPA来使用Azure Active Directory验证ASP.NET MVC WebAPI

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (7)

我在Angular 2和ASP.NET MVC WebAPI中创建了一个单页面应用程序,它们都需要Azure Active Directory身份验证。这两个应用程序都在Azure门户中注册,并启用了OAuth2。SPA还有权访问WebAPI

在SPA中,我使用adaljs,它按预期工作。ASP.NET Web API配置为使用Windows Azure Active Directory承载身份验证,这也是我能说的。

当SPA从WebAPI请求数据时,它在标头中发送承载授权令牌,但请求被拒绝(状态401 UNAUTHORIZED)。

I have created a sample project in in github: https://github.com/ranthonissen/angular2-adaljs-webapi, and described the steps I followed in more detail here: https://dotronald.be/creating-an-angular-single-page-application-with-azure-active-directory-and-adal-js-that-uses-an-asp-net-webapi/

What am I missing to get this setup to work?

提问于
用户回答回答于

根据代码,您使用clientId而不是第二个应用程序的app id URI获取访问令牌。

要解决此问题,我们可以在SPA中添加资源ID参数,如下所示:

secret.service.ts

import { Injectable } from '@angular/core';
@Injectable()
export class SecretService {
    public get adalConfig(): any {
        return {
            tenant: 'adnewfei.onmicrosoft.com',
            clientId: 'aac92cf9-32ab-4004-aeab-1046389dff79',
            redirectUri: window.location.origin + '/',
            postLogoutRedirectUri: window.location.origin + '/',
            resourceId:"https://ADNewFei.onmicrosoft.com/webAPIFei"
        };
    }
}

resourceId的值是您为Web API注册的应用程序的App ID URI。它应该匹配您在web.configWeb API项目中配置的值,如下所示:

  <appSettings>
    <add key="ida:ClientId" value="29fc9b4c-4d77-4ffa-b4af-674d6b0584f7" />
    <add key="ida:Tenant" value="adnewfei.onmicrosoft.com" />
    <add key="ida:Audience" value="https://ADNewFei.onmicrosoft.com/webAPIFei" />
    <add key="ida:Password" value="xxxxxx" />
  </appSettings>

扫码关注云+社区

领取腾讯云代金券