Лучший способ создать систему TOKEN для аутентификации вызовов веб-сервисов?

StackOverflow https://stackoverflow.com/questions/1432664

Вопрос

Я хотел бы создать архитектуру веб-сервисов, которая может вызываться различными платформами, такими как мобильные устройства, приложения winforms, iphone, blackberry, вы называете это. Поэтому использование чего-то вроде привязки WCF и wsHttp, вероятно, убивает это, и для совместимости мне нужно было бы перейти на привязку basicHttp.

С учетом вышесказанного мне нужна система, чтобы сгенерировать токен при первоначальном входе в систему (аутентификация), а затем использовать этот токен для всех последующих вызовов, я полагаю, для проверки подлинности и разрешения выполнения метода.

У кого-нибудь есть советы или предложения, как это сделать? 1) Генерация токена и что входит в безопасный токен? 2) На какой срок годен токен, некоторые пользователи могут использовать свое приложение в течение нескольких часов и, возможно, даже "спать". их компьютер

Спасибо за совет.

Это было полезно?

Решение

Если вы используете только один токен, выданный сервером при первоначальной аутентификации, его можно использовать для любого запроса, если он перехвачен. Ваша единственная защита - время истечения.

Кроме того, это зависит от того, какие у вас есть варианты реализации.

Более безопасная система - добавлять временную метку (и, возможно, одноразовый номер) к каждому запросу, подписывать ее и включать в каждый запрос. Это требует, чтобы клиент обрабатывал учетные данные аутентификации, знал реализацию подписи и подписывал каждый запрос.

Вы можете поочередно выполнять проверку подлинности сервера при каждом запросе (что можно сделать с помощью OpenID) или выдавать несколько токенов и выполнять повторную проверку подлинности, когда требуется больше (что можно сделать с помощью OAuth). Если клиент может хранить учетные данные, они могут быть невидимы для пользователя. Это более сложные задачи, требующие зашифрованный транспорт, такой как SSL, для некоторых взаимодействий, а также клиент, который может использовать HTTP-перенаправления и обрабатывать файлы cookie или другое сохраненное состояние. Клиенту не нужно было бы знать, как подписывать, но если вы можете использовать SSL, вам, во-первых, вам не понадобится сложность.

Если вам не нужно быть независимым от клиента, вы, вероятно, хотите подписывать запросы.

Для реализации подписи, примеров и библиотек посмотрите Amazon Web Services, OpenID или OAuth.

Что касается срока действия токена, он зависит от ваших потребностей. Более длительная жизнь жетонов увеличивает количество повторных атак. Одноразовый номер делает токен одноразовым, но требует большего состояния на сервере.

Другие советы

Вам следует проверить OAuth . Это стандарт для аутентификации API, вы можете просто подключить существующую реализацию к своему сервису.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top