Arhn - архитектура программирования

Как реализовать защиту паролем в JsonStore Worklight 6.2?

Я хочу внедрить приложение в worklight, используя защиту JsonStore. Я хочу сохранить пароль на основе вошедшего в систему пользователя и добавить этот пароль к параметрам в WL.JSONStore.init(collections,options). Остальные детали в объекте данных data={};

и как извлечь объект параметров WL.JSONStore.init(collections,options), сохраненный паролем, для выполнения вызовов API для остальных функций?


Ответы:


1

Мое отношение к вопросу:

Хранение пароля на устройстве действительно не рекомендуется.

Также возникает дополнительный вопрос, откуда изначально берутся имя пользователя и пароль? Когда происходит регистрация (а не вход в систему)? Это важная информация ИМО.

В одном из своих приложений я инициализировал JSONStore и зашифровал его с помощью пароля пользователя, а в коллекции сохранил имя пользователя.

Таким образом, в следующий раз, когда пользователь попытается открыть JSONStore (читай: «для входа»), он попытается сделать это с введенным паролем. Если этот шаг выполнен успешно, он сравнит введенное имя пользователя с сохраненным именем пользователя. Если и этот шаг выполнен успешно, можно предположить действительные учетные данные для входа.

var collections = {
    userCredentials : {
        searchFields : {
            username: 'string'
        }
    }
};

var username, password;

username = $("#username").val();
password = $"("#password").val();

WL.JSONStore.init(collections, {password:password})
// first step is successful
.then(function() {          
    return WL.JSONStore.get("myCollectionName").find({username:username});
})  
// second step is successful
.then(function(searchResult) {
    if (searchResult[0].json.username == username) {
        // valid login.
    }
})
.fail(function() {
    alert ("Invalid credentials, try again.);
})

Обратите внимание, что приведенный выше код является немного абстрактным и "общим", и вам придется обрабатывать всевозможные пограничные случаи.
Я настоятельно рекомендую внимательно прочитать все из JSONStore документации и учебных модулей.

05.09.2014
  • Действительно, это то же самое, что и мой первый вариант, когда пользователь каждый раз вводит пароль. Но бывают случаи, когда пользователь этого не хочет (например, функция «запомнить меня»), и нам нужно хранить это где-то на устройстве, и лучший вариант — это, имхо, защищенное хранилище от ОС. Связка ключей iOS предназначена для каждого приложения... поэтому к ней нельзя получить доступ из других приложений (за исключением случаев, когда в iOS или в самом приложении есть дыра в безопасности). 05.09.2014
  • Вы можете обмениваться элементами в цепочке ключей между приложениями, для этого существует функция Worklight под названием Simple Data Sharing, вы можете прочитать больше об этом в документации здесь. 05.09.2014

  • 2

    У вас есть два варианта (хотя я не эксперт по безопасности):

    1. Попросите пользователя, который использует приложение (и, следовательно, JSONStore), вводить пароль каждый раз, когда вы открываете приложение, а затем в методе WL.JSONStore.init проверьте пароль (если пароль правильный, магазин откроется, в противном случае, метод не работает).

    2. Храните пароль в надежном хранилище - Брелки. Для iOS см. это ссылка. Я думаю, что для Android это эквивалентная ссылка.

    Таким образом, когда пользователь впервые открывает приложение, вы сохраняете пароль, и каждый раз, когда пользователь открывает приложение, вы извлекаете пароль и передаете его в WL JSONStore. Если пользователь хочет обновить пароль (например, у вас есть политика безопасности, которой нужно следовать), вы должны обновить пароль в связке ключей.

    Конечно, если вы используете гибрид, вам понадобится какой-то плагин Cordova, который добавляет, читает, обновляет, сбрасывает пароль в цепочке ключей, чтобы вы могли выполнять эти действия из JavaScript.

    Надеюсь, поможет!

    05.09.2014
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..