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

时间:2019-05-24 09:32:12

标签: node.js azure azure-active-directory azure-web-sites adal

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

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

我还尝试获取device_code,然后尝试使用它获取访问令牌,但失败并显示错误消息“需要访问您组织中只有管理员才能授予的资源的权限。请让管理员授予对此应用程序的权限在使用之前。” ..

但是,如果我进入浏览器并输入https://app-service-name.azurewebsites.net/.auth/me,系统会提示我输入我的天蓝色登录凭据并同意让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。请帮助我为此生成访问令牌。

1 个答案:

答案 0 :(得分:0)

通过客户端凭据获取访问令牌的方式需要应用程序权限

通过登录凭据获取访问令牌的方式需要授予的权限

确保您具有应用程序所需的应用程序许可权。 enter image description here

此外,请记住单击“授予管理员同意”按钮。

enter image description here