Понадобилось хранить пароли пользователей в базе данных.
Пароль нужен для аутентификации на стороннем сервисе, по этому хеширование не подходит.
Подскажите, как это лучше сделать?
1) Хранить session_token'ы, если конечно сторонний сервис работает через OAuth.
2) Если нет — шифровать с ключем. Ключ хранить у себя глубоко. Так что если уведут БД, без ключа не расшифруют.
Токен во-первых не пароль, который некоторые любят ставить везде один, а так как email у вас точно хранится, злоумышленник получает доступ ко всему добру пользователя. Во-вторых когда вы обнаружите взлом, можно просто послать вашему сервису команду «обнули токены» и все. Это быстрее, чем потом объяснять пользователям, что им надо менять все пароли, и последствий почти не будет.