我正在使用Azure活动目录构建Angular 9 + Asp.Net Core WebApi应用程序以在多租户上下文中进行身份验证。 WebApi组件必须调用某些MS Graph Api。因此,根据文档,我在门户上创建了两个应用程序(每个组件一个)。在Web 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。因此,遵循...
该代码使用Implicit grant flow,您无法在consentScopes
中指定Microsoft Graph权限以及您自己的Web api权限,只能通过一个API的权限指定consentScopes
。