2009-03-17 10 views
0

私は本当に些細な問題であると思われるものを解決するためにいくつかの助けを借りることができました。要約すると、Windows環境でApacheで実行されているPerl .cgiにアクセスするユーザーのWindowsのloginIDを知りたいと思います。Windows/Apache2.2環境でのWindowsのloginIDヘルプ

は、ここに私の基本的なApache2のconfの追加です:

----始めるの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インストールでそれを見つけることができません。また、私はApache2環境にmod_auth_sspi-1.0.4-2.2.2モジュールを手動で追加しました。今

、私は両方ともhttp://localhost/cgi-bin/test.cgihttps://localhost/cgi-bin/test.cgi、私はHTTP /環境変数でのREMOTE_USERの方法で何も表示されませんしてみてください。私は、https呼び出しが大量のSSL変数を表示するため、SSLが動作していることを知っています。また、SSLに関する要件はありませんが、上記のリンクからWindowsのログイン情報を取得する必要があるため、SSLを使用するだけです。

私は本当に洞察に感謝します。それが役に立ちそうなら、httpd.confファイルを完全に共有してうれしいです。基本的に、私が探しているのは、Windows/Apache2.2ホスティング環境のPerl .cgiでWindowsのloginIDを取得する方法です。みんなの助けを事前に

多くの多くのおかげで、

Saker Ghani

答えて

-1

ない窓プログラマので、私はログインIDが何であるかわからないんだけど、多分 Win32::LoginName and Win32::LookupAccountNameは助けになるでしょうか?

+0

残念ながら、Windowsは.cgiをSYSTEMユーザーとして実行し、上記の解決方法はどちらも親ユーザーのIDのみを返すため、残念です。この場合、.cgiがこの情報を利用できるように、Windows/NTLMのloginIDをApacheに何らかの形で提供するためにクライアントブラウザが必要です。 –

+0

Ah。ヤックそれは、ブラウザが通常サーバに送信すべきではないようなものだと思われますか? – ysth

0

これはあまり役に立たないかもしれませんが、私はこの情報を得るために特別なことをする必要はないと思います。 mod_auth_sspiでApache 2.2のインストールを実行していて、探している情報を正常に取得するためにREMOTE_USER環境変数を使用します。たとえば、私がページの1つにアクセスすると、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ファイルを私と共有できる方法はありますか?それは大きな助けになるでしょう。私の電子メールアドレスは、ghaniドットコムでセクシーです。 –

+0

ありがとうございます。コードは動作しますが、Apacheと.cgiを実行しているマシンにログインしている場合のみです。別のマシンからsotest/test.plにアクセスする際に上記を有効にすることはできますか?私の場合、FFで「Authorization Required」、IEで認証プロンプトが表示されています。 –

+0

IEでうまく動作します... IEで認証プロンプトが表示されたら、おそらく有効なユーザーではありません。プロンプトが表示されたら、あなたのApacheのerror.logに何が表示されますか? FFの場合、ドメイン情報でログインする必要があります。だから私の例では、ユーザー "MYDOMAIN \ oeuftete"とパスワード。 – oeuftete

関連する問題