使用Ajax

时间:2018-04-30 04:43:04

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

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

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

1 个答案:

答案 0 :(得分:0)

  

我已经为Azure App服务部署了一个Web API,并使用Active Directory身份验证对其进行了保护。

AFAIK,您可以使用OWIN中间件NuGet包Microsoft.Owin.Security.ActiveDirectory进行AAD身份验证,详细信息可以遵循here。此外,您还可以利用Azure App Service提供的内置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

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