2

私は、SPNEGOを使用してJavaベースのWebアプリのシングルサインオンを行うプロジェクトに取り組んでいます。現時点では、Jetty +SPNEGOおよびActiveDirectoryで正常に動作しているため、テストページにアクセスすると、ブラウザーが適切に構成されていれば、auth_userとNegotiateトークンを出力できます。

プロジェクトの次のステップは、そのユーザーとトークンを認証としてExchange Webサービスに渡して、リモートユーザーのExchangeディレクトリ(メール、連絡先など)にアクセスできるようにすることです。

JAX-WSを実行して、Services.wsdlファイルからスタブファイルを生成し、これらのクラスを使用してExchangeに接続できるようにしました。唯一の問題は、リモートユーザーではなく、Webサーバーを実行しているユーザーのみを認証することです。

また、ユーザー名とパスワードではなく、トークンを渡すための正しいクラスがEWSに見つからないことに気付きました。また、生成されたファイルにはSPNEGOへの参照がありません。

誰かが可能な解決策を知っていますか、または生成されたクラスを使用するのではなく、手動でSOAP呼び出しを生成する必要があるように見えますか?

御時間ありがとうございます

4

2 に答える 2

1

EWSに対して認証する最良の方法は、Webサーバーを実行しているユーザーを使用することだと思います。これは、ExchangeWebサービスの「サービスアカウント」です。このアカウントには、「Exchange Webサービスの偽装」(ms-Exch-EPI-Impersonation)特権が必要です。

リモートユーザーの交換データにアクセスする場合は、通話で「交換のなりすまし」を使用する必要があります。個々のExchangeサーバーユーザー(「アカウントとして機能する」)の場合、「個人のExchange情報へのなりすましを許可する」(ms-Exch-EPI-May-Impersonate)特権を設定することにより、サービスアカウントになりすますことを許可する必要があります。

したがって、すべての通話は同じサービスアカウントを使用して認証されますが、通話で交換の偽装を使用して特定のユーザー/メールボックスとして機能します。

Webアプリのシングルサインオンは、交換のなりすましに使用する現在の「アカウントとして機能」を決定するために使用されます。このためには、ユーザーのメールアドレスまたはSIDが必要です。

于 2010-08-09T22:08:55.523 に答える
0

Apache HTTP Client 4.1 alpha / Samba JCIFSライブラリを使用し、SOAPリクエストを生成することで、ソリューションを稼働させることができました。これにより、Exchangeアカウントに設定を必要とせずに、複数のユーザーをログインさせることができます。

HttpClient 3.1を使用しましたが、新しいバージョンのWindowsでNTLMプロトコルが変更されたために問題が発生したため、最新バージョンにアップグレードしました。

于 2010-08-13T14:27:11.197 に答える