2012-01-21 3 views
4

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

System.ServiceModel.FaultException: ACS10002: Произошла ошибка при обработке тела SOAP. ACS50012: Ошибка аутентификации. ACS50026: Директор с именем «[email protected]» не является известным директором.

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

Любая помощь в связи с этим было бы весьма признателен ....

ответ

3

ACS не будет аутентифицировать свой Живой логин и пароль 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

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

+0

Вау! Спасибо за подробный ответ ... –

1

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

+1

Добро пожаловать в Stack Overflow! Вы не должны просто указывать ссылку на другой сайт в качестве ответа, так как сайт может устареть в будущем. Вместо этого нажмите ссылку «изменить» в этом ответе и включите в нее основные части решения с этой страницы. См.: Http://meta.stackexchange.com/q/8259 –

+0

Вышеупомянутая реализация работает как шарм. И объяснение велико. Просто следуйте ему точно. – Rucheeg

Смежные вопросы