Схема аутентификации и авторизации для приложения, представленного как сервисный уровень WCF? - PullRequest
2 голосов
/ 11 февраля 2010

Я знаю, что этот вопрос должен обсуждаться в вашей организации миллион раз. Еще один ход.

Разработка LOB-приложения, бизнес-операции которого представлены в виде сервисов.

Доступ к этим службам будет осуществляться через наше собственное веб-приложение (ASP.Net MVC), клиенты Smart Desktop, мобильные клиенты, а также наши партнеры через свои веб-приложения или отдельные скрытые вызовы.

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

Какова лучшая и оптимальная схема безопасности? Как передать учетные данные аутентифицированного пользователя при каждом вызове из моего веб-приложения в службу? (Windows Identity Foundation ??)

Это относится к Windows Identity Foundation? Если да, какие части подходят где? и как?

Спасибо за вашу помощь.

С уважением.

1 Ответ

0 голосов
/ 11 февраля 2010

Хотя я рискну заявить об очевидном: Аутентификация и Авторизация - это две разные вещи, которые должны обрабатываться в разных местах в вашем приложении.

В WCF вы можете реализовать аутентификацию, используя (не особо интуитивно названные) типы IAuthorizationPolicy и ServiceAuthorizationManager . Это должно заботиться об аутентификации, но также позволит вам сопоставить аутентифицированного пользователя с экземпляром IPrincipal . Этот принципал можно назначить на Thread.CurrentPrincipal , чтобы впоследствии вы могли получить к нему доступ из реализации приложения.

Windows Identity Foundation (WIF) предоставляет вам новые возможности, в основном связанные с аутентификацией. Он основывается на IPrincipal, определяя интерфейс IClaimsPrincipal, но концепция остается той же.

Если вам необходимо реализовать защиту на основе утверждений с федеративными партнерами, то WIF является правильным выбором. Если вам просто нужно аутентифицировать и авторизовать внутренних пользователей из вашей AD, это не будет моим первым выбором.

Однако, если вы следуете принципу замены Лискова и кодируете только для IPrincipal, вы можете позже модифицировать WIF, если окажется, что вам нужно иметь дело с идентификацией на основе утверждений.

...