Единый вход с использованием входа в Windows на C #

У меня есть веб-приложение, обслуживаемое Linux, и клиент C # для Windows. В настоящее время веб-приложение разрешает учетные данные AD, которые оно аутентифицирует.

Не все пользователи работают с Windows. Я пытаюсь реализовать решение единого входа для пользователей Windows. Я хочу разрешить доступ к моему приложению, если пользователь уже прошел проверку на соответствие AD при входе в Windows.

Я знаю, как проверить учетные данные в AD:

DirectoryEntry entry = new DirectoryEntry("LDAP://" + domain,
                userName, password);

Но у меня не будет имени пользователя или пароля. Я знаю, что Kerberos используется AD для хранения учетных данных Windows, но я не знаю, как получить доступ к билету.

Мой вопрос похож на ' Как определить, аутентифицирована ли вошедшая в систему учетная запись Windows в домене ' или 'Аутентификация пользователей с помощью Active Directory в клиент-серверном приложении', кроме C #.

Я использую LightTpd.


person Intra    schedule 20.04.2012    source источник
comment
Все пользователи, которые входят в систему Windows, подключенную к AD, уже аутентифицированы (в противном случае они не могли войти в систему). Вы имеете в виду, что пытаетесь авторизовать пользователей на основе разрешений AD? См. Раздел авторизация и аутентификация. duke.edu/~rob/kerberos/authvauth.html   -  person Chris Shain    schedule 20.04.2012
comment
Я хочу получить доступ к билету проверки подлинности.   -  person Intra    schedule 20.04.2012
comment
Почему? Включение проверки подлинности Windows (AD) в IIS довольно тривиально и чрезвычайно тщательно задокументировано: msdn.microsoft.com/en-us/library/ff647405.aspx   -  person Chris Shain    schedule 20.04.2012
comment
Мое веб-приложение не размещено в IIS. Это Linux-сервер.   -  person Intra    schedule 20.04.2012
comment
Если ваше веб-приложение размещено на Linux, как оно работает с C #? Или вы пытаетесь запустить какой-нибудь C # в окне Windows, чтобы каким-то образом предварительно аутентифицировать пользователя в веб-приложении?   -  person Chris Shain    schedule 20.04.2012
comment
Ваш вопрос должен быть о том, как включить интегрированную аутентификацию Kerberos между ‹вашим веб-сервером› и ‹вашим клиентом›.   -  person Brian Cauthon    schedule 20.04.2012
comment
@Chris Shain, веб-приложение не работает на C #, у меня есть приложение для Windows на C #, которое подключается к веб-приложению.   -  person Intra    schedule 20.04.2012
comment
@BrianCauthon, это следующий логический шаг моей проблемы. Я подумал использовать локальный билет для входа в Windows и каким-то образом передать его в веб-приложение. Вы говорите, что это неправильный исходный подход?   -  person Intra    schedule 20.04.2012
comment
Мы не можем сказать, каков ваш первоначальный подход, потому что вы не опубликовали никакого кода, чтобы показать нам, что вы пытаетесь, или псевдокода, чтобы продемонстрировать, что вы хотите попробовать. Однако у меня такое чувство, что то, что вы хотите попробовать, не сработает или сделает Kerberos небезопасным.   -  person Brian Cauthon    schedule 20.04.2012
comment
Особенно полезен код, который вы используете для подключения к веб-приложению. Например, вы используете класс WebClient? Что-то другое?   -  person Chris Shain    schedule 20.04.2012


Ответы (1)


Взгляните на Обеспечение аутентификации Active Directory через протокол Kerberos в Apache. Если вы используете классы WebClient или WebRequest в приложении Windows, убедитесь, что вы установили для свойства UseDefaultCredentials значение true.

person JamieSee    schedule 20.04.2012
comment
Если вы используете что-то другое, кроме Apache, вам нужно указать, что. - person JamieSee; 21.04.2012