1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/oss-smscode

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

SMSCode

Что это такое

SMSCode — это микросервис, предназначенный для использования в сценариях, где требуется проверка подлинности с помощью SMS-сообщений. К таким сценариям относятся: регистрация пользователей, восстановление пароля, аутентификация и вход с использованием кода из SMS.

Зачем это нужно

Во-первых, я не нашёл готового решения, которое объединяло бы все эти базовые функции. По крайней мере, среди открытых проектов такого нет. Однако при разработке многих проектов часто требуется использовать функцию проверки подлинности по SMS. При этом каждый раз создавать заново решение кажется слишком трудоёмким и сложным для контроля. Поэтому возникла идея разработать универсальный микросервис для проверки подлинности с помощью SMS. В итоге менее чем за 1500 строк кода на Go был создан универсальный микросервис SMSCode.

Модули Go

В каталоге smscode выполните следующую команду:

go mod tidy

Установка и использование

Благодаря поддержке кроссплатформенности языка Go, SMSCode можно установить на всех основных операционных системах (Linux, Mac OS X, FreeBSD, Windows, ARM и др.).

Рекомендуется устанавливать SMSCode на Linux x64. Для установки на этой платформе убедитесь, что на ней установлен компилятор Go (GO 1.5+).

go get -u github.com/xluohome/smscode

cd  $GOPATH/src/github.com/xluohome/smscode

./build  && ./smscode

Настройка параметров запуска

См. справку ./smscode.exe -help.

Развёртывание в Docker

См. файл Dockerfile в проекте для создания образа Docker.

Настройка часового пояса

Измените параметр timezone в файле conf.yaml.

Значение параметра timezone можно найти в файле zoneinfo.zip в папке conf/.

Функциональные возможности

  1. Поддержка нескольких каналов «SMS-сообщения для проверки подлинности» от таких поставщиков, как Alidayu и Yuntongxun.
  2. Настраиваемые интерфейсы для различных сервисов проверки подлинности, таких как регистрация новых пользователей, сброс пароля и аутентификация.
  3. Встроенная функция ограничения доступа по географическому расположению номера телефона, позволяющая ограничить приём SMS только для определённых регионов.
  4. Возможность настройки максимального количества отправляемых SMS в день и срока их действия для каждого сервиса проверки подлинности.
  5. Встроенная функция обратного вызова, позволяющая настроить URL-адреса для успешного завершения отправки SMS и неудачной попытки отправки.
  6. Настройка режима отправки SMS:
  • 0x01: SMS отправляется только при наличии соответствующего идентификатора пользователя (UID).
  • 0x02: SMS отправляется только при отсутствии UID.
  • 0x03: SMS отправляются независимо от наличия UID.
  1. Возможность импорта существующих данных UID из системы с помощью интерфейса setuid.
  2. Встроенная система локального постоянного хранения данных на основе Goleveldb.
  3. Поддержка развёртывания в Docker, статическая компиляция SMSCode (Go 1.7.5) и размер образа Docker менее 12 МБ (включая базу данных о географических регионах).

Файл конфигурации conf/conf.yaml

bind: 0.0.0.0:8080  #адрес микросервера для отправки SMS-сообщений
timezone: PRC   #часовой пояс
timeout: 5 #время ожидания ответа от поставщика услуг SMS (в секундах)
vendors:
  alidayu: #конфигурация Alidayu http://www.alidayu.com
    appkey: 20315570
    appSecret: 87hfgfg75775765787878
    issendbox: false
  yuntongxun: #конфигурация Yuntongxun http://www.yuntongxun.com/
    AccountSid: 8a48b55e434514c9c31921a039b
    AccountToken: 61434dc2b245435eadf82d381fa3f
    AppId: aaf98f8fsdafd2678c9d07875040f
    SoftVersion: 2013-12-26
    RestURL: https://app.cloopen.com:8883
  hywx: #конфигурация Hywx http://www.ihuyi.cn/
    account: 6666666666666666
    password: 88888888888888888888888
    RestURL: http://106.ihuyi.cn/webservice/sms.php?method=Submit

errormsg:
  "err_model_not_ok1": "Текущий пользователь (%s) не существует, отправка SMS-сообщения невозможна"
  "err_model_not_ok2": "Текущий пользователь (%s) существует, отправка SMS-сообщения невозможна"
  "err_code_not_ok": "Код проверки подлинности:%s неверен, пожалуйста, введите его повторно"
  "err_vailtime_not_ok": "Срок действия кода проверки подлинности:%s истёк, пожалуйста, получите новый код"
  "err_per_day_max_send_nums": "Один номер телефона может получать не более %d кодов проверки подлинности в день"
  "err_per_minute_send_num": "Один номер телефона может получать не более 1 кода проверки подлинности в минуту"
  "err_allow_areacode": "Номер телефона не может быть получен в регионе:%s"
  "err_not_uid": "Не удалось сопоставить номер телефона%s с соответствующим%s"

servicelist:
  "register":
    vendor: alidayu  #поставщик услуг SMS
    group: db1   #номера телефонов в одной группе используют одни и те же данные UID
    smstpl: SMS_34850248  #идентификатор шаблона SMS от Alidayu
    signname: 罗永 #подпись от Alidayu
    callback: "http://127.0.01/test9.php"
    allowcitys: #только номера телефонов из следующих регионов могут получать SMS
      - 0575
      - 0571
      - 0574
    maxsendnums: 4   #максимальное количество SMS, отправляемых на один номер телефона в день, ограничено поставщиком услуг SMS
    validtime: 600  #срок действия полученного кода проверки подлинности (в секундах), после истечения которого код становится недействительным
    mode: 2   #режим отправки: 1 — только если есть соответствующий UID, 2 — только если нет UID, 3 — независимо от наличия UID
    outformat: mobcent  #формат вывода RestAPi (mobcent,default)

  "restpwd":
    vendor: alidayu
    group: db1
    smstpl: SMS_39190087
    signname: 罗永
    callback:
    allowcitys:
      - 0578
    maxsendnums: 2
    validtime: 360
    mode: 3

  "getpwd":
    vendor: yuntongxun
    group: db1
    smstpl: 149350
    signname: 罗永亿
    callback:
    allowcitys:
      - 0578
      - 0575
    maxsendnums: 2
    validtime: 360
    mode: 3

Описание интерфейсов RestAPI для SMSCode

Интерфейс Адрес Параметры Описание
Отправка кода проверки /send service, mobile Название сервиса, номер телефона
Проверка кода проверки /checkcode service, mobile, code Название сервиса, номер телефона, код проверки
Установка UID /setuid service, mobile, uid Название сервиса, номер телефона, идентификатор пользователя
Удаление UID /deluid service, mobile, uid Название сервиса, номер телефона, идентификатор пользователя
Информация о пользователе /info service, mobile Название сервиса, номер телефона
"ZipCode": "312000",
    "AreaZone": "0575",
    "CardType": "电信"
  },
  "lastsendtime": 0,
  "mobile": "15336860197",
  "sendnums": 0,
  "service": "register",
  "smscode": "",
  "smscodeinvalidtime": 0,
  "uid": ""
}

}, "head": { "errCode": "000000", "errInfo": "smscode调用成功,没有任何错", "version": "2.7.0.3", "alert": 0 } }


### Callback сервис

Для каждого сервиса коротких сообщений можно установить URL обратного вызова HTTP;
При возникновении следующих событий будет вызываться URL обратного вызова:

1. Успешная или неудачная отправка SMS-сообщения с кодом подтверждения.
2. Проверка кода подтверждения прошла успешно.

Если URL обратного вызова недоступен, система будет пытаться получить доступ к нему с задержкой в 2, 4, 6, 8, 16, 32, 64 и 128 секунд (всего 10 попыток).

В случае успеха запрос POST отправляется на указанный URL с параметрами (multipart/form-data):

mobile string # номер телефона code string # код подтверждения service string # название сервиса uxtime int # временная метка flag string # метка обратного вызова (Success, Failed, Checkok)


### Связаться с автором

Связаться с автором через WeChat:

![wx.jpg](https://ucc.alicdn.com/pic/developer-ecology/f41fd688affb41fc8853c4f99abd3d45.jpg)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Микросервис, разработанный специально для сценариев, требующих **проверки с помощью СМС**, таких как регистрация пользователей, восстановление паролей, аутентификация пользователей и вход в систему с использованием проверочного кода. Поддерживает Ali Big Fish, Yunxin Tongxun и Huiyi Wireless. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/oss-smscode.git
git@api.gitlife.ru:oschina-mirror/oss-smscode.git
oschina-mirror
oss-smscode
oss-smscode
master