获取 AAD 应用程序访问令牌以使用客户端密钥调用 Azure 应用程序服务

Getting AAD App access token to call Azure App service with client secret

我正在编写 Nodejs CLI 以通过 Azure ARM 模板部署受 AAD-Auth 保护的 Web API。在获取访问令牌以调用 Web API 时遇到问题。

我已经使用 adal-node 库使用 AAD-App clientID 和密码生成访问令牌,但生成的令牌没有有效的 objectId。

我也尝试获取 device_code,然后尝试使用相同的方法获取访问令牌,但因错误 "needs permission to access resources in your organization that only an admin can grant. Please ask an admin to grant permission to this app before you can use it."..

而失败

但是,如果我转到浏览器并输入 https://app-service-name.azurewebsites.net/.auth/me,系统会提示我输入我的 azure 登录凭据并同意让 AAD-App 访问资源,我在浏览器上获取访问令牌.这个访问令牌具有我需要的所有属性(受众、发行者、objectId)。我正在努力从 nodejs CLI 获取类似的访问令牌。

const context = new AuthenticationContext('https://login.microsoftonline.com/my-tenant-id');
context.acquireTokenWithClientCredentials(
    aadAppIdUri, aadAppId, aadClientSecret, (err: Error, result: any) => {
        if (err) {
            reject(err);
        } else {
            resolve(result.accessToken);
        }
    });

我想使用有效的访问令牌从我的 Node CLI 调用受 AAD 保护的 Web api。请帮助我为此生成访问令牌。

通过客户端凭据获取访问令牌的方式需要申请权限

您通过登录凭据获取访问令牌的方式需要委托权限

确保您拥有应用程序所需的应用程序权限。

另外,记得点击授予管理员同意按钮。