Как пройти аутентификацию в службе WCF через интеграцию ACS с Windows Live ID? - PullRequest
4 голосов
/ 22 января 2012

У меня есть служба WCF, которая использует аутентификацию UserName через ACS.Это прекрасно работает, когда я использую служебные удостоверения, но когда я пытаюсь использовать свои учетные данные Windows Live ID, я получаю следующую ошибку:

System.ServiceModel.FaultException: ACS10002: при обработке тела SOAP произошла ошибка.ACS50012: аутентификация не удалась.ACS50026: Принципал с именем 'louis@arsunica.com' не является известным принципалом.

К сожалению, мне еще не удалось найти пример того, как использовать Windows Live ID со службой WCF.Похоже, что единственные примеры, которые я могу найти, направлены на интеграцию нескольких провайдеров идентификации с веб-сайтами ASP.NET или MVC.

Любая помощь в этом отношении будет принята с благодарностью ....

Ответы [ 2 ]

3 голосов
/ 24 января 2012

ACS не будет аутентифицировать ваше имя пользователя и пароль Live ID напрямую.ACS выступает в качестве поставщика федерации для Live ID, это посредник, поэтому он будет использовать только токены, выпущенные Windows Live ID.ACS поддерживает аутентификацию Live ID «из коробки» в сценариях на основе пассивного (перенаправления браузера), но для службы WCF вы можете вместо этого использовать API Live Connect.

Чтобы использовать LiveID с вашей службой, ваш клиент сначала аутентифицируетсяLiveID, а затем представляет выданный LiveID токен вашей службе WCF.Однако приготовьтесь к тому, что для настройки всего этого нужно прыгнуть.

Чтобы использовать API Live Connect, вы должны зарегистрировать службу WCF как приложение с Live ID.Клиенты, которые используют вашу службу WCF, должны будут иметь возможность обрабатывать веб-страницу входа и страницы согласия пользователя, которые будет запрашивать Live ID.Документы ниже - хорошее начало

http://msdn.microsoft.com/en-us/library/hh243641.aspx

http://msdn.microsoft.com/en-us/library/hh243647.aspx

http://msdn.microsoft.com/en-us/library/windows/apps/hh465098.aspx

Следующая проблема - токен, который вы получитеиз Live Connect будет в формате JWT (JSON Web Token).Я не уверен, что вы можете запросить другой формат токена из live connect, но если ваша аутентификация службы WCF основана на WIF, она, скорее всего, ожидает токены SAML.JWT - это довольно новый формат токенов, который WIF еще не поддерживает, поэтому вам придется настроить WIF SecurityTokenHandler в своей службе, который распознает токены JWT.Третья ссылка, приведенная выше, содержит некоторый код для чтения JWT, который является, по крайней мере, началом.

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

Я столкнулся с этой статьей, которая использует делегирование идентификатора для приведенного выше варианта использования: http://social.technet.microsoft.com/wiki/contents/articles/7286.asp-net-relying-party-to-wcf-soap-relying-party-delegation-with-windows-live-id.aspx Будет ли сообщение, если я успешен или нет. Наслаждайтесь!

...