30

ドメインに参加しているコンピューターでは、アプリケーションに自動的にサインオンするために使用できる追加のヘッダーを送信するように IE に要求できることを漠然と認識しています。mod_phpを使用してWindowsサーバーでApacheを実行しています。必要に応じてユーザーがログインする必要がないようにしたいと思います。Kerberos および Apache モジュールについて話しているリンクをいくつか見つけました。

http://www.onlamp.com/pub/a/onlamp/2003/09/11/kerberos.html?page=last https://metacpan.org/pod/Apache2::AuthenNTLM

私は Windows で実行しているので、Perl または Apache モジュールをインストールするのは簡単ではないことが証明されています。しかし、PHP はすでに HTTP ヘッダーにアクセスできないのでしょうか?

これを見つけましたが、認証は行われません。PHP が NTLM ヘッダーを読み取れることを示しているだけです。 http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

ユーザーがアプリケーションを指すだけで、自動的に認証されるようにしたいと考えています。誰かがこれを経験したことがありますか、それともまったく機能しませんか?

UPDATE 最初にこの質問を投稿して以来、セットアップをnginxに変更し、php-fcgiはまだWindowsで実行されています。Windows での Apache2 と php-cgi は、おそらく Windows で構成できる最も遅いセットアップの 1 つです。Apacheがまだ必要なようです(php-fcgiで動作します)が、nginxソリューションを好みます。

また、なぜHTTPサーバープラグインが必要なのか、PHPやWebサーバーに依存しないソリューションを用意できないのか、まだ理解していません(そして教育を受けたいと思っています)。

4

5 に答える 5

18

必要なのはmod_auth_sspiApache モジュールだけです。

サンプル構成:

AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain mydomain

# Set this if you want to allow access with clients that do not support NTLM, or via proxy from outside. Don't forget to require SSL in this case!
SSPIOfferBasic On

# Set this if you have only one domain and don't want the MYDOMAIN\ prefix on each user name
SSPIOmitDomain On

# AD user names are case-insensitive, so use this for normalization if your application's user names are case-sensitive
SSPIUsernameCase Lower
AuthName "Some text to prompt for domain credentials"
Require valid-user

また、Windows ドメインで透過的な SSO に Firefox を使用することもできabout:configますnetwork.automatic-ntlm-auth.trusted-uris。複数のエントリを持つことができます。これはカンマ区切りのリストです。

于 2009-10-15T03:32:22.447 に答える
1

自分の組織で解決する必要のある同様の問題がありました。

adLDAPの使用を検討していました。

Active Directoryでシームレスな認証を実現するためのドキュメントも、サイトにいくつかあります。

于 2009-10-12T04:09:01.153 に答える
1

このためのバックエンドとして OpenID を使用するソリューションに興味があります... (すぐに) グーグルで検索したときに、ActiveDirectory に直接フックするものは何も見当たりませんでした。ただし、プレーンな HTTP(S) を介して実装するのはかなり簡単です (ローカル AD に対して資格情報をチェックする OpenID プロバイダーになります)。最良のシナリオでは、いくつかのクラスをアプリに追加するだけで、オフにして実行できる可能性があります。Web サーバー モジュールは必要ありません。このどちらの側にも多くのオープン ソース コードがあります。バックエンドをユーザーに公開した場合 (つまり、OpenID URL をユーザーに提供した場合)、これらの資格情報を使用して内部サイト以外にもログインできるという追加の利点があります。(例: スタック オーバーフロー。)

余談ですが、Internet Explorer が必須になるようにすることには反対です。質問の書き方からしてそれが目的なのかどうかはわかりませんが、IT 環境によっては、Firefox や Safari (または Opera など) を使用している人は熱狂的ではないことが予想されます。(あなたは最初に IE に対して開発していませんよね? それは私がそうするたびに苦痛でした.) これは、IE のこの機能を使用できなかったと言っているのではなく、それが唯一の選択肢であってはならないということです. あなたが投稿したリンクには、NTLM は IE 以外でも動作することが記載されていましたが、私はそれを使用した経験がないため、どれだけうまく機能するかを判断するのは困難です。

于 2009-10-15T02:51:51.327 に答える
0

1 つのオプションは、CAS (中央認証サービス) を使用することです。

php クライアント ライブラリがあります。

MS Active Directory へのリンク方法: http://www.ja-sig.org/wiki/display/CASUM/Active+Directory

ただし、Apache maven 2 が必要です。

于 2009-10-15T02:14:11.450 に答える