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

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

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

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

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

Ответы [ 2 ]

16 голосов
/ 16 сентября 2009

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

Помимо этого, это зависит от ваших вариантов реализации.

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

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

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

Информацию о реализации подписи, примерах и библиотеках см. В Amazon Web Services, OpenID или OAuth.

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

3 голосов
/ 16 сентября 2009

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

...