Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Оглавление
minLevel2
maxLevel2
typeflat
separatorpipe

Здесь ты найдешь описание механизма упрощенной авторизации по СМС .

...

и весь необходимый исходный код

Настройка web-сервера

Обрати внимание, в тот момент, когда мобильное устройство делает первый запрос на сервер, пользователь еще не авторизовался в базе данных. Чтобы все-таки как-то получить ответ от сервера 1С, я создаю специальный веб-сервер для авторизации. Здесь я описала, как его правильно настроить: Настройка веб-сервера для авторизации

Алгоритм

  • Администратор регистрирует пользователя в информационной базе, указывая его мобильный номер

...

  • Пользователь при запуске приложения вводит номер своего телефона и нажимает Получить СМС

  • Мобильное приложение отправляет http-запрос на сервер с уведомлением, что пользователь хочет авторизоваться

  • Сервер проверяет:

    • Наличие пользователя по номеру телефона

    • Пользователь является наблюдателем

  • Сервер, если условия выполняются, отправляет одноразовый код пользователю через оператора отправки СМС

  • Сервер, если условия не выполняются, отправляет ошибку Пользователю

  • Пользователь вводит одноразовый код из СМС

  • Мобильное приложение отправляет http-запрос на сервер с уведомлением, что пользователь авторизовался

  • Сервер формирует начальные данные и регистрирует их на узле пользователя

Информация

Данный метод не является безопасным и должен применяться только там, где действительно необходимо. Всегда используй https-соединение с web-сервером! SSL-сертификат стоит не так дорого, чтобы потом не кусать локти

Код

Получение кода Пользователь нажал получить код авторизации в мобильном устройстве

Раскрыть
titleМобильное приложение. Получить код авторизации
Блок кода
languagecpp
&НаКлиенте
Процедура ПолучитьКодАвторизации(Команда)
	Если Не ЗначениеЗаполнено(КодСтраны) Тогда
		Сообщить("Не выбран код страны");
		Возврат;
	КонецЕсли;
	Если Не ЗначениеЗаполнено(НомерТелефона) Тогда
		Сообщить("Не заполнен номер телефона");
		Возврат;
	КонецЕсли;
	Если СтрДлина(Формат(НомерТелефона, "ЧГ=")) <> 10 Тогда
		Сообщить("Номер телефона указан неверно. Необходимо ввести 10 цифр");
		Возврат;	
	КонецЕсли;
	ОдноразовыйКод = 0;
	ОдноразовыйКодИзСообщения = 0;
	ЛогинИзСообщения = "";
	ПарольИзСообщения = "";
	СтруктураВозврата = ОтправитьСМСНаАвторизацию();
	Если СтруктураВозврата.КодСостояния = 200 Тогда
		тЧтение = Новый ЧтениеJSON;
		тЧтение.УстановитьСтроку(СтруктураВозврата.ОтветСтрока);
		ДанныеОтвета = ПрочитатьJSON(тЧтение);
		тЧтение.Закрыть();
		ОдноразовыйКодИзСообщения = ДанныеОтвета.Code;
		ЛогинИзСообщения = ДанныеОтвета.Login;
		ПарольИзСообщения = ДанныеОтвета.Pass;
		Элементы.ОдноразовыйКод.Видимость = Истина;
		Элементы.ПолучитьКодАвторизации.Доступность = Ложь;
		ОсталосьДоПовторнойОтправки = 60;
		Элементы.ПолучитьКодАвторизации.Заголовок = "Получить повторный код можно через";
		Элементы.ОсталосьДоПовторнойОтправки.Видимость = Истина;
		ПодключитьОбработчикОжидания("ОтсчетВремени", 1, Ложь);
		Сообщить("Код авторизации отправлен на указанный номер");
	Иначе
		Сообщить(СтруктураВозврата.ОтветСтрока);
		Элементы.ОдноразовыйКод.Видимость = Ложь;
		Элементы.ПолучитьКодАвторизации.Доступность = Истина;
		Элементы.ПолучитьКодАвторизации.Заголовок = "Отправить SMS с кодом";
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ОтправитьСМСНаАвторизацию()
	Запрос = Новый HTTPЗапрос;
	Запрос.АдресРесурса = СокрЛП(Константы.ИмяБазы.Получить()) + "/hs/RassvetAuthorizationSMS/"
		+ Формат(НомерТелефона, "ЧГ=") + "?CountryCode=" + СтрЗаменить(КодСтраны, "+", "");
	Соединение = Новый HTTPСоединение(Константы.IPСервера.Получить(),,,,,, Новый ЗащищенноеСоединениеOpenSSL);
	Ответ = Соединение.Получить(Запрос);	
	Возврат Новый Структура("КодСостояния, ОтветСтрока", Ответ.КодСостояния, Ответ.ПолучитьТелоКакСтроку());
КонецФункции

...