4

私のプロジェクトでは、クライアントからWebサービスに接続し、次にWebサービスからSQLServerに接続するユーザーを呼び出します。WebサービスとSQLServerは別々のマシン上にあります。セキュリティ要件のため、SQLServerでは混合モードを使用できません。Windows認証のみを使用できます。

WebサービスとSQLServerの間で「ダブルホップ」の問題が発生しています。NTLM認証を使用しており、オーバーヘッドと学習曲線のためにKerberosを構成したくありません。また、WebサービスとSQLServerを同じマシン上に配置したくありません。

私が理解していることから、私たちのすべての要件により、このシナリオを解決することは不可能です。しかし、開発者はこの提案を思いつきました:

1)SSL暗号化を使用してクライアントからWebサービスにWindowsのユーザー名とパスワードを送信します

2)どういうわけか、Windowsのユーザー名とパスワードをSQLServerで認証できるセキュリティトークンに変換します

例えれば、SQL Serverに接続するときにC#コードでRUNASを実行しているように聞こえます。SQL Serverを介した場合のみ、Webサービスの認証は行われません。

私の質問:

1)提案された解決策は可能ですか?

2)もしそうなら、それはどのように行われますか?

3)それがどのように行われるかを理解するのに役立つWebリソースはありますか?

4

2 に答える 2

4

いいえ、これは不可能です。クライアントプロセスはユーザーパスワードにアクセスできないため、Webサービス層にパスワードを送信できませんクライアントは、ユーザーにパスワードを明示的に要求する必要があります。クライアントプロセスがパスワードを持っていて、それをWebサービスに送信する意思がある場合、理論的には、WebServiceはそのユーザー/パスワードのトークンを作成し(LogonUserを使用)、そのトークンを使用してSQLServerに接続できます。このいわゆるソリューションには、議論する価値のない複数のセキュリティ問題がたくさんあります。あなたのチームがそれを主張する場合は、それを行うWebサービスを作成し、チームメンバーに接続を依頼し、あなたが彼の資格情報を取得したら(彼はあなたのサービスに彼のパスワードを送信します)、覚えていますか?)Exchangeサーバーに接続し、「Fire me、I'maIdiot」というテキストを含むメールをCEOに送信します。または、HRの直接預金銀行と口座を変更します。あなたの想像力を使ってください...あなたが提案する道を進むことが非常に悪い考えである理由が今少し明確になっていることを願っています。

Kerberosを使用するだけです。

ところで、政府の規制のためにバックエンドで認証する必要がある場合は、認証と監査には常に「否認防止」要件があり、パスワードをWebサービスに送信して、露骨に認証されるようにする必要があることに注意してください。 Webサービスはユーザーになりすまして必要な任意の操作を実行できるため、この要件と矛盾します。これは、Kerberos委任が制約付き委任であるものです。

于 2010-06-25T01:27:22.487 に答える
0

これはできませんでした。考えてみてください。アプリケーションがこの方法でセキュリティトークンを単純に生成できるとしたら、それはどのようなメリットがあるでしょうか。この問題を解決するには、Kerberosが必要です。

編集:また、ユーザーを切り替えた場合でも、ルーン文字は1つのホップしか必要としないため、クライアントが2つのシステムに連続して認証しようとする場合、ルーン文字のアナロジーは適用されません。

于 2010-06-25T00:39:59.433 に答える