【发布时间】:2019-04-11 11:33:29
【问题描述】:
我在 React 应用程序中使用 MSAL for JavaScript 来针对 Azure AD 进行身份验证。我能够成功验证用户身份并获取 id 令牌和访问令牌。但检索到的访问令牌无法访问受 Azure AD 保护的 API。
一切都在 Azure AD 端进行配置,因为我可以使用检索到的访问令牌通过 dotnet 核心 Web 应用程序与 API 对话。
dotnet core app 和 react app 的区别在于“resource”属性。我不确定如何将其包含在 MSAL 的请求中。
我的反应代码:
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);
}
);
});
}
对于 dotnet 核心应用程序,我使用的配置与 Azure AD 应用程序中配置的两个 URL 相同。
.AddOpenIdConnect(o =>
{
....
o.Resource = "GUID of the API";
});
我没有使用 MSAL 发送此资源参数。不确定如何发送该参数以及是否是问题所在。
感谢任何帮助。
【问题讨论】:
-
我花了一些时间来了解
msal.js中作用域的价值。您是否使用 Fiddler 或等效工具来捕获您的流量? Postman 非常适合在添加代码之前确认请求。 github.com/AzureAD/microsoft-authentication-library-for-js/blob/… --
标签: azure-active-directory msal msal.js