5

Web アプリケーションのシングル サインオン (SSO) (ブラウザー経由で使用) は十分に文書化され、確立されています。リッチ クライアントの SSO を確立するのは難しく、通常は Kerberos チケットに基づいて提案されます。特に、ドメイン内の ActiveDirectory に対する Windows ログインを使用します。

ただし、次の場合のより一般的なソリューションを探しています。クライアント側(管理されていないコンピューターなど)で、「実際の」SSO(すべてのアプリケーションに対して1つのID、つまりアプリケーション間のパスワード同期だけでなく)を確立する必要があります。非 Windows)、「エンド クライアント」は Java アプリケーションと GTK+ アプリケーションです。どちらも、HTTP ベースのプロトコル (HTTPS を介した Web サービスなど) を使用して、対応するサーバーと通信します。クライアントとサーバーは必ずしも同じ LAN/イントラネットにあるとは限りませんが、クライアントはエクストラネットからサーバーにアクセスできます。すべてのアプリケーションのサーバー側は同じネットワーク領域にあり、SSO コンポーネントは LDAP 経由で ID プロバイダーにアクセスできます。

私の質問は基本的に「どうすればそれを行うことができますか?」すなわち、

a) ブラウザーからアクセスするアプリケーションの SSO Cookie の場合のように、安全で保護されたクライアント側の「sso セッション ストレージ」のための合意されたメカニズムはありますか? クライアント側で ActiveDirectory 認証が実行されていない場合でも、Kerberos (TGT?) をエミュレートしたり、直接再利用したりするようなものでしょうか?

b) リッチ クライアントと SSO の他の参加者との間の通信用のプロトコル/API/フレームワークはありますか (Cookie の場合など)?

c) kerberos のような TGT とセッション チケットをネットワーク経由でプッシュするための API/フレームワークはありますか?

d) リッチクライアント SSO の実行方法を示す実装例/チュートリアルはありますか?

クライアント側のアプリケーション ダイアログに資格情報を入力することを学習する「入力」エージェントがあることを理解しています。できればそのような「ヘルパー」は使いたくありません。

また、できればCASやShibbolethなどのオープンソースのコンポーネントも可能な限り使いたいと思っています。

コメント、提案、回答ありがとうございます。

ミク

4

2 に答える 2

1

AD アカウントを使用することが一般的な解決策です。Kerberos はどこにでもあります。これは、ログオン時に資格情報を 1 回だけ要求する唯一のメカニズムです。

これはすべて実行可能です。必要なものは次のとおりです。

  1. KDC
  2. DNS エントリを修正する
  3. KDC アカウント
  4. SPN エントリを修正する
  5. KDC と通信するように構成されたクライアント コンピューター
  6. JGSS で JAAS を使用してサービス チケットを取得する Java アプリ
  7. サービス チケットを取得するための GTK+ アプリでの GSS-API

あなたはまだ自分で何を理解しましたか?

于 2012-08-18T22:26:08.890 に答える
0

GSSAPI/Kerberos を使用したいという Michael の意見に同意しました。ただし、Java には問題があることを付け加えておきます。デフォルトでは、JGSS はプラットフォームのライブラリではなく、JDK で Java で記述された独自の GSSAPI および Kerberos 実装を使用します。したがって、既存の構成に従わず、他のものと同じようには機能しません (たとえば、Unix では、KRB5CCNAME やその他の慣れ親しんだ環境変数を尊重せず、DNS を使用して KDC を見つけることができず、サポートされている暗号の異なるセットなど)。また、バグが多く、制限があります。たとえば、紹介に従うことはできません。

Unix プラットフォームでは、JGSS に JDK コードをバイパスして外部 GSSAPI ライブラリを使用するように指示するには、次のように JVM を起動します。

-Dsun.security.jgss.native=true -Dsun.security.jgss.lib=/path/to/libgssapi_krb5.so

ただし、Windows には SSPI を使用する類似のオプションはありません。これは有望に見えます:

http://dblock.github.com/waffle/

...しかし、私はまだこの問題に対処していません。

于 2012-08-22T04:23:39.460 に答える