2009-03-17 12 views
0

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

Вот мои основные 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 _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/окружающей среды. Я знаю, что SSL работает, потому что вызов https отображает тонну переменных SSL. Кроме того, у меня нет требования к SSL, но я использую его только после того, как ссылка выше говорит, что требуется получить информацию о регистрации Windows.

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

Много много спасибо заранее за помощь каждого,

Saker Гани

ответ

-1

Не окно программиста, так что я не уверен, что такой LoginID есть, но, может быть, Win32::LoginName and Win32::LookupAccountName будет помощь?

+0

К сожалению, этого не произойдет, поскольку Windows запустит .cgi как пользователь SYSTEM, и оба вышеупомянутых решения могут возвращать только родительский идентификатор пользователя. В этом случае нам нужно, чтобы клиентский браузер каким-то образом предоставлял идентификатор входа Windows/NTLM в Apache, так что .cgi может использовать эту информацию. – 2009-03-17 04:05:57

+0

Ах. Тьфу. Это похоже на то, что браузер обычно не должен передавать на сервер? – ysth

0

Это может не сильно помочь, но я не думаю, что вам нужно сделать что-нибудь особенное, чтобы получить эту информацию. Я запускаю установку 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

oeuftete, если бы он не просил слишком много, можно ли каким-либо образом поделиться со мной файлом httpd.conf? Это будет огромной помощью. Мой адрес электронной почты является saker at ghani dot com. – 2009-03-17 18:56:30

+0

Спасибо, oeuftete. Код работает, но только если я зашел в систему, на которой запущен Apache и сам .cgi. Можете ли вы заставить вышеуказанное работать при доступе к sotest/test.pl с другой машины? В моем случае, я получаю «Требуется авторизация» в FF и приглашение на проверку подлинности в IE. – 2009-03-18 03:01:39

+0

Он работает для меня в IE ... если вы получаете приглашение аутентификации в IE, то вы, вероятно, не являетесь действительным пользователем. Что говорит apache error.log, когда вы получаете приглашение? Для FF вам необходимо войти в систему с информацией о вашем домене. Поэтому в моем примере пользователь «MYDOMAIN \ oeuftete» и пароль. – oeuftete

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

  • Нет связанных вопросов^_^