How to develop user-authenticated REST service with Azure ACS

Я разрабатываю REST-службу, которая использует службу контроля доступа MS Azure Access Control Service для аутентификации. Если можно судить по примерам, типичным способом защиты REST-службы таким образом было бы предоставление глобального имени пользователя и pw, закрытого ключа или сертификата X.509 для защищенной службы. Однако я хочу использовать механизм пассивного входа user на мобильном устройстве со следующим потоком:

  1. Неаутентифицированный пользователь пытается получить доступ к защищенной службе из приложения
  2. Мобильное приложение перенаправляет на браузерное приложение (или встроенный браузер)
  3. Пользователь выбирает поставщика идентификационных данных для входа (facebook, google и др. ) со страницы входа в ACS
  4. Пользователь вводит учетные данные для поставщика идентификационных данных
  5. Браузер перенаправляет обратно в приложение
  6. Приложение каким-то образом получает SWT-токен для использования в последующих REST-запросах.

Я застрял примерно на шаге 5 - получение SWT-токена, и существующие примеры, которые я нашел, похоже, не рассматривают этот сценарий. Кроме того, я на самом деле пытаюсь построить доказательство концепции с настольным клиентом на WPF, что может усложнить ситуацию. Может ли кто-нибудь предложить конкретный учебник или путь, по которому можно пойти, используя аутентификацию для каждого пользователя, а не для каждого сервиса? Спасибо.

EDIT:. Копаясь в этом вопросе глубже, я понял, что примеры, опубликованные ниже (и большинство других) основаны на OAuth WRAP, который был устаревшим в пользу OAuth 2.0. Может ли кто-нибудь предложить более актуальную ссылку? Гугление позволило найти http://blogs.msdn.com/b/adventurousidentity/archive/2011/09/18/acs-v2-oauth-2-0-delegation-support-explained.aspx и http://connect.microsoft.com/site1168/Downloads/DownloadDetails.aspx?DownloadID=32719, но они не самые интуитивные.

5
задан snort 4 October 2011 в 23:40
поделиться