Не могу получить значение из заголовка HTTP-заголовок, в основной ASP.NET 2.0, используя siteminder, которые ССО
У меня есть приложение, которое использует SiteMinder для авторизации. В настоящее время это работает так: когда пользователи хотят попасть на целевую страницу приложения, они отправляются на страницу пользователя-пароля компании, и как только они аутентифицируются SiteMinder, они могут посетить приложение. После того, как они будут аутентифицированы, информация о пользователе будет находиться в заголовке HTTP. Чтобы получить информацию о пользователе, мне нужно получить доступ к заголовку HTTP и получить запись LDAP.
Я почти уверен, что http-заголовок содержит информацию о пользователе вместе с файлом cookie. Проблема в том, что мой контроллер не получает информацию о пользователе в заголовке. Но я могу получить и другие значения заголовка, такие как дата, агент, реферер, хост и т. д.
Вот мой код контроллера:
[HttpGet] public async Task<IEnumerable<UserForDisplayDto>> GetAllUsers() { var headerValue = Request.Headers["HTTP_JHED_uid"]; var person = headerValue.ToString(); var user = await repository.GetAllJhedUsers(person); return mapper.Map<IEnumerable<User>, IEnumerable<UserForDisplayDto>>(user); }
В этом случае HTTP_JHED_uid это идентификатор пользователя, который мне нужно получить из заголовка.
В принципе, я пытаюсь получить идентификатор пользователя, затем я передаю этот идентификатор пользователя в свою локальную базу данных и получаю этого пользователя на основе его идентификатора пользователя.
Также здесь находится мой класс репозитория, который я использую для получения пользователя из моей локальной базы данных.
public async Task<IEnumerable<User>> GetAllJhedUsers(string id, bool includeRelated = true) { if(!includeRelated) return await context.Users.Where(x => x.JHED_ID == id).ToListAsync(); return await context.Users .Where(x => x.JHED_ID == id).ToListAsync(); }
Я не знаю, чего мне не хватает. Для этого существует не так уж много документации. Любая помощь будет оценена по достоинству!
Что я уже пробовал:
Я использую промежуточное программное обеспечение и аутентификацию на основе файлов cookie.
Я также жестко закодировал свой идентификатор пользователя. В этом случае я могу получить информацию о пользователе из своей локальной базы данных. Так что, скорее всего, проблема в моем контроллере.
F-ES Sitecore
Вы использовали такой инструмент, как fiddler или wireshark, чтобы проверить, что заголовок действительно существует в запросе? Я имею в виду фактически проверенные и увиденные своими собственными глазами, а не просто предполагаемые.
fatihkaratay
Wireshark не имеет такого HTTP-заголовка. Мой контроллер возвращает плохой запрос, потому что код не может найти заголовок. Однако, я вижу HTTP_JHED_UID в файлах журнала siteminder, которые. Кстати, в моем инструменте разработчика chrome у меня есть только заголовок cookie с файлом cookie, который приходит из SiteMinder. Но документы говорят, что информация о пользователе находится в заголовке HTTP. Я в замешательстве.