2009-02-27 21 views
3

PHPでデータベース接続にユーザウィンドウ認証(iisでの設定)を使用することはできますか?ODBC接続用にWindows認証をIIS上のPHPで使用できますか?

これは、.NETの世界では、 "偽装"と呼ばれる手法によって可能です。これはPHP/IIS世界にも存在しますか?

EDIT:私が使用しているデータベースであるMS SQL Server 2005の

答えて

3

KeberosでPHPアプリケーションを認証できる場合は、kerberos Delegationを使用して資格情報をセカンダリサーバーに渡すことができます。

Ken Schaeferには、Kerberosに関する一連のブログがあります(委任についてはthis articleなど)。

1

は、各ユーザーが個別に検証する必要がありますか?そうでない場合は、IISを設定して1人を偽装することができます。

+0

が動作する可能性があります。しかし、各ユーザーを別々に確認することが望ましいでしょう... –

+0

私が知る限り、セカンダリパスと呼ばれるものがあります。 IISは、Windows資格情報をセカンダリソースに渡すことはできません。したがって、データソースにユーザーの一覧が必要な場合があり、クライアントから取得した資格情報と比較することができます – Johannes

1

システムDSNを使用してODBC接続を作成する場合は、ODBC接続に関連付けるログイン名とパスワードを入力できることがわかります。私は、ログインun/pwはWindowsのユーザーアカウントができますと仮定します。

このようにすると、あらかじめ決められたアカウントに制限されているようです。 グループを作成したり、必要なユーザーを追加したり、ディレクトリをパスワードで保護したり、ディレクトリへのグループアクセスのみを許可したりすることができます。

あなたはどのデータベースを使用しているかは言いませんでした。 MS Accessを使用している場合は、データベースのパスワードを隠すことができます。私のcomment on another postを参照してください。

0

どのようにIISをPHP上で実行していますか?スタンドアロンのCGIまたはISAPIとして?

私の推奨する解決策は、開発マシンでは偽装されたユーザーとしてIISを強制的に実行しようとするのではなく、アクセスのためにSQL Server上で別のユーザーを使用することです。ステージングさえも。

しかし、FastCGIを使用している場合は、ログインしたユーザーの資格情報を渡す覚えているものから、プロセスが実行されるユーザーを偽装できます。

1

ケルベロスからの偽装は、最も安全な回答であり、管理が簡単です。データベースのようなリソースにアクセスする際に別々の '合成'ユーザーがいるということは、基本的にデータベース認証の可能性をすべて迂回し、アクセス管理の重複したポイントを取得し、データベースレベルでのトレーサビリティをゼロにすることを意味します(MySyntheticUserは誰がその背後にいたのか)。

これは言いましたが、MicrosoftのKerberosは必ずしもあなたが期待するほど簡単ではないことを告げるべきです。純粋な.NETソリューション、IIS、SQL Server 2005、ADドメイン、Internet Explorerの間で動作させることに大きな問題がありました。そのほとんどは、正確に正しく設定された信頼を得ることに至りました。また、私自身はPHP開発者ではありませんが、some indicationsはKerberosライブラリ機能へのアクセスに問題がある可能性があります。 SSPIのサポートを確認してください。また、PHPプロセスには、ユーザーを偽装するために必要な権限が必要です。ユーザーはIISを使用して管理できます。

特に、マイクロソフトはマイクロソフト以外の言語やプラットフォームをサポートすることが殆どないため、これらのすべてを簡単で簡単にするとは限りません。

関連する問題