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などのオープンソースのコンポーネントも可能な限り使いたいと思っています。
コメント、提案、回答ありがとうございます。
ミク