Как интегрировать аутентификацию SAML в приложение веб-службы WCF - PullRequest
7 голосов
/ 04 сентября 2011

У меня есть приложение веб-службы WCF, созданное и протестированное на IIS7. Что касается аутентификации, я хотел реализовать аутентификацию идентификатора пользователя и пароля на сервере sql для пользователей, получающих доступ к операциям в веб-сервисе. Однако мне сказали, что политика моей компании требует, чтобы я внедрил SAML в свой веб-сервис. Это означает, что любой клиент, который обращается к моим операциям веб-службы, должен пройти аутентификацию с использованием SAML 2.0. Я не знаком с SAML, но хотел бы узнать и начать работать с ним в моем веб-сервисе. Я продолжаю слышать два термина - «Поставщик услуг» и «Поставщик удостоверений», основываясь на определениях в Интернете. Я предполагаю, что поставщик услуг является моей веб-службой. поставщик удостоверений - это место, где пользователь проходит проверку подлинности, а поставщик удостоверений предоставляет подтверждение моей веб-службе, а затем я позволяю клиенту получить доступ к операциям. Я понимаю теорию, но не знаю, как применить ее на практике. Клиенты, обращающиеся к моему веб-сервису, не являются внутренними, т. Е. Являются внешними (клиенты экстрасети), поэтому в этом случае каким будет поставщик удостоверений и как добавить код в мою веб-службу, чтобы сделать его поставщиком услуг?

Надеюсь, вы понимаете мою дилемму, кто-нибудь может объяснить подход, который мне нужен, и любые примеры или учебные пособия, которые помогут мне завершить веб-службу, будут высоко оценены.

Ответы [ 2 ]

4 голосов
/ 04 сентября 2011

Я думаю, что SAML 2.0 не предоставляется стандартным WCF. Чтобы заставить его работать, вы должны объединить WCF с WIF (основа идентификации Windows). Здесь у вас есть очень сложный пример использования WCF с WIF и авторизацией на основе утверждений. В примере используется SAML 1.1, но это только изменение конфигурации, чтобы заставить его работать с SAML 2.0.

Ваша проблема обычно называется федеративной аутентификацией или федеративной идентификацией, когда пользователь аутентифицируется с помощью STS (службы токенов службы) и получает токен безопасности (это может быть, например, токен SAML). Затем клиент вызывает реальный сервис (RP - ретранслятор), где он передает свой токен безопасности. Так что ты собираешься строить? Если политика вашей компании требует использования SAML, скорее всего, у них уже есть STS, и вам просто нужно аутентифицировать клиентов по токенам SAML, как указано в статье.

3 голосов
/ 08 января 2016

С 2011 года поддержка Claims-Aware WCF Services увеличилась на , очевидно, с выпуском .NET 4.5. Я скопирую информацию из этой статьи на случай, если она когда-нибудь изменится, но на момент получения ответа процесс выглядел так просто:

  1. Добавление ссылки на WIF (Microsoft.IdentityModel.dll) в вашем проекте службы WCF. Так как это поставляется с .NET 4.5, я не считаю, что необходим пакет NuGet.

  2. Используйте следующий пример кода для создания самостоятельной службы обработки заявок:

    var host = new ServiceHost (typeof (ClaimsAwareWebService), новый Uri ("myUri")); FederatedServiceCredentials.ConfigureServiceHost (хост);

    host.Open ();

  3. Настройте службу WCF на использование federatedServiceHostConfiguration Расширения поведения.

...