Справка по loginID Windows в среде Windows / Apache2.2 - PullRequest
0 голосов
/ 17 марта 2009

Я действительно мог бы использовать некоторую помощь в решении того, что кажется тривиальной проблемой. Итак, я хочу знать идентификатор входа в Windows для пользователя, который обращается к Perl .cgi, работающему в Apache в среде Windows.

Вот мои основные дополнения к Apache2:

---- начинайте httpd.conf -----

...

LoadModule sspi_auth_module modules/mod_auth_sspi.so
...
<IfModule mod_auth_sspi.c>
    <Location "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
        AuthName "A Protected Place"
        AuthType SSPI
        SSPIAuth On
        SSPIAuthoritative On
        #SSPIBasic On
        SSPIOfferBasic On
        #SSPIDomain On
        #SSPIBasicPreferred
        #SSPIUsernameCase lower
        require valid-user
    </Location>
</IfModule>
...
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
...

---- конец httpd.conf -----

Кроме того, я также включил SSL на своем компьютере, используя отличные инструкции по адресу: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-serversetup.html#tsvn-serversetup-apache-7

Сайт выше требует загрузки модуля Apache mod_auth.so, но я не могу найти его в моей установке Apache2 по умолчанию. Также, как вы можете видеть, я вручную добавил модуль mod_auth_sspi-1.0.4-2.2.2 в свою среду Apache2.

Теперь, когда я пробую оба http://localhost/cgi-bin/test.cgi И https://localhost/cgi-bin/test.cgi,, я не вижу ничего в качестве REMOTE_USER в переменных http / environment. Я знаю, что SSL работает, потому что вызов https отображает тонну переменных SSL. Кроме того, у меня нет требований к SSL, но я использую его только потому, что по ссылке выше сказано, что это необходимо для получения информации для входа в Windows.

Я был бы очень признателен за понимание. Я рад поделиться файлом httpd.conf полностью, если это полезно. По сути, повторюсь, все, что я ищу, - это способ получения идентификатора входа Windows в моем Perl .cgi в среде размещения Windows / Apache2.2.

Большое спасибо заранее за помощь всем,

балобан Гани

Ответы [ 2 ]

0 голосов
/ 17 марта 2009

Это может не сильно помочь, но я не думаю, что вам нужно делать что-то особенное, чтобы получить эту информацию. Я запускаю установку Apache 2.2 с mod_auth_sspi и использую переменную среды REMOTE_USER для успешного получения информации, которую вы ищете. (Например, когда я получаю доступ к одной из страниц, REMOTE_USER имеет вид «MYDOMAIN \ oeuftete».)

Я не использую опцию SSPIOfferBasic, которая является единственным существенным отличием конфигурации, но я не думаю, что это будет иметь значение. Я также указываю опции в директиве, а не в отдельной директиве.

Полагаю, то, что я говорю, исходя из того, что вы дали, это должно работать. Так что, возможно, что-то еще происходит.


Редактировать: вот основы моего httpd.conf.

LoadModule sspi_auth_module modules/mod_auth_sspi.so

<IfModule mime_module>
    AddHandler cgi-script .pl
</IfModule>

<IfModule alias_module>
    Alias /sotest "C:/Some/path/"
</IfModule>

<Directory "C:/Some/path">
    Options ExecCGI

    Order allow,deny
    Allow from all

    AuthName "Foo"
    AuthType SSPI
    SSPIAuth On
    SSPIAuthoritative On

    require valid-user
</Directory>

И короткий test.pl в этом каталоге.

#!perl -T
#

use CGI;

my $q = CGI->new;

print $q->header;
print $q->start_html;
print $ENV{'REMOTE_USER'};
print $q->end_html;

Вот итоговая страница перехода к sotest / test.pl:

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
MYDOMAIN\oeuftete
</body>
</html>
0 голосов
/ 17 марта 2009

Не Windows-программист, поэтому я не уверен, что такое loginID, но, возможно, Win32 :: LoginName и Win32 :: LookupAccountName поможет?

...