Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Для подписи реализаций, примеров и библиотек смотрите веб-службы Amazon, OpenID или OAuth.

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

Ответ 2

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