【问题标题】:Accessing Azure Graph REST API using adalJS使用 adalJS 访问 Azure Graph REST API
【发布时间】:2015-11-29 14:45:40
【问题描述】:

我正在开发 AngularJS 应用程序,该应用程序使用 adalJS 通过 Azure AD 对用户进行身份验证。我正在尝试使用 Graph REST API 从 AD 访问登录用户的详细信息。但我收到 401(未经授权:缺少或格式错误的访问令牌)错误。下面是我的代码。

adalAuthenticationService.acquireToken("https://graph.windows.net/").then(function (token) {
        console.log(token);

        var req = {
            method: 'GET',
            url: 'https://graph.windows.net/me?api-version=1.5',
            headers: {
                'Authorization': 'Bearer ' + token
            }
        };
        $http(req).then(function (response) {
            console.log(response);
        }, function (response) {
            console.log(response);
        });
    });

我已经在 AAD 中创建了应用程序并配置了 Azure AD 的权限。谁能详细说明这个错误?我传递的令牌不是访问令牌吗?

【问题讨论】:

  • 今天下午的大部分时间里,我一直在努力解决这个确切的问题,但无济于事。有趣的是(并且,就我的目的而言,足够了),我能够从发生在客户端的身份验证中获取令牌服务器端,并像这样通过我的服务器代理我的 API 请求。它在功能上是等效的,尽管必须发出两个请求会对服务器造成额外的负载和性能影响。

标签: azure azure-active-directory azure-ad-graph-api adal.js


【解决方案1】:

您需要专门为图表获取令牌。有关如何在 ADAL js 中调用ester web API 的示例,请参阅https://github.com/AzureADSamples/SinglePageApp-WebAPI-AngularJS-DotNet

【讨论】:

  • 我已经完成了那个例子,但这对我没有帮助。您能告诉我如何获取 Graph API 的访问令牌吗?
  • 在初始化 adal 时将 Graph API 端点指定为端点属性之一后,我实际上已经开始工作了。
【解决方案2】:

我很久以前就想出了答案。通过在初始化 adalJS(在 endpoints 属性中)时指定 Graph API 端点,它正在获取它的令牌。

  var endpoints = {
        'https://graph.windows.net/': '00000002-0000-0000-c000-000000000000'
    };

    adalProvider.init({
        'instance':'https://login.microsoftonline.com/',
        'tenant': 'microsoft.onmicrosoft.com',
        'clientId': '<client-id>',

        'endpoints': endpoints

    },$httpProvider);

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多