多层应用程序注册中的MSAL同意问题(Angular + .NetCore WebApi)

问题描述 投票:0回答:1

我正在使用Azure活动目录构建Angular 9 + Asp.Net Core WebApi应用程序以在多租户上下文中进行身份验证。 WebApi组件必须调用某些MS Graph Api。因此,根据文档,我在门户上创建了两个应用程序(每个组件一个)。在Web Api应用程序中,我执行了以下操作:

  1. 添加了图形调用所需的授权
  2. 在清单的knownClientApplications部分中添加了客户端应用程序的ID
  3. 在“ expose Api”部分中定义了范围

在客户端应用程序上,我添加了以下第三点所定义的范围。

在我配置为的Angular App上,遵循MSal库:

   MsalModule.forRoot({
        auth: {
          clientId: 'CLIENT APP ID', // This is your client ID
          authority: 'https://login.microsoftonline.com/common', // This is your tenant info
          redirectUri: 'http://localhost:4200' // This is your redirect URI
        },
        cache: {
          cacheLocation: 'localStorage',
          storeAuthStateInCookie: true, // Set to true for Internet Explorer 11
        },
      },
      {
        popUp: true,
        consentScopes: [
          'user.read',
          'openid',
          'profile',
          'api://xxxxxxxxxxxxxxxxxx/.default'
        ],
        unprotectedResources: ['http://localhost:4200'],
        protectedResourceMap: [
          ['https://localhost:44351', ['api://xxxxxxxxxxxxxxx/api_usage']]
        ],
        extraQueryParameters: {}
      })

问题是:当我登录时,唯一的提示提示是“用户读取信息”和“用户保存信息”。未报告对Web api的同意,因此未创建Web api客户租户中的Web api服务主体,最近,以下从Web api调用图的操作失败没有许可证。

为了测试目的,我试图将其他范围(例如calendar.read或place.read放入Msal配置的consentScopes中,但结果是相同的:唯一需要的同意是上述两个。)>

任何人都可以帮助我吗?

我正在使用Azure活动目录构建Angular 9 + Asp.Net Core WebApi应用程序以在多租户上下文中进行身份验证。 WebApi组件必须调用某些MS Graph Api。因此,遵循...

angular asp.net-core azure-active-directory microsoft-graph msal
1个回答
0
投票

该代码使用Implicit grant flow,您无法在consentScopes中指定Microsoft Graph权限以及您自己的Web api权限,只能通过一个API的权限指定consentScopes

© www.soinside.com 2019 - 2024. All rights reserved.