ASP.NET -> WCF служба требует проверки подлинности Windows

Мне было поручено создать базовое приложение администратора. Приложению необходим внешний интерфейс ASP.NET, который взаимодействует с несколькими внутренними службами, использующими WCF.

Одно требование состоит в том, что пользователи приложения проходят проверку подлинности с использованием проверки подлинности Windows. Я могу сделать это без проблем, если логика приложения содержалась в приложении ASP.NET, но я понятия не имею, как выполнить аутентификацию внутри серверных служб WCF?

  • Можно ли передать учетные данные службе WCF и выполнить ее проверку подлинности?

2 ответа

Это зависит... (Обратите внимание, что большая часть этого основана на HTTP/IIS как транспорт, может отличаться при использовании TCP или других привязок)

Сам WCF может быть настроен на использование безопасности транспорта или сообщений с использованием текущих текущих учетных данных.

Если служба WCF (и все, с чем ей нужно общаться с использованием текущих учетных данных) находится в том же окне, что и интерфейс ASP>NET, вы, вероятно, будете в порядке.

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

Для получения удостоверения делегирования мне известны следующие варианты: Kerberos и Basic Authentication.

Поэтому, если вы говорите "проверка подлинности Windows", вы на самом деле подразумеваете, что все (клиент и все серверы) находятся в одном домене AD, и вы можете согласиться.

У меня есть сайт ASP.NET, использующий проверку подлинности Windows, который должен был вызывать службу WCF с включенной анонимной проверкой подлинности и проверкой подлинности Windows. У меня была проблема с передачей учетных данных Windows службе WCF.

Для этого я сделал следующее

  1. В файле Web.config сайта я убедился, что в моих привязках WCF использовалась проверка подлинности Windows: security mode = "TransportCredentialOnly"

    transport clientCredentialType = "Windows"

  2. В IIS я создал пул приложений, используя.Net 4 и классический управляемый конвейерный режим.

  3. В настройках аутентификации моего сайта

    Анонимная аутентификация - отключена

    Олицетворение ASP.NET - включено

    Проверка подлинности Windows - включена

Вот что сработало для меня.

Другие вопросы по тегам