cordova - 如何使用刷新 token 通过 ADAL for Cordova 请求多个资源

标签 cordova azure authentication access-token adal

我正在关注这个Cordova & ADAL tutorial 。我能够在我的 native 应用程序上成功执行目录搜索。我想扩展应用程序的功能并添加 azure web api 资源并在同一应用程序中使用它。

我使用 VS2015 模板创建了 azure Web api,将其发布到 azure,将其添加为 Azure Active Directory 中的 Web 应用程序,并在 Azure AD 中的“对其他应用程序的权限”部分中授予我的 native 应用程序对其的访问权限。

我现在想扩展示例目录搜索器应用程序,以便在用户无需再次登录的情况下也使用 API。根据我的研究,我发现我可以使用刷新 token 消耗多个资源,但如果不让用户再次登录 Azure AD 以获取 Web api 资源的 token ,我无法弄清楚如何执行此操作。

任何示例或帮助将不胜感激。这是我的jsFiddle让您了解我正在尝试做什么。

// Requests some data from an Azure Web API
requestWebApiData: function (authResult) {
    var req = new XMLHttpRequest();
    var url = webApiResourceUri + "/api/values";

    req.open("GET", url, true);
    req.setRequestHeader('Authorization', 'Bearer ' + authResult.accessToken);

    req.onload = function (e) {
        if (e.target.status >= 200 && e.target.status < 300) {
            // This is where I'd like to get my data back from the Azure Web API
            console.log(JSON.stringify(e.target.response));
            return;
        }
        app.error('API Data request failed: ' + e.target.response);
    };
    req.onerror = function (e) {
        app.error('API Data request failed: ' + e.error);
    }

    req.send();
},

最佳答案

我意识到这是一个老问题,但对于其他人来说:

为 Azure 中的客户端应用 (ClientA) 分配所需的委派权限,使用 acquireTokenAsync 进行身份验证,然后通过提供资源名称的 acquireTokenSilentAsync 请求其他资源 (ClientB) ClientB 以及 ClientAs 客户端 ID。

this.authContext.acquireTokenSilentAsync(
  clientBResourceUri,
  clientAId
);

这将返回 clientB 的 JWT 和刷新 token ,该 token 将存储在 tokenCache 中。如果提示用户需要登录,请确保您已授予 ClientA 应用访问 ClientB 的权限

关于cordova - 如何使用刷新 token 通过 ADAL for Cordova 请求多个资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36069962/

相关文章:

php - ASP.NET 使用 HttpWebRequest 到 Wordpress SSO

javascript - 滚动到 Cordova 聚焦场

cordova - Ubuntu cordova 无法在没有 root 的情况下运行

Azure 存储 Blob 内容类型转换器

azure - 如何使用 Azure PowerShell 将 VM 规模集与负载均衡器关联

java - HTTP Google 登录 - Cookie 已关闭

Cordova 应用卡在 iOS 14 Beta 的启动画面上

android - 旧的推送通知未出现在android设备上

azure - 文档数据库 - 具有 session 一致性的 ETag 乐观并发

Php:如何使变量在mysql指令中工作