Авторизовать запрос между веб-сервисами с помощью Single Access Token, используя DotNetOpenAuth - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь реализовать аутентификацию, используя oAuth и используя для этого DotNetOpenAuth.

У нас есть несколько веб-сервисов REST для удовлетворения требований проекта. Существует одна служба аутентификации, служба поддержки клиентов, служба заказа и т. Д.

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

Служба поддержки теперь хочет проверить токен доступа из службы аутентификации.

Я попытался перехватить заголовок авторизации, отправленный потребителем в службу поддержки клиентов, и попытался передать его службе проверки подлинности из службы поддержки клиентов, но он выдал ошибку «подпись не действительна», которая кажется правильной, поскольку URI, используемый потребителем для создания подписи, принадлежит клиенту Служба, но при проверке этого в Службе аутентификации фактический запрос поступает из Службы поддержки клиентов, которая отличается.

Надеюсь, я смогу объяснить проблему.

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 31 марта 2012

Я предполагаю, что вы используете OAuth 1.0. И похоже, что вы перенаправляете авторизацию OAuth из службы поддержки клиентов в службу проверки подлинности таким образом, что служба проверки подлинности полагает, что токен был предназначен для it вместо обслуживания клиентов. Если это так, то эта недействительная подпись задуманна, потому что вы эффективно (и случайно) проводите атаку, в результате которой MITM перенаправляет токен другому сервису.

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

...