0

我已将 Web API 部署到 Azure App 服务,并使用 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 获得响应?

4

1 回答 1

0

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

AFAIK,您可以使用 OWIN 中间件 NuGet 包Microsoft.Owin.Security.ActiveDirectory进行 AAD 身份验证,您可以在此处了解详细信息。此外,您还可以利用Azure App Service 提供的内置身份验证和授权来配置您的 App Service 应用程序以使用 Azure Active Directory 登录

我应该怎么做才能从 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 的详细信息。

此外,对于内置的应用服务身份验证/授权,您还可以利用如何使用 Azure 移动应用的 JavaScript 客户端库对用户进行身份验证并检索,然后在访问 Web API 端点时mobileServiceAuthenticationToken将其应用于标头。X-ZUMO-AUTH

于 2018-05-01T02:53:52.150 回答