2016-05-30 4 views
0
  1. У меня есть службы WCF, нуждающиеся в авторизации с подтверждением претензий (как в can-create-resource-X, can-edit-resource-Y и т. Д.).
  2. Авторизация должна быть именем пользователя/паролем, без идентификаторов Windows.
  3. Мне нужно сохранить логику авторизации и данные локально на сервере, где размещены службы WCF.
  4. Данные авторизации должны храниться в PostgreSQL, а не в SQL Server.

Сначала я собирался реализовать на основе утверждений безопасности в соответствии с «Обучение WCF. А Практическое руководство», используя pgProvider в качестве замены PostgreSQL на основе для ASP.NET Membership Provider. Но я наткнулся на ClaimsPrincipal, переопределенный (вместе с Claims) в .Net 4.5, который я сейчас использую.Как создать локальную службу STS для моей службы WCF с использованием утвержденных утверждений Имя пользователя/авторизация входа?

Тогда я столкнулся с тем, что WIF теперь рекомендуется в качестве основного устройства для авторизации. На данный момент я пытаюсь обернуть голову вокруг WIF, и я не могу найти никаких упоминаний о действительной STS, которая будет использоваться локально. Единственное упоминание, которое я встретил, - Local Development STS, но, насколько я понимаю, оно должно использоваться только для целей разработки и тестирования, а не для производства.

Я рассмотрел создание пользовательских STS, но, согласно Google, это не мой первый выбор. И это действительно кажется чрезмерно сложным подходом к, казалось бы, простой цели - иметь локальное имя пользователя/пароль.

Так как же я могу создать авторизацию на основе требований для своих служб WCF? Есть ли местный STS, с которым я не сталкивался? Должен ли я забыть WIF и написать свою собственную логику авторизации? Что-нибудь еще?

+0

Несколько лет назад у меня было учебное пособие по активным профилям ws-fed http://www.wiktorzychla.com/2011/09/quest-for-customizing-adfs-sign-in-web_2465.html, но проблема заключается в учебнике для WIF 4, а api с тех пор изменилась. Не стесняйтесь использовать этот учебник, но вы сами по себе. –

ответ

0

Моя ошибка.
ClaimsPrincipal, упомянутый в «Изучении WCF. Практическое руководство» - это не класс каркаса, который, как я думал, он - это собственный класс, созданный программистом. Я был введен в заблуждение классом с тем же именем в новых версиях .NET Framework.

2

VS 2010 и VS 2012 имели инструменты для создания локального STS, но да, а не для производства.

Основная проблема заключается в том, что очень мало людей использовали WCF (активный профиль WS-Fed) по сравнению с доступом к браузеру (пассивный профиль WS-Fed).

Поэтому я не знаю ни одной STS, которую вы можете использовать.

Вы можете рассмотреть Give your WCF Security Architecture a Makeover with IdentityServer3?

+0

Спасибо, я запомню этот вариант. До сих пор я использовал GenericPrincipal вместо ClaimsPrincipal. Кажется наиболее подходящим компромиссом для моего сценария. – Korli