Обновить токен и выйти из системы с помощью клиента azure-mobile-apps cordova

Я разрабатываю mobile app с помощью клиента azure-mobile-apps cordova. Я следовал этому https://cgillum.tech/2016/08/10/app-service-auth-and-azure-ad-b2c-part-2/, чтобы получить токены обновления.

Я отправляю 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);
});

Ответ: 401 Неавторизованный. IDX10500: Ошибка проверки подписи. Не удалось разрешить SecurityKeyIdentifier...

Я сравнил свои секретные ключи в проводнике ресурсов и арендаторе -> Приложение -> Ключи.

Оба одинаковы. Я также хочу спросить о выходе из системы, можем ли мы отправить то же самое, что и выше, в эту конечную точку /.auth/logout.


person devangi    schedule 15.12.2016    source источник
comment
Привет @devangi, есть обновления?   -  person Aaron Chen    schedule 23.12.2016
comment
Привет извините за задержку. Да, я хочу спросить об этих токенах (mobileServiceAuthenticationToken, id_token и refresh_token)? Срок действия, id_token и refresh_token доступны через конечную точку /.auth/me. Мое наблюдение заключается в том, что в течение 1 часа, даже если вы сгенерируете какой-либо номер mobileServiceAuthenticationToken (используя /.auth/refresh), но время истечения срока действия будет таким же (в /.auth/me). Через час, если вы вызовете /.auth/refresh со старым токеном, это выдаст внутреннюю ошибку сервера 500. Итак, каково время жизни токена mobileServiceAuthentication, id_token и refresh_token?   -  person devangi    schedule 23.12.2016
comment
О том, как сделать так, чтобы пользователь постоянно входил в систему, вы можете обратиться к этой теме.   -  person Aaron Chen    schedule 27.12.2016
comment
Привет, насколько я понимаю, срок действия mobileServiceAuthenticationToken истекает через 1 час. Чтобы обновить этот токен, мы вызовем /.auth/refresh. Достаточно ли получить обновленный токен от B2C, и пользователь будет жив в течение большего периода времени, например, 1 день ?? И мы можем перекрестно проверить обновленное время истечения срока действия из /.auth/me. Я прав ?   -  person devangi    schedule 02.01.2017


Ответы (2)


Чтобы /.auth/refresh работал, как @mattchenderson упоминал в предыдущем посте, убедитесь, что client.currentUser.mobileServiceAuthenticationToken передается в заголовке X-ZUMO-AUTH.

Для выхода из системы вы можете использовать функцию выхода из build- в SDK. Пожалуйста, попробуйте следующий код, чтобы выйти из мобильного приложения.

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

Примечание. веб-представление сохранило информацию для входа в файлы cookie, и при следующем входе через поставщика аутентификации браузер автоматически прочитает файлы cookie и завершит процесс входа. Поэтому, пожалуйста, убедитесь, что файлы cookie очищены при выходе из системы. Я использовал Phonegap-Cookies-Plugin для выполнения этой работы. Обратите внимание, что он работает как для PhoneGap, так и для Cordova.

person Aaron Chen    schedule 16.12.2016
comment
Спасибо за ответ, проблема была решена как для токена выхода, так и для токена обновления. - person devangi; 23.12.2016

Маркер, отправленный в заголовке X-ZUMO-AUTH, всегда должен быть маркером службы приложений, а не маркером идентификатора AAD. Этот токен можно было бы получить с помощью одного из методов client.login() из SDK для мобильных приложений. Вы можете получить доступ к этому токену из клиентского объекта (через client.currentUser.mobileServiceAuthenticationToken).

person mattchenderson    schedule 15.12.2016