当社では、CAS サーバーを使用した SSO によって保護された複数の Web アプリケーションを展開しています。ユーザーはアプリケーションの URL を要求し、まだ認証されていない場合は、CAS サーバーのログイン ページにリダイレクトされます。認証が成功した場合、ユーザーは最初に要求された URL にリダイレクトされます。一般的なワークフローであり、完全に機能します。
ただし、CAS サーバーを使用して REST API を保護する必要もあります。好ましいフローは次のとおりです。
- ユーザーがアプリケーション REST API のトークンを作成する
- このトークンを使用して、ユーザーは一時的なアクセス トークン (CAS トークンなど) を要求できます。
- REST Api への各要求で、ユーザーは一時アクセス トークンを HTTP ヘッダーまたは要求パラメーターとして含めます。
- REST Api アプリケーションは、提供された一時トークンの有効性を CAS サーバーに対してチェックします。
CAS サーバーがサポートする OAuth のように聞こえますが、ユーザーはいつでも資格情報を求められることはありませんが、サービス、つまり API を呼び出す他のアプリケーションにも認証を提供したいと考えています。
- 開発者が REST Api トークン (CAS ユーザーに関連付けられている) を要求する
- アプリケーションは、Api トークンを使用して一時的なアクセス トークンを要求します
- API への追加のリクエストには、一時的なアクセス トークンが HTTP ヘッダーまたはリクエスト パラメータとして含まれます。
- REST API アプリケーションは、有効性について CAS サーバーに対して一時アクセス トークンをチェックします
REST Api アプリケーションは、ユーザー資格情報について何も知らず、ユーザー データベースにアクセスすることさえできません。これは、アプリケーションを使用する人間にとっては問題なく機能します (CAS ログイン ページにリダイレクトします)。
CAS サーバーを大幅にカスタマイズし、この動作を自分で実装することなく、このフローを実装する方法がわかりません。
Google はServer to Server Applications の OAuth 2.0 にJWT を使用しています。
誰かが(CASサーバーに)ヒントや代替手段を提供できれば幸いです。誰かがすでに CAS サーバーを使用してこのパターンを実装しており、この問題に関する情報を提供できる可能性があります。
よろしく、マルコ