1.3. アーキテクチャー
この例では、2 つの保護されたエンドポイントを持つ単純なマイクロサービスのセットアップを示します。
-
/api/users/me
-
/api/admin
トークンベースのアクセス制御
これらのエンドポイントへのアクセスは、ベアラートークンを使用して制御されます。アクセスするには、次の条件を満たす必要があります。
- 有効なトークン: トークンには正しい署名、適切な有効期限、適切な対象者が設定されている必要があります。
- 信頼: マイクロサービスは発行元の Keycloak サーバーを信頼する必要があります。
Keycloak サーバーによって発行されるベアラートークンは、以下の役割を果たします。
- ユーザー識別子: トークンが発行された対象 (ユーザー) を示します。
- クライアント参照: OAuth 2.0 Authorization Server 標準に従って、ユーザーに代わって動作するクライアントアプリケーションを識別します。
エンドポイントとアクセスポリシー
/api/users/me
の場合:
-
アクセスポリシー: 有効なベアラートークンと
user
ロールを持つユーザーに適用されます。 レスポンス: トークンから派生した JSON オブジェクトとしてユーザーの詳細を返します。
応答の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
/api/admin
の場合:
-
アクセスポリシー: 有効なベアラートークンと
admin
ロールを持つユーザーに制限されます。
分離された認可
この例では、リソースを保護するためのロールベースアクセス制御 (RBAC) ポリシーの使用を説明します。主なポイントは次のとおりです。
- ポリシーの柔軟性: Keycloak は、属性ベースやカスタムポリシーなど、さまざまなポリシータイプをサポートしており、きめ細かい制御が可能となります。
- 分離されたアプリケーションロジック: 認可ポリシーは Keycloak によって完全に管理されるため、アプリケーションはコア機能に集中できます。