Подключение облака + BankID
15 000 UAHБюджет обсуждается, работа только через сейф.
Технологии и язык программирования обсуждается.
Проект
У нас готовая инфраструктура сервиса.
Но городская власть требует наличие КСЗИ (хотя бы для персональных данных пользователей).
Облачное хранилище
Мы рассматриваем несколько вариантов облачного хранилища (Гигаклауд, и т.д.)
Задание
Развернуть VPS, на которой поднять базу данных MariaDB/MySQL и подготовить REST API для доступа к данным на серверах GigaCloud.
Нужна одна таблица users, где будут поля id & data & cityId.
Нужны API для чтения, записи, обновления и удаления данных.
Также нужно поддерживать безопасность доступа к API (добавить api key & secret чтобы только авторизованные пользователи могли получить доступ к данным).
Подключение к BankId НБУ (https://bank.gov.ua/ua/bank-id-nbu)
У нас уже заключен договор и мы на стадии тестирования.
Мобильные приложения и сайт проходят первый этап (авторизация и получение токена).
АПИ должно расшифровывать - данные из BankID.
Задание
используя GigaCloud развернуть сервис VPS на нем.
мы передаем сервису полученный от банка токен
сервис запрашиваем личные данные пользователя у BankId
сервис расшифровывает полученные данных
и записывает их в виде Base64 в базу данных
Примечания
Контакт техподдержки GigaCloud для уточнения вопросов по интеграции (или другого облачного решения): _______
Мы предоставим полную информацию по BankId НБУ, библиотеки и инструкцию использования. ____ (предоставим тестовые ключи)
Во время релиза нужно проинструктировать как обновлять сертификаты и ключи доступа
Безопасность АПИ (вопрос в процессе, просто ключ, JWT или https://stackoverflow.com/questions/42098150/how-to-verify-firebase-id-token-with-phpjwt https://firebase.google.com/docs/auth/admin/verify-id-tokens )
Документация по API
Примечания:
если у вас есть лучший подход к безопасности (а конкретно получение данных из БД) - мы готовы выслушать
вы можете обновить формат API, чтобы минимизировать разработку (ниже описанная документация является больше примером чем финальной версией)
уникальной связкой является cityId + userId (т.к. userId может повторятся для разных городов)
POST {host}/api/getDataFromBankId
Описание:
сайт получает accessToken от банка и отправляет в сервис
документация BankId (https://bank.gov.ua/admin_uploads/article/Specification_BankID_NBU_Portal_v4.pd)
сервис запрашивает данные о клиенте через {host}/v1/bank/resource/client
нужен минимальный набор запрашиваемых данных: 'firstName','middleName','lastName','phone','inn','birthDay','email', 'city' (factual)
расшифровывает данные и полученный json кодируется в base64 и записывает в БД (в идеале напрямую, без использования API)
Headers:
secretKey: someSecretKey
Body:
{
"accessToken": "abc",
"cityId": "someCityID",
"userId": "jgh8A2iQFyenJFInnpZrJpFQPVk2"
}
Response status
200 - данные получены, расшифрованы и записаны в базу
401 - любая ошибка
POST {host}/api/users/update
Описание:
запись (или перезапись если данные уже есть) полученных значений в базу
Headers:
secretKey: someSecretKey
Body:
{
"data": "base64string",
"cityId": "someCityID",
"userId": "jgh8A2iQFyenJFInnpZrJpFQPVk2"
}
Response status
200 - данные записаны в базу
401 - любая ошибка
POST {host}/api/users/get
Описание:
получение данных списка пользователей (по 500 пользователей например, или сколько запросим)
Headers:
secretKey: someSecretKey
Body:
{
"cityId": "someCityID",
"userIds": [
"jgh8A2iQFyenJFInnpZrJpFQPVk2",
"jgh8A2iQFyenJFInnpZrJpFQPVk2",
"jgh8A2iQFyenJFInnpZrJpFQPVk2"
]
}
Response body
{
"data": [
{
"userId": "someUserId",
"data": "base64string"
},
{
"userId": "someUserId",
"data": "base64string"
}
]
}
Response status
200 - данные отправлены
401 - любая ошибка
POST {host}/api/users/delete
Описание:
удаление данных
Headers:
secretKey: someSecretKey
Body:
{
"cityId": "someCityID",
"userId": "jgh8A2iQFyenJFInnpZrJpFQPVk2"
}
Response status
200 - данные успешно удалены
401 - любая ошибка
Приложения 1
-
КСЗИ не ограничивается использованием bankid и использованием сертифицированной площадки, скорее всего вы в начале пути осознания боли от КСЗИ.
Мы можем реализовать подключение используя кастомный образ php в докере уже с необходимыми модулями.
Контакт: t.me/nosovk
-
Актуальные фриланс-проекты в категории PHP
Исправить CLSНеобходимо исправить Cumulative Layout Shift через код PageSpeed не видит этой проблемы, но через Google Chrome видно, что есть смещение макета для компьютерной версии страницы В ответе Google Search появилась ошибка касательно скорости компьютерной версии Необходимо… PHP, Веб-программирование ∙ 2 дня 17 часов назад ∙ 29 ставок |
Перенести полностью готовую адаптивную HTML5-структуру в WordPress.
12 000 UAH
Я ищу опытного WordPress-разработчика, который сможет преобразовать наш тщательно подготовленный статический HTML5/CSS3 код в высокопроизводимую кастомную WordPress-тему. Фронтенд уже практически готов (примерно 99%): семантическая разметка, метаданные и мультиязычная структура… CMS, PHP ∙ 2 дня 20 часов назад ∙ 64 ставки |
Интеграция GoPosПривет, делал кто нибудь интеграцию GoPos с кастомным сайтом для ресторана в Польше? Нужна помощь, у них очень скудная документация, есть только swagger и тот без описаний https://app.gopos.io/doc/swagger-ui/index.html Суть такая, использовали от них сайт для онлайн заказов,… PHP, Веб-программирование ∙ 3 дня 12 часов назад ∙ 25 ставок |
Прописать мета данные АЛЬТ при помощи ИИСайт на Laravel , на сайте много изображений, для которых нужно прописать корректные по семантики и релевантные для странице АЛЬТ описание изображения в автоматическом режиме, с возможностью проверки AI и машинное обучение, PHP ∙ 4 дня 9 часов назад ∙ 35 ставок |
Нужен разработчик для завершения и интеграции проекта по автоматическому сбору и обработке данных
700 UAH
Основная часть парсера уже реализована. Парсер работает на Windows-среде через Microsoft Edge: сайт имеет антибот-защиту, поэтому сбор данных выполняется не прямыми HTTP-запросами, а через живую браузерную сессию. Скрипты управляют открытой вкладкой Edge через Chrome DevTools… PHP, Веб-программирование ∙ 4 дня 15 часов назад ∙ 26 ставок |