2011-06-27 7 views
2

私たちのクライアントはLinux(Apache、PHP)上で動作するイントラネットを持っています。承認は、PHPのログインダイアログ、セッションによって提供されます。ドメイン認証に合格したApacheへのIISプロキシhowto

お客様は、ドメインにログオンしたWindowsコンピュータからパスワードを要求するのではなく、ログオンしたユーザーのユーザー名/パスワードを使用する必要があります。

セキュリティ上の理由から、apache ldpapによるコラボレーションは範囲外です。

解決策は、イントラネットを実行しているApacheのLinuxサーバに書き換えを行う透過プロキシとして専用コンピュータでISSを使用することですが、プロキシは認証情報(ログイン、パスワード)をApacheサーバに渡します。

この解決策は実現可能ですか?もしそうなら、助けてください。

は、私がLDAPとApacheが範囲外である理由を想定しています事前

答えて

2

でいただきありがとうございます、ユーザー名/パスワードはPHPアプリケーションによって処理されていることです。この前提は、ログインダイアログを使用したものです。

この前提に基づいて、パスワードを転送するプロキシソリューションは、基本的に2つのドメイン間で認証するという点でいくつかの問題があります。 2つのドメイン間でパスワードを同期することは不可能である可能性があります。新しいユーザーがアプリケーションにアクセスする前に同期が発生するのを待つ必要がある場合は、問題が発生します。パスワードを変更すると、同期が実行されるまでログインの問題が発生します。また、実際のパスワードの取得にも問題があります。

ドメイン認証の仕組みは、最初のリクエストでチャレンジが発生した場合、Internet Explorerはリモートサイトでの認証を特に試みます。これにはNTLM、基本認証などがあります。要点は、信用証明書の交換は、WebサーバーによるHTTPヘッダーとチャレンジ/レスポンスで処理されることです。 WebアプリケーションがIIS上で実行される頃には、WebサーバーによってLDAP検証が実行されており、アプリケーションではユーザー名のみが認識されますが、パスワードは認識されません。 (NTLMが使用されている場合、パスワードはチャレンジ/レスポンスハンドシェイクで実際には交換されません)クライアント側では、チャレンジ/レスポンスを介して正しいパスワードがわかっています。これを行うには、IISアプリケーションでLDAP経由でユーザーを確認してから、そのユーザーの資格情報をPHPアプリケーションから検索することです。 WindowsドメインユーザをPHPアプリケーションのユーザにどのようにマッピングするかは、おそらくDomain \ Username経由で行われます。プロキシの代わりに、アプリケーションはユーザー名/パスワードを暗号化し、暗号化されたペイロードをリクエストパラメータとしてアプリケーションにリダイレクトを使って渡すことができます。ユーザーがログインすると、応答として、暗号化されたペイロードがパラメータとして追加されたURLを介してPHPアプリケーションにリダイレクトされます。

とすることができます.NetアプリとPHPアプリの間の共有秘密を介して行われます。より良い解決策は、PHPアプリケーションのSSL証明書の公開鍵で暗号化することです。このようにして、鍵は定期的に変更され、両者の共有秘密情報を更新する必要はありません。

リダイレクトログインが一定期間有効であることを確認するために、暗号化されたペイロードにタイムスタンプを含めることもできます。リダイレクトURLがブラウザが処理できる最大サイズを超えないように、ペイロードを小さくしておく必要があります。

関連する問題