2009-03-11 9 views
7

ユーザーがログインする必要があるPHPベースのイントラネットリソースを作成しました。ユーザーは独自のログインを作成し、Cookieを使用してログインしていることを確認します。PHPイントラネットはWindowsログインを共有できますか?

代わりにWindowsログインにログインできるかどうか尋ねられました。私の最初の反応は「ウェブページがあなたのWindowsログインにアクセスできない - セキュリティ上のリスクになる」というものでした。しかし、私たちの部門の1つはSharepointを使用しています。実際には、Windowsのログインにそれ自体を結び付けています。

どうしたのですか? PHPでやってもいいですか?もしそうなら、なぜそれは恐ろしいセキュリティホールではないのですか?

答えて

8

がされPHPウェブサイトに対するNTLM認証ですが、これは完全に実行可能ですが、PHPでこれを行う単一の方法はないようです。

あなたはまた、あなたの信頼されたIEのサイト(または使用している方のブラウザで相当)にサイトを追加する必要がありますhttp://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

を見てくださいと信頼済み​​サイトの設定で、「現在の送信をオンにしますユーザー名とパスワード'。

信用証明書が電信で送信されず、エンドユーザーがブラウザに質問のウェブサイトへの資格情報を送信するよう具体的に指示しているため、恐ろしいセキュリティホールではありません。

5

PHPを使用すると、WindowsのActive Directoryの

にアクセスできるようにSourceForgeで、このプロジェクトがあり、LDAPをサポートしています: adLDAP - あなたが探しているものを "Active Directory用のPHPを使用したLDAP認証"

4

多くの場合、これはLDAPとNTLMの組み合わせを使用して行われます。 IEやFirefoxのようなブラウザはNTLM認証を行うことができます。これはSharepointの仕組みです。私は、ユーザーを同期させるためにLDAPを使用し、認証のためにNTLMを使用するJavaベースのポータルアプリケーションを実行します。

絶対にしたくないことは、ユーザーがドメインのユーザー名とパスワードをブラウザに入力させることです。これまで、私はWindowsユーザーを認証するためにLDAPでこのアプローチを使用するいくつかのプロジェクトを見てきました。あなたは正しいです、それはセキュリティ上の懸念です。ユーザーは、ワークステーションにログインするときに一度だけ自分のパスワードを入力する必要があります。あなたが望む最後のものは、パスワードがキャッシュ/一時ファイルに座っていることです。

「私はあなたがPHPアプリケーションでそれをどうやっているのか」の答えを提供できないことをお詫びします。私が知る限り、この問題に対する答えはありません。

(私がこれまで行ってきたことの一つは、それが有効であるか貧弱なフォームかどうかを確認することは決してなかった、IISからPHPを使用することでした。)IISを使用している場合、PHPはサーバー変数REMOTE_USERとWindowsユーザーのユーザー名(DOMAIN \ user)。これは当時の私の仕事で働いていました)

関連する問題