Как правильно хранить логин и пароль для использования с API?
Есть сервис, где пользователь регистрируется, у этого сервиса есть свои API, API привязываются к этому пользователю, по-этому при каждой отправки запроса требуется передавать логин и пароль в открытом виде, со стороны сервиса нет никакой доп защиты, как правильно хранить этот логин и пароль на стороне сервера?
Используйте openId с jwt токенами. И будет вам счастье. А что касается хранения то я бы посмотрел в сторону keycloak. Хранится все в шифрованном виде, но отдается нужному пользователю в нормальном
abmanimenja, вообще не играет роли отдельное или нет. Можно вообще взять сервис такой как Auth0. Это не сложно, это куба проще, безопаснее и позволяет сосредоточиться на разработке фич, вместо прокрастинации
это все подразумевает некую авторизацию, но авторизации так таковой нет, есть просто логин и пароль от его учетной записи
Ситуация: требуется разработать форму поиска для сайта, которой могут пользоваться все в частности не авторизированные пользователи, но все запросы API происходят используя логин и пароль хозяина сайта
abmanimenja, это не ненужная сложность и даже не сложность, а разделение ответственности. Не буду говорить про "а я что раз так делал", но все кто слушал этого совета остались только довольны
Иван Шумов, авторизация-это ввод логина и пароля
аутентификация-это определение кто вошел в систему вроде так, может я что то путаю
по сути мне наверно нужен второй вариант без авторизации
ikutin, аутентификация это определение (в вашем случае по паролю) кому принадлежат логини и пароль и верны ли они, а авторизация это проверка разрешено ли этому клиенту выполнять данную операцию
тогда выходит мне нужна авторизация но без ввода логина и пароля, и без куков
сейчас это пока, что реализовано это так, есть логин и пароль они прописаны в скрипте php, пользователь на сайт нажимает на кнопку поиск, скрипт запускается выполняется API где передаются логин и пароль возвращается информация и показывается пользователю, меня такой способ смущает, что это все в открытом виде, если злоумышленник хакнет сервер то сможет через этот скрипт получить доступ к логину и паролю, вот это меня и смущает, и как можно повысить устойчивость этой системы?
ikutin, во-первых ssl, во-вторых OpenId/OAuth2 потому как они обеспечивают токен, который живёт ограниченое время. + Вы получаете отдельный сервис в котором проверяется логин и пароль. Подумайте про это внимательнее, посмотрите ролики и почитайте статьи. Да и вообще, "взломали сервер" это вообще другого уровня проблема
abmanimenja, простите, мне надоело. В банковской среде другие правила игры и другие требования к безопасности. Там с этим все хорошо, но токены все-равно ротируются.
Ваши знания настолько поверхностны, что вы не способны вести дискуссию?
Видимо, вы понахватались верхушек знаний, но не понимаете еще о чем речь.
Учитесь, джун, учитесь.
В ИТ учатся вечно.
В банковской среде другие правила игры и другие требования к безопасности. Там с этим все хорошо, но токены все-равно ротируются.
Это называется "слышал звон, но не понял о чем он".
Перечитайте еще раз внимательно то, что вы рекомендовали - и об JWT и об oAuth.
Это для распределенной аутентификации/авторизации в недоверенной среде.
Когда сервер аутентификации/авторизации - отдельный.
Подходит для соцсетей и крупных проектов типа Гугля.
Ну и проектов с претензией на глобальность, которые надеются, то их аутентификация будет кому-то нужно кроме их самих.
Зачем делать распределенную систему если у тебя небольшой проект?
Ресурсы девать некуда?
Или ваше время бесплатно?
В единой неделимой среде - ничего это не нужно - ни oAuth, ни JWT
проекты, которые так начинаются в будущем, при развитии, вынуждены быть переписанными. Зачем делать работу дважды?
Если взлетит высоко - перепишут.
Быть переписанным - это нормально. Позволяет подстроится под изменившиеся бизнес-процессы.
А вот если не взлетит (большинство, кстати)? Зачем вкладывать ненужные ресурсы времени разработчиков?
Бизнесу нужно здесь и сейчас.
Время = деньги.
Бизнесу не нужен супер-пупер проект на все случаи жизни, который стоит дороже, делается дольше и все равно в котором не возможно предвидеть всё на будущее.
полтора часа времени на все про все это дорого, вы считаете?
Эксплуатационные расходы вы не закладываете?
Вы в курсе, что чем больше у системы компонентов, тем она менее надежна?
Вы будете это делать бесплатно?
И не только это - вы слишком разбрасываетесь своим временем: полтора часа времени тут, полтора часа времени там... так и набегают целые дни ненужной работы.
abmanimenja, 1:1. В принципе, оба правы. Мы оба не знаем что там за приложение и не в курсе о его будущем. Могут быть разные исходы, но человек поднял вопрос о безопасности, а это то что самостоятельно сделать куда дороже