Фон:
Это действительно общий вопрос, связанный с лучшей практикой, но может быть полезно некоторое описание конкретной ситуации:
Мы разрабатываем "подключенное" приложение для iPhone. Он будет связываться с бэкэнд-приложением через службы REST. Чтобы не запрашивать у пользователя имя пользователя и пароль при каждом запуске приложения, мы откроем службу "Логин", которая проверяет их имя пользователя и пароль при первом запуске и возвращает токен аутентификации, который может быть использован для будущей сети запросы на обслуживание для реальных данных. У токена может быть срок действия, после которого мы попросим их повторно аутентифицироваться с их именем пользователя/паролем.
Вопрос:
Каковы наилучшие методы для создания такого токена, который будет использоваться для аутентификации?
Например, мы могли бы...
- Hash (SHA-256 и т.д.) - случайная строка и сохранить ее в базе данных для данного пользователя вместе с датой истечения срока действия. Сделайте простой поиск токена в последующих запросах, чтобы убедиться, что он соответствует.
- Зашифруйте идентификатор пользователя и некоторую дополнительную информацию (временную метку и т.д.) с помощью секретного ключа. Расшифруйте токен в последующих запросах, чтобы убедиться, что он был выпущен нами.
Похоже, что это должна быть проблема.