如何使用刷新令牌来请求使用ADAL的科尔多瓦多个资源
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用刷新令牌来请求使用ADAL的科尔多瓦多个资源相关的知识,希望对你有一定的参考价值。
我下面这个Cordova & ADAL tutorial。我能够成功地执行我的本机应用程序的目录搜索。我想延长应用程序的功能,并添加了天蓝色的网页API资源和消费它在相同的应用程序。
我创建使用VS2015模板湛蓝的网络API,它发布到蔚蓝,增加一条,作为在Azure中的Active Directory中的Web应用程序,并给它我的本机应用程序的访问,在“权限到其他应用程序” Azure的AD内部分。
我现在想延长例如目录搜索应用也消耗API无需再具有用户登录。从我的研究,我发现我可以使用刷新标记消耗多的资源,但我无法弄清楚如何做到这一点无需登录用户Azure的AD第二次获得该网页API资源的令牌。
任何例子或者帮助将非常感激。这是我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中的客户端应用程序(客户端A)的delagated权限,autheticate与acquireTokenAsync
,然后通过acquireTokenSilentAsync
请求您的其他资源(ClientB)与ClientAs客户端ID一起提供ClientB的资源名称。
this.authContext.acquireTokenSilentAsync(
clientBResourceUri,
clientAId
);
这将返回你JWT为clientB和刷新令牌,该令牌将被存储在tokenCache内。如果您收到提示用户需要登录,确保你已经授予的权限为您的客户端A应用访问ClientB
以上是关于如何使用刷新令牌来请求使用ADAL的科尔多瓦多个资源的主要内容,如果未能解决你的问题,请参考以下文章
使用过期令牌发出同时 API 请求时如何避免多个令牌刷新请求
ADAL使用AcquireTokenAsync和现有JWT令牌续订令牌