0

Я работаю над защитой некоторых служб REST, и я хочу поддерживать аутентификацию Windows. Когда HTTP-клиент отправил никаких учетных данных для проверки подлинности, мой сервис отвечает неавторизованным ответом и значением WWAuthenticate «Negotiate». Это побудит браузер ввести имя пользователя и пароль. Я ввожу свои учетные данные для Windows, и запрос возвращается к моей службе. На этот раз есть заголовок авторизации с помощью схемы Negotiate, которая имеет значение, которое, как я предполагаю, является некоторой формой моего идентификатора Windows. Как я могу взять это значение заголовка и перевести его в объект WindowsIdentity (или какой-либо другой объект, который позволяет мне узнать, кто является аутентифицированным пользователем)?Как получить WindowsIdentity из Negotiate Значение HTTP-заголовка

Редактировать: Моя логика на самом деле происходит в обработчике http выше в конвейере webapi.

ответ

0

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

User.Identity.Name 

User.Identity является System.Security.Principal.Identity.

+0

К сожалению, я забыл, что на самом деле я делаю это в обработчике http выше в конвейере. – user2719430

0

Если вы используете WebAPI2 вы можете сделать

 request.GetRequestContext().Principal.Identity 

иначе вы можете выкопать принцип из словаря свойств на сообщение запроса.

+0

Я на самом деле пытаюсь разобрать токен переговоров (я предполагаю, что разговариваю с AD?), И не полагаюсь на IIS, чтобы перевести его в Identity для меня. – user2719430

+0

@ user2719430 Вы можете легко получить доступ к заголовкам auth в обработчике сообщений. Тогда вы можете сами установить Prinicpal. Мне бы хотелось увидеть этот код, если вам удастся самостоятельно выполнить Windows Auth. –

+0

Выполнение окна auth себя на самом деле то, что я пытался просить в моем вопросе. Я нашел доступные материалы на этом, чтобы быть разреженными, но это, вероятно, результат того, что вы точно не знаете, что искать. – user2719430

Смежные вопросы