問題タブ [kerberos-delegation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
540 参照

kerberos - Java と Kerberos を使用して別のユーザーとしてプロセスを作成する

私は Java サーバー アプリケーション (サービスとして Windows で実行) に取り組んでおり、次のシナリオを実現したいと考えています。

  • ユーザーがサーバーに POST 要求を発行します。ユーザーは Kerberos (SPNEGO、エンタープライズ環境の SSO) で認証されます。
  • サービスは新しい Java プロセスを作成します。プロセスは、サービス ユーザー (偽装/委任) ではなく、認証されたユーザーとして実行する必要があります。
  • 新しいプロセスは、ユーザーのセキュリティ コンテキストで実行する必要があります。Kerberos 認証を必要とする他のリモート システム (ファイル共有、他の Web サービスなど) と通信する必要があります。

実用的な概念実証:

  • Kerberos 認証用のWaffleを使用した Spring Boot アプリケーション。
  • 認証済みユーザーの新しいプロセスを作成します。JNAと Windows ネイティブ関数CreateProcessAsUserを使用します。
  • プロセスは、認証されたユーザーとして作成されます。これは、Process Explorer ユーティリティで確認できます。

不足しているものと機能していないもの:

  • プロセスは他の Kerberos チケットを要求できません (たとえば、InitializeSecurityContext() を呼び出して)。
  • プロセスはネットワーク共有にアクセスできません。
  • このプロセスは、Kerberos 認証を必要とする他の Web サービスと通信できません。

私の質問:

  • コードに何が欠けているか、または何が間違っている可能性がありますか?
  • 私が達成したいことを実装することさえ可能ですか?

サーバー - 認証 (短縮、Waffle から抽出):

サーバー - CreateProcessAsUser: