Как защитить несколько серверов ресурсов с помощью OAuth 2.0? - PullRequest
1 голос
/ 23 февраля 2012

Рассмотрим следующую распределенную систему, которая использует OAuth 2.0 для авторизации и OpenID 2.0 для аутентификации.

enter image description here

Где

  1. RS1, RS2 и RS3«Серверы ресурсов» (или три различных API REST) ​​
  2. APP1 и APP2 - клиенты
  3. AS - «Сервер авторизации» для управления токенами OAuth
  4. OPENID - OpenIDПоставщик 2.0.

APP2 использует RS1, который, в свою очередь, использует ресурсы на RS2 и RS3.Существует доверие между RS1, RS2, RS3, APP2, AS и OPENID, так как они разрабатываются одной и той же компанией (но разными командами).Когда пользователь получает доступ к APP2 в первый раз, APP2 автоматически авторизуется для доступа к ресурсам на RS1, RS2 и RS3 от имени пользователя.

APP1 использует ресурсы на RS2, который, в свою очередь, использует ресурсы на RS3.APP1 - это сторонний веб-сайт, которому не доверяют, и пользователю необходимо явно авторизовать APP1 для получения доступа к ресурсам на RS2 и RS3.

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

Как защитить эту среду, используя OAuth 2.0?Например, будут ли APP2, RS1 и RS2 иметь свой собственный идентификатор клиента и секрет клиента (поскольку все они являются «клиентами» для другого сервера)?Если да, то как можно выдать токены доступа для RS1, когда он пытается получить доступ к ресурсам на RS2 и RS3 в первый раз в середине другого запроса (поступающего из APP2)?

У меня уже есть AS, OPENID, APP2 и RS1, которые были разработаны с использованием ASP.NET MVC 3, WCF 4 и DotNetOpenAuth 4. Я пытаюсь ввести RS2, RS3 и APP1 в систему, но изо всех сил пытаюсьвыяснить, как будет работать авторизация между серверами ресурсов и клиентами.Все работает под IIS 7.5 и HTTPS.

1 Ответ

0 голосов
/ 23 февраля 2012

Я предполагаю, что APP2 - это веб-приложение, поскольку приложение любого другого типа не может быть "доверенным", как только оно загружено на клиентский компьютер.

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

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

...