【问题标题】:Calling an Active directory authenticated web api using Ajax使用 Ajax 调用经过 Active Directory 身份验证的 Web api
【发布时间】:2018-10-10 04:04:27
【问题描述】:

我已将 Web API 部署到 Azure 应用服务,并使用 Active Directory 身份验证对其进行保护。我需要在我的门户(即 CRM 门户)中调用此 Web API On-Change of a field。 (我的 CRM 门户也只允许通过 Active Directory 身份验证的用户登录。)我想的方式是我将执行 Ajax 调用 On-Change 字段以获得响应。但是我无法获得令牌本身。我使用 adal.min.js 作为支持活动目录身份验证的库。以这种方式调用无身份验证 Web API 时,我很容易得到响应。

我应该怎么做才能从 JQuery AJAX 调用中获得 AD 身份验证 API 的响应?

【问题讨论】:

    标签: azure asp.net-web-api active-directory dynamics-crm dynamics-crm-portals


    【解决方案1】:

    我已将 Web API 部署到 Azure 应用服务,并使用 Active Directory 身份验证对其进行保护。

    AFAIK,您可以使用 OWIN 中间件 NuGet 包 Microsoft.Owin.Security.ActiveDirectory 进行 AAD 身份验证,您可以关注 here 的详细信息。此外,您还可以利用 Azure 应用服务提供的内置authentication and authorizationConfigure your App Service app to use Azure Active Directory login

    我应该怎么做才能从 JQuery AJAX 调用中获得 AD 身份验证 API 的响应?

    通过 ADAL.js 成功登录后,您可以使用以下代码获取令牌并使用它来访问您的 Web api 端点。

    authContext.acquireToken(authContext.config.clientId, function (error, token) {
        // Handle ADAL Error
        if (error || !token) {
            printErrorMessage('ADAL Error Occurred: ' + error);
            return;
        }
    
        // Get TodoList Data
        $.ajax({
            type: "GET",
            url: "/api/TodoList",
            headers: {
                'Authorization': 'Bearer ' + token,
            },
        }).done(function (data) {
            //TODO:
        });
    });
    

    详细代码示例,您可以关注Azure AD Javascript Getting Started

    您可以只创建一个 AAD 应用程序并在前端和 Web API 后端使用它。此外,您可以为您的前端和 Web API 后端创建每个 AAD 应用程序,对于这种方法,您需要为资源映射配置 enpoints 属性以实例化 ADAL AuthenticationContext,您可以关注 Active Directory Authentication Library (ADAL) for JavaScript 的详细信息。

    此外,对于内置的应用服务身份验证/授权,您还可以利用How to Use the JavaScript client library for Azure Mobile Apps 对用户进行身份验证并检索mobileServiceAuthenticationToken,然后在访问您的Web API 端点时将其应用于X-ZUMO-AUTH 标头。

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 2017-01-05
      • 2017-09-05
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多