【发布时间】:2020-05-23 02:01:05
【问题描述】:
我有一个带有 Web 触发器端点的 Azure 函数设置,我想将其用作 React 应用程序的后端。没有身份验证设置,它工作正常。当我使用 AD 设置应用服务身份验证时,当我直接通过浏览器访问(身份验证后)时它工作正常,但是当我尝试从提供承载令牌的 JS 访问时,我得到一个 401。
const response = await axios.get(`${window.apiUrl}api/jobs`, {
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer ' + token.accessToken,
},
});
客户端应用程序在 Azure 上运行并注册为 Azure AD 应用程序。我能够成功地进行身份验证、查询 AD 和使用 MS Graph API。
我正在使用内置的 Azure 应用服务 AD 身份验证。我将客户端 ID 设置为与前面提到的 Azure AD 应用程序相同的客户端 ID,以及相同的颁发者 URL。
尝试获取会话令牌:
const accessToken = await authProvider.getAccessToken();
const idToken = await authProvider.getIdToken();
const login = await axios.post(
'https://<appname>.azurewebsites.net/.auth/login/aad',
{ access_token: accessToken.accessToken },
{
headers: {
'Content-Type': 'application/json',
},
},
);
更多信息
我的 aud 声明是 00000003-0000-0000-c000-000000000000。在 Azure 门户中,我的 Azure Function 配置为使用与我的 SPA 相同的 Azure AD 应用程序。我在我的 SPA 中使用 MSAL.js 进行身份验证。我正在请求 User.Read 和 Directory.Read.All 范围。
【问题讨论】:
-
需要更多信息。这里有一些东西要收集。 1)您可以将访问令牌粘贴到jwt.ms 中,然后查看“aud”声明。你能把这些信息贴在这里吗? 2) 您在身份验证/授权刀片上的配置 - 您已为特定 App ID 配置 3) 您在 SPA 中使用什么 - 是 ADAL.js 还是 MSAL.js 4) 在您的 SPA 中您的范围列表是什么您正在请求。
-
@SaeedAkhter 请求的信息已添加到 OP。
标签: azure azure-active-directory azure-functions