원클릭으로
spec-client-auth
クライアント認証(Client Authentication)機能の開発・修正を行う際に使用。7種のクライアント認証方式、private_key_jwt、tls_client_auth実装時に役立つ。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
クライアント認証(Client Authentication)機能の開発・修正を行う際に使用。7種のクライアント認証方式、private_key_jwt、tls_client_auth実装時に役立つ。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | spec-client-auth |
| description | クライアント認証(Client Authentication)機能の開発・修正を行う際に使用。7種のクライアント認証方式、private_key_jwt、tls_client_auth実装時に役立つ。 |
documentation/docs/content_06_developer-guide/03-application-plane/10-client-authentication.md - クライアント認証実装ガイドdocumentation/docs/content_03_concepts/01-foundation/concept-03-client.md - クライアント概念クライアント認証は、クライアントの正当性を検証する層。
libs/
├── idp-server-core/ # クライアント認証コア
│ └── .../oauth/clientauthenticator/
│ ├── ClientAuthenticationHandler.java
│ ├── ClientSecretBasicAuthenticator.java
│ ├── ClientSecretPostAuthenticator.java
│ ├── ClientSecretJwtAuthenticator.java
│ ├── PrivateKeyJwtAuthenticator.java
│ └── clientcredentials/
│ └── ClientCredentials.java
│
├── idp-server-core-extension-fapi/ # mTLS認証(FAPI)
│ └── .../extension/fapi/
│ ├── TlsClientAuthAuthenticator.java
│ └── SelfSignedTlsClientAuthAuthenticator.java
│
└── idp-server-control-plane/ # 管理API
└── .../management/client/
└── ClientManagementApi.java
idp-server-core/oauth/clientauthenticator/ 内:
ClientAuthenticationHandlerが、token_endpoint_auth_methodに応じた適切なAuthenticatorを選択します。
public class ClientSecretBasicAuthenticator {
// HTTP Basic認証
// Authorization: Basic base64(client_id:client_secret)
}
public class ClientSecretPostAuthenticator {
// リクエストボディでclient_id, client_secretを送信
}
public class ClientSecretJwtAuthenticator {
// JWT Assertionをclient_secretで署名(HMAC)
// client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
}
public class PrivateKeyJwtAuthenticator {
// JWT Assertionをクライアント秘密鍵で署名(RSA/ECDSA)
// JWKSエンドポイントから公開鍵を取得して検証
// client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
}
idp-server-core-extension-fapi/ 内:
public class TlsClientAuthAuthenticator {
// クライアント証明書のSubject DNを検証
// Client.tlsClientAuthSubjectDn と一致確認
}
public class SelfSignedTlsClientAuthAuthenticator {
// クライアント証明書全体を検証
// Client.tlsClientAuthCertificate と一致確認
}
// Public Client用(認証なし)
// PKCE必須
{
"iss": "client_id",
"sub": "client_id",
"aud": "https://idp.example.com/token",
"jti": "unique-id",
"exp": 1234567890,
"iat": 1234567890
}
クライアント認証方式だけでなく、クライアント設定で認可動作を制御できる。
クライアントの scope フィールドで、利用可能なスコープを制限する。
{
"scope": "openid profile" // emailスコープを除外 → UserInfoからemail消失
}
サーバーの scopes_supported は Discovery 表示専用。実際のフィルタリングはクライアント設定で行う。
{
"grant_types": ["authorization_code"] // refresh_tokenを除外 → RT発行不可
}
{
"redirect_uris": ["https://app.example.com/callback"]
// 登録されていないURIへの認可リクエスト → error=invalid_request
}
RFC 6749 Section 3.1.2.4 に準拠した完全一致検証。
{
"response_types": ["code"] // token, id_token等を除外
}
認可サーバー設定のデフォルト値をクライアント単位で上書きできる。
{
"access_token_duration": 1800, // サーバーデフォルトより短く
"id_token_duration": 600,
"refresh_token_duration": 86400
}
{
"refresh_token_strategy": "FIXED", // FIXED: 元のRT期限維持, EXTENDS: リフレッシュ時に延長
"rotate_refresh_token": true // true: リフレッシュ時に新RT発行(旧RT無効化)
}
{
"tos_uri": "https://example.com/tos-v2", // 変更すると既存同意を無効化
"policy_uri": "https://example.com/policy-v2" // 次回認可時に再同意画面が表示される
}
スコープ拡張時も同様に再同意がトリガーされる。
クライアントの token_endpoint_auth_method は、サーバーの token_endpoint_auth_methods_supported に含まれている必要がある。
// サーバー: "token_endpoint_auth_methods_supported": ["client_secret_basic", "client_secret_post"]
// クライアント: "token_endpoint_auth_method": "none"
// → トークンリクエスト時にエラー
none を使う場合はサーバー側にも none を追加する必要がある。
e2e/src/tests/
└── spec/
├── oidc_core_9_client_authenticartion.test.js # クライアント認証仕様
├── rfc6749_4_1_code_secret_basic.test.js # client_secret_basic
└── rfc7523_jwt_bearer_assertion.test.js # JWT Assertion
# ビルド
./gradlew :libs:idp-server-core:compileJava
./gradlew :libs:idp-server-core-extension-fapi:compileJava
# テスト
cd e2e && npm test -- spec/oidc_core_9_client_authenticartion.test.js
cd e2e && npm test -- spec/rfc7523_jwt_bearer_assertion.test.js
UserInfoエンドポイント(UserInfo Endpoint)機能の開発・修正を行う際に使用。UserInfo claims、scopeフィルタリング、verified_claims実装時に役立つ。
外部API認証ユースケースの設定ガイド。外部API連携(認証委譲、リスク判定、OTP等)の interaction 設計、identity_match_field、MFA 2段階目、previous_interaction のヒアリングと設定JSONを提供。
ユースケース別セットアップのエントリポイント。ユーザーにユースケースを選択してもらい、対応するスキル(use-case-login, use-case-mfa等)にルーティングする。共通ワークフロー、前提条件、組み合わせパターンの概要を提供。
認証機能(Authentication Policy, MFA)の開発・修正を行う際に使用。認証ポリシー、パスワード、OTP、FIDO2、条件付き認証実装時に役立つ。
セキュリティ・脆弱性対策の開発・テストを行う際に使用。OAuth/OIDC攻撃対策、認証識別子切り替え攻撃、Session Fixation、マルチテナント分離、セキュリティテスト実装時に役立つ。
外部サービス連携(External Service Integration)機能の開発・修正を行う際に使用。HTTP Request Executor, MappingRule, OAuth/HMAC認証実装時に役立つ。