使用 azure-mobile-apps cordova 客户端刷新令牌并注销

Refresh Token & Logout using azure-mobile-apps cordova client

我正在使用 azure-mobile-apps cordova 客户端开发 mobile app。我按照此 https://cgillum.tech/2016/08/10/app-service-auth-and-azure-ad-b2c-part-2/ 获取刷新令牌。

我将在 header 中发送 id_token。

var token = window.localStorage.getItem("token");
var appUrl = https://Mobile****.azurewebsites.net;
var url = appUrl + "/.auth/refresh";
$http.get(url, {
    headers: {
        'X-ZUMO-AUTH': token
    }
})
.then(function(response) {
    console.log(response);
});

Response : 401 Unauthorized. IDX10500: Signature validation failed. Unable to resolve SecurityKeyIdentifier...

我在 Resource explorer 和 Tenant ->Application -> Keys 中比较了我的密钥。

两者相同。 我还想问一下注销,我们可以在这个端点发送与上面相同的内容 /.auth/logout.

X-ZUMO-AUTH header 中提交的令牌应始终是应用服务令牌,而不是 AAD ID 令牌。该令牌可以使用 Mobile Apps SDK 中的 client.login() 方法之一获得。您可以从客户端 object(通过 client.currentUser.mobileServiceAuthenticationToken)访问此令牌。

要让 /.auth/refresh 正常工作,就像之前提到的@mattchenderson post,请确保 client.currentUser.mobileServiceAuthenticationTokenX-ZUMO-AUTH header 中传递.

注销可以使用build-in SDK的注销功能。 请尝试使用以下代码将用户从移动应用程序中注销。

client.logout().then(function () {
    window.cookies.clear(function() {
        $state.go('index');
    });        
});

注意:网页视图已将登录信息存储在cookie中,下次通过身份验证提供商登录时,浏览器将自动读取cookie并完成登录流程。因此,请确保在注销时清除 cookie。我用 Phonegap-Cookies-Plugin 来完成这项工作。请注意,它适用于 PhoneGap 和 Cordova。