2017-02-03 4 views
1

Мое текущее приложение работает на сервере синтаксического анализа, и я хотел бы поместить его в Kitura. До сих пор мне удалось подключиться к mongodb, который работает за Parse Server и обслуживать данные.Приложение для аутентификации пользователей Kitura iOS mongodb

Для веб-части мне удалось выполнить http-аутентификацию, используя статический словарь с идентификаторами пользователей и паролем.

Я борюсь с частью iOS. В моем приложении уже много пользователей. Пользователи хранятся в таблице в mongodb. Там у меня есть три типа пользователей:

  • Пользователи Facebook. Пользователи, которые подписались на своих учетных записях Facebook.
  • Прямые пользователи. Пользователи, которые использовали форму регистрации приложения для создания учетной записи.
  • Анонимные пользователи. Для них я создаю уникальный идентификатор, который я храню на своем устройстве, поэтому я могу сохранять свои данные. В контексте этого вопроса их следует рассматривать как прямых пользователей.

Для миграции пользователей из синтаксического анализа сервера на kitura, я планирую предпринять следующие шаги:

  1. При первом запуске приложения. Создайте случайный ключ и сохраните его в таблице пользователя.
  2. После сохранения используйте эту кнопку для входа в Kitura.
  3. При успешном входе в Китура удалите ключ.

У меня установлен клиент Mobile Access и Push Notification.

Я не могу решить, какой метод использовать для аутентификации пользователей, как на сервере, так и на стороне клиента.

До сих пор базовая проверка подлинности HTTP работает (только прямые пользователи), но я считаю, что есть лучший способ.

Мой текущий базовая аутентификация HTTP

let url = "http://172.20.10.3:8080/private2/class/KiteSpot?responseType=json" 
var mutableURLRequest = URLRequest(url: nsURL) 
mutableURLRequest.httpMethod = "GET" 
let loginString = "<user>:<pass>" 
let loginData = loginString.data(using: String.Encoding.utf8)! 
let base64LoginString = loginData.base64EncodedString() 
mutableURLRequest.addValue("DirectUserToken", forHTTPHeaderField: "X-token-type") 
mutableURLRequest.addValue("text/plain", forHTTPHeaderField: "Accept") 
mutableURLRequest.addValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization") 
self.sendRequest(mutableURLRequest, onSuccess: onSuccess, onFailure: onFailure) 

ответ

0

Обычная проверка подлинности SSL является разумным и упрощенным решением, но has a few shortcomings.

Мобильный клиентский доступ реализует протокол OAuth2, который использует стратегию предоставления токенов, которая немного более безопасна, поскольку вы не отправляете сырые учетные данные своих пользователей по сети по каждому запросу. MCA поддерживает схемы Facebook, Google и пользовательской аутентификации. Основным преимуществом MCA/OAuth2 является то, что вашим клиентам должен быть предоставлен доступ к нескольким другим серверам или третьим сторонам, для прохождения аутентификации сторонам потребуется только токен (с правилами истечения срока действия). (Good article for getting started with MCA.)

В зависимости от того, что ваше приложение повлияет на то, что вы решите выбрать для схемы аутентификации.


Кроме того, я не знаю, как вы хранение имен пользователей и паролей в базе данных, но я бы рекомендовал salting + hashing если ваша уже не убедиться, что ваши пользователи являются безопасными, если ваша база данных когда-либо становится под угрозой.

+0

У меня уже установлен мобильный клиентский доступ.В настоящее время я пытаюсь разработать собственный поставщик удостоверений, где я могу проверить пользователя и пароль на мою базу данных. Но не могу найти подробностей о том, как это сделать. Каковы конечные точки, которые должны быть вызваны на стороне клиента и какие события будут запускаться на сервере. – zirinisp

+0

Пройти это может помочь: https://github.com/ibm-bluemix-mobile-services/bms-mca-custom-identity-provider-sample – joe

+0

Я уже рассмотрел приведенный выше пример и преобразовал его в быстрый. Но startAuthorization и handleChallengeAnswer никогда не вызываются, когда я запрашиваю частный URL-адрес с мобильной стороны. Вероятно, я должен создать для него промежуточное ПО, но я не могу найти инструкции о том, как его создать. Это может быть так, что kitura еще не готов к этому. – zirinisp

Смежные вопросы