Я предполагаю из вопроса, что вам не важно, какой идентификатор конечного пользователя (MVC) затрагивает службу WCF (другими словами, вам не нужен конкретный аутентифицированный пользователь, чтобы нажатьWCF, чтобы вы могли получить идентификатор этого конкретного пользователя (т.е. чтобы вы знали, что joeBobUser ударил WCF)).Вы просто хотите убедиться, что пользователь аутентифицирован и авторизован для использования сайта.Вам не нужно, чтобы каждый потенциальный пользователь вашего приложения MVC проходил аутентификацию / авторизацию.
Если это так, то мой подход будет следующим:
запускать приложение MVC от имени определенной известной учетной записи пользователя (т.е. настроить пул приложений в IIS для запуска в качестве пользователя домена, такого как yourdomain \ youMvcAccount) вместо учетной записи asp по умолчанию.Есть много сайтов, на которых есть инструкции, как это сделать, если вы еще не запускаете приложение mvc как пользователь домена.
установите привязку конфигурации конечной точки службы WCF как WsHttp .Опять же, многие сайты описывают, как это сделать.вот
one , который делает это через графический интерфейс (я предпочитаю редактировать вручную конфигурацию, но неважно).Так что теперь ваша служба WCF будет принимать только безопасные аутентифицированные запросы
создать клиентский прокси WCF в приложении MVC. Самый простой способ сделать это (вероятно, не лучшийразделение проблем, но только для начала) просто добавьте новый веб-сервис и откройте для себя конечную точку WCF.Опять же, основные вещи легко найти, если вы не знаете, как это сделать.
Теперь ваше приложение MVC будет выполнять проверку подлинности вызова службы WCF.Однако в этот момент любой клиент, прошедший проверку подлинности в вашем домене, может вызвать службу.Теперь вы принимаете ТОЛЬКО авторизованного, но ЛЮБОГО авторизованного пользователя.Все вызовы из вашего приложения MVC, попадающие в WCF, будут осуществляться с идентификатора yourDomain \ yourMvcApp
Ограничить авторизацию набором идентификаторов в # 1 , ограничив (авторизуя) аутентифицированпользователи могут быть сделаны несколькими способами.Быстрый способ get'r'done (но не очень гибкий, так как любое изменение требует перекомпиляции) - просто проверить идентичность запроса так же, как идентичность вашей службы WCF непосредственно в вашем вызове службы.В качестве альтернативы, вы можете настроить более надежные (с одновременным увеличением Goo) параметры, такие как AzMan или другие наборы правил аутентификации WCF.Опять же, на многих сайтах есть инструкции по настройке подобных вещей после того, как у вас есть аутентифицированный пользователь.Вот
ТАК вопрос, который ограничивает авторизацию постом группы Windows (я бы сделал это таким образом - более гибким, но вам нужно добавить этого пользователя в группу на вашем домене), и еще одна статья, в которойподробнее рассмотрим безопасность WCF и
, разрешающие доступ к услуге только определенному пользователю .