Azure active directory 访问令牌不包括对带有MSAL的API的访问
我正在react应用程序中使用以针对Azure AD进行身份验证。我能够成功验证用户身份并获取id令牌和访问令牌。但是检索到的访问令牌无法访问受Azure AD保护的API 一切都配置为在Azure AD端查找,因为我可以使用检索到的访问令牌使用dotnet核心web应用程序与API对话 dotnet核心应用程序和react应用程序之间的区别在于“资源”属性。我不知道如何将其包含在MSAL的请求中 我的反应代码:Azure active directory 访问令牌不包括对带有MSAL的API的访问,azure-active-directory,msal,msal.js,Azure Active Directory,Msal,Msal.js,我正在react应用程序中使用以针对Azure AD进行身份验证。我能够成功验证用户身份并获取id令牌和访问令牌。但是检索到的访问令牌无法访问受Azure AD保护的API 一切都配置为在Azure AD端查找,因为我可以使用检索到的访问令牌使用dotnet核心web应用程序与API对话 dotnet核心应用程序和react应用程序之间的区别在于“资源”属性。我不知道如何将其包含在MSAL的请求中 我的反应代码: userAgentApplication = new UserAgentAppli
userAgentApplication = new UserAgentApplication(
"<clientid>",
"<azureAdUrl>",
this.authCallback,
{ redirectUri: "http://localhost:3000/", cacheLocation: "localStorage" }
);
authCallback(errorDesc, token, error, tokenType) {
if (token) console.log(token);
}
login() {
this.userAgentApplication.loginRedirect().then(function(idToken) {
this.userAgentApplication.acquireTokenSilent().then(
function(accessToken) {
console.log('Access Token: ' + accessToken);
}
);
});
}
我没有将此资源参数与MSAL一起发送。不确定如何发送该参数,以及这是否是问题所在
非常感谢您的帮助。MSAL使用的是范围的概念,而不是资源。 阅读您的问题时,我的印象是这是一个v1webapi(在应用程序注册刀片服务器中注册了? 如果是这种情况,资源的作用域可能是o.resource+“/user\u模拟” 如果它是v2.0 API(已注册)或Azure门户,但具有新的应用程序注册(预览),则范围将在注册时提供
对于ASP.NET核心应用程序,您可能需要查看以下示例:,可能是这个分支我花了一些时间来理解
msal.js
中作用域的值。您是否使用Fiddler或等效工具来捕获流量?在添加代码之前,Postman非常适合确认请求。--是的,它已注册作为v1 web api。我尝试使用范围作为/user\u模拟。我可以看到同意屏幕现在包括api访问,但使用令牌的api调用仍然不起作用。我删除了我的Azure应用并重新创建了它们,只是为了确保,现在我的dotnet应用的访问令牌也不起作用。我如何设置应用可能有问题,但是ldn不明白。我可以使我的.net core应用正常工作,但不能使react应用正常工作。我注意到的唯一区别是.net core应用使用客户端\u密码获取访问令牌,而react应用没有。我不想使用该密码。
.AddOpenIdConnect(o =>
{
....
o.Resource = "GUID of the API";
});