我有一个Cordova应用程序,它使用JS客户端SDK成功通过Azure Active Directory进行身份验证。我按照CGillum帖子中的说明对Azure网站进行了更改。这成功地为我提供了一个可以与Microsoft Graph一起使用的令牌,它在调用/.auth/me
时返回刷新令牌。
但是,当我尝试拨打/.auth/refresh
时,我收到 403 错误,日志显示如下。
2017-02-01T16:00:54 PID[8648] Warning The refresh request issued
by sid... failed because no refresh tokens were found in the token
store.
2017-02-01T16:00:54 PID[8648] Information Sending response: 403.80 Forbidden
我在Azure网站设置中打开了令牌存储。我还注意到,如果我调用/.auth/me
,它不会再返回刷新令牌。这可能是预期的行为,因为我知道一些提供商只会给你一次刷新令牌(不过对AAD不确定)。
public getAccessTokenFromRefreshTokenFromAppService(): Promise<any> {
return new Promise<boolean>((resolve, reject) => {
let apiUrl = Resources.azureMobileClientUrl + '/.auth/refresh';
var headers = new Headers();
headers.append('X-ZUMO-AUTH', this.azureService.mobileServiceClient.currentUser.mobileServiceAuthenticationToken);
return this.http.get(apiUrl, { headers: headers })
.map(res => res.json())
.subscribe(data => {
console.log('Get Refresh Token - ', data);
let token = data.authenticationToken;
resolve(data);
},
error => {
reject(error);
},
() => {
});
});
}
答案 0 :(得分:0)
如果我没有误解您的要求,您希望在cgillum {/ 3}}中提到的Azure Web Apps / Mobile Apps中启用刷新令牌。
正如他所提到的,如果您计划通过AAD IDP启用此功能,我们的App Services需要几个额外的配置。您可以参考http://cgillum.tech/2016/03/07/app-service-token-store/了解更多详情。
一般来说,启用它有两个步骤:
在您的AAD应用程序中生成密钥,并同意 Windows Azure Active Directory 的两项权限:Read directory data
&amp; Read directory data
:
http://cgillum.tech/2016/03/25/app-service-auth-aad-graph-api/
通过REST API更新App Service身份验证配置