WCF Service - Таможенный руководитель - PullRequest
3 голосов
/ 20 сентября 2010

В конструкторе моего класса обслуживания WCF я устанавливаю текущий принципал равным принципалу, переданному в заголовке сообщения:

Thread.CurrentPrincipal = OperationContext.Current.IncomingMessageHeaders.GetHeader<BBPrincipal>("bbPrincipal", "ns");

Кажется, это работает нормально, но когда я ссылаюсь на принципала в методе, Thread.CurrentPrincipal вернулся к WindowsPrincipal.

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

Ответы [ 2 ]

7 голосов
/ 11 ноября 2010

Я только что нашел ответ на свой оригинальный вопрос. Чтобы остановить WCF, переопределяющий принципала с пустым, установите следующее в конфигурации поведения:

<serviceAuthorization principalPermissionMode="None" />

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

См .: http://connect.microsoft.com/VisualStudio/feedback/details/369445/wcf-service-configured-for-transport-security-shouldnt-change-thread-currentprincipal

4 голосов
/ 20 сентября 2010

WCF всегда устанавливает принципала в AuthorizationPolicy, поэтому он, вероятно, перезаписывает ваши изменения.Вы должны реализовать пользовательскую политику авторизации и установить принципал там.

...