fatihkaratay Ответов: 0

Не могу получить значение из заголовка 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. Я в замешательстве.

0 Ответов