Skip to content
Back to skills

Client Authentication

ASecurity

クライアント認証(Client Authentication)機能の開発・修正を行う際に使用。7種のクライアント認証方式、private_key_jwt、tls_client_auth実装時に役立つ。

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 8, 2026
securityjavabashapidocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill client-authentication --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Client Authentication?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Client Authentication
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-client-authentication/badge)](https://www.skillsdirectory.com/skills/majiayu000-client-authentication)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: client-authentication
description: クライアント認証(Client Authentication)機能の開発・修正を行う際に使用。7種のクライアント認証方式、private_key_jwt、tls_client_auth実装時に役立つ。
---

# クライアント認証(Client Authentication)開発ガイド

## ドキュメント

- `documentation/docs/content_06_developer-guide/03-application-plane/10-client-authentication.md` - クライアント認証実装ガイド
- `documentation/docs/content_03_concepts/01-foundation/concept-03-client.md` - クライアント概念

## 機能概要

クライアント認証は、クライアントの正当性を検証する層。
- **7種の認証方式**: client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, tls_client_auth, self_signed_tls_client_auth, none
- **JWT Assertion検証**: JWS署名検証
- **mTLS認証**: クライアント証明書検証

## モジュール構成

```
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
```

## ClientAuthenticationHandler

`idp-server-core/oauth/clientauthenticator/` 内:

ClientAuthenticationHandlerが、token_endpoint_auth_methodに応じた適切なAuthenticatorを選択します。

## 認証方式別実装

### 1. client_secret_basic

```java
public class ClientSecretBasicAuthenticator {
    // HTTP Basic認証
    // Authorization: Basic base64(client_id:client_secret)
}
```

### 2. client_secret_post

```java
public class ClientSecretPostAuthenticator {
    // リクエストボディでclient_id, client_secretを送信
}
```

### 3. client_secret_jwt

```java
public class ClientSecretJwtAuthenticator {
    // JWT Assertionをclient_secretで署名(HMAC)
    // client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
}
```

### 4. private_key_jwt

```java
public class PrivateKeyJwtAuthenticator {
    // JWT Assertionをクライアント秘密鍵で署名(RSA/ECDSA)
    // JWKSエンドポイントから公開鍵を取得して検証
    // client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
}
```

### 5. tls_client_auth (mTLS)

`idp-server-core-extension-fapi/` 内:

```java
public class TlsClientAuthAuthenticator {
    // クライアント証明書のSubject DNを検証
    // Client.tlsClientAuthSubjectDn と一致確認
}
```

### 6. self_signed_tls_client_auth (mTLS)

```java
public class SelfSignedTlsClientAuthAuthenticator {
    // クライアント証明書全体を検証
    // Client.tlsClientAuthCertificate と一致確認
}
```

### 7. none

```java
// Public Client用(認証なし)
// PKCE必須
```

## JWT Assertion形式

```json
{
  "iss": "client_id",
  "sub": "client_id",
  "aud": "https://idp.example.com/token",
  "jti": "unique-id",
  "exp": 1234567890,
  "iat": 1234567890
}
```

## E2Eテスト

```
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
```

## コマンド

```bash
# ビルド
./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
```

## トラブルシューティング

### client_secret認証失敗
- client_secretが正しいか確認
- client_secret_basic: Base64エンコーディングを確認
- client_secret_post: パラメータ名を確認

### private_key_jwt検証失敗
- JWKSエンドポイントが正しいか確認
- JWT署名アルゴリズム(RS256, ES256)を確認
- JWT Assertionのaud, iss, subを確認

### mTLS認証失敗
- クライアント証明書が正しく送信されているか確認
- tls_client_auth: Subject DNが一致するか確認
- self_signed_tls_client_auth: 証明書全体が一致するか確認

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.