Доступ к службе WCF, защищенной ACS, из javascript

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

Поскольку некоторые клиенты захотят использовать аутентификацию Gmail и ADFS, имеет смысл использовать Azure ACS (именно здесь размещаются наши веб-сервисы). Однако какое-то время нам не понадобятся несколько провайдеров, и мы начнем с использования пользовательской STS, которая аутентифицирует пользователей в соответствии с нашей существующей логикой аутентификации.

У нас уже есть примерный прототип описанной выше работы с использованием веб-приложения MVC, выступающего в роли клиента.

Моя проблема в том, как мне интегрировать это с мобильным приложением? Похоже, что мобильное приложение будет написано с использованием AppCelerator, что означает, что мне нужно пройти аутентификацию с помощью javascript. Мы хотим, чтобы пользователи аутентифицировались только в нашей пользовательской службе STS, поэтому нужно ли мне использовать активную аутентификацию? т.е.

  • Попросите пользователя ввести имя пользователя и пароль
  • Прямая аутентификация с помощью пользовательской STS и получение токена
  • Передать токен STS в ACS и получить токен ACS
  • Передайте токен ACS службе wcf для каждого запроса.

Я думаю, мои вопросы: я на правильном пути, и если да, то как мне добиться этого в javascript?


person Dan Rowlands    schedule 24.04.2012    source источник


Ответы (2)


Если вы хотите поддерживать мобильные устройства, рекомендуется предоставить в STS веб-интерфейс входа в систему. В большинстве случаев мобильное устройство будет переходить на страницу входа STS в веб-браузере. После того как служба STS аутентифицирует пользователя, она отправляет утверждения в ACS. ACS, в свою очередь, использует уведомление JavaScript для уведомления хост-приложения. Вы можете обратиться к http://msdn.microsoft.com/en-us/WAZPlatformTrainingCourse_ACSAndWindowsPhone7. для руководства по работе с ACS в Windows Phone. Аналогичный процесс можно использовать и для других мобильных устройств. Надеюсь это поможет.

person Ming Xu - MSFT    schedule 25.04.2012
comment
Хотя в конце концов мы решили создать нативное приложение, предоставленная вами ссылка указала нам правильное направление. Спасибо. - person Dan Rowlands; 19.05.2012

Я думаю, что можно выдать запрос SAML через HTTPS. В качестве отправной точки я предлагаю взглянуть на исходники Thinktecture IdentityServer от Доминика Байера. Это поможет понять различные стратегии и способы их использования (на Github также есть кое-что полезное для WebApi): http://identityserver.codeplex.com/

person Aleksei Anufriev    schedule 24.04.2012