Claude-skill-registry authorization-endpoint

認可エンドポイント(Authorization Endpoint)機能の開発・修正を行う際に使用。Authorization Request処理、同意フロー、Authorization Code生成実装時に役立つ。

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/authorization-endpoint" ~/.claude/skills/majiayu000-claude-skill-registry-authorization-endpoint && rm -rf "$T"
manifest: skills/data/authorization-endpoint/SKILL.md
source content

認可エンドポイント(Authorization Endpoint)開発ガイド

ドキュメント

  • documentation/docs/content_06_developer-guide/03-application-plane/02-authorization-flow.md
    - 認可フロー実装ガイド
  • documentation/docs/content_03_concepts/03-authentication-authorization/concept-04-authorization.md
    - 認可概念

機能概要

認可エンドポイントは、OAuth 2.0/OpenID Connectの認可リクエストを処理する層。

  • Authorization Request処理: リクエスト検証、保存
  • 同意フロー: ユーザー同意の取得
  • Authorization Code生成: 認可コード発行
  • Response Type別処理: code, token, id_token, hybrid
  • 動的scopeフィルタリング: 認証方式・ACRベース

モジュール構成

libs/
├── idp-server-core/                         # 認可コア
│   └── .../oauth/
│       ├── handler/
│       │   ├── OAuthRequestHandler.java    # リクエスト処理
│       │   └── OAuthAuthorizeHandler.java  # 認可処理
│       ├── request/
│       │   ├── AuthorizationRequest.java
│       │   └── AuthorizationRequestIdentifier.java
│       ├── response/
│       │   ├── AuthorizationResponse.java
│       │   ├── AuthorizationResponseCreator.java
│       │   └── AuthorizationResponseCreators.java
│       ├── validator/
│       │   └── OAuthAuthorizeRequestValidator.java
│       └── repository/
│           └── AuthorizationRequestRepository.java
│
├── idp-server-core/grant_management/        # Grant管理
│   ├── grant/
│   │   ├── AuthorizationCodeGrant.java
│   │   └── AuthorizationCodeGrantCreator.java
│   └── AuthorizationGrantedRepository.java
│
└── idp-server-control-plane/               # 管理API
    └── .../management/authorization/

OAuthAuthorizeHandler

idp-server-core/oauth/handler/OAuthAuthorizeHandler.java
内の実際の実装:

public class OAuthAuthorizeHandler {

    AuthorizationResponseCreators creators;
    AuthorizationRequestRepository authorizationRequestRepository;
    AuthorizationCodeGrantRepository authorizationCodeGrantRepository;
    OAuthTokenCommandRepository oAuthTokenCommandRepository;
    AuthorizationServerConfigurationQueryRepository authorizationServerConfigurationQueryRepository;
    ClientConfigurationQueryRepository clientConfigurationQueryRepository;
    AuthorizationGrantedRepository authorizationGrantedRepository;

    public AuthorizationResponse handle(OAuthAuthorizeRequest request) {

        Tenant tenant = request.tenant();
        AuthorizationRequestIdentifier authorizationRequestIdentifier =
            request.toIdentifier();
        User user = request.user();
        Authentication authentication = request.authentication();
        CustomProperties customProperties = request.toCustomProperties();
        DeniedScopes deniedScopes = request.toDeniedScopes();

        // リクエスト検証
        OAuthAuthorizeRequestValidator validator =
            new OAuthAuthorizeRequestValidator(
                authorizationRequestIdentifier,
                user,
                authentication,
                customProperties
            );
        validator.validate();

        // AuthorizationRequest取得
        AuthorizationRequest authorizationRequest =
            authorizationRequestRepository.get(
                tenant,
                authorizationRequestIdentifier
            );

        // Response生成(Response Type別)
        // AuthorizationResponseCreatorsが適切なCreatorを選択
        // ...
    }
}

注意: AuthorizationResponseCreatorsが、Response Type(code, token, id_token, hybrid)に応じた適切なCreatorを選択します。

Authorization Code Grant生成

idp-server-core/grant_management/grant/
内:

public class AuthorizationCodeGrantCreator {
    public AuthorizationCodeGrant create(
        AuthorizationGrant authorizationGrant,
        AuthorizationRequest authorizationRequest
    ) {
        // Authorization Code生成
        // AuthorizationGrantとAuthorizationRequestを紐付け
    }
}

Response Type別処理

Response TypeCreator説明
code
AuthorizationResponseCodeCreatorAuthorization Code Flow
token
AuthorizationResponseTokenCreatorImplicit Flow (非推奨)
id_token
AuthorizationResponseIdTokenCreatorImplicit Flow
code token
Hybrid Flow CreatorHybrid Flow
code id_token
Hybrid Flow CreatorHybrid Flow
code id_token token
Hybrid Flow CreatorHybrid Flow

E2Eテスト

e2e/src/tests/
├── spec/
│   ├── oidc_core_3_1_code.test.js          # Authorization Code Flow
│   ├── oidc_core_3_2_implicit.test.js      # Implicit Flow
│   ├── oidc_core_3_3_hybrid.test.js        # Hybrid Flow
│   └── rfc6749_4_1_code.test.js            # OAuth 2.0 Authorization Code
│
└── scenario/application/
    └── scenario-02-sso-oidc.test.js        # SSO認可シナリオ

コマンド

# ビルド
./gradlew :libs:idp-server-core:compileJava

# テスト
cd e2e && npm test -- spec/oidc_core_3_1_code.test.js
cd e2e && npm test -- spec/oidc_core_3_3_hybrid.test.js

トラブルシューティング

Authorization Request検証失敗

  • redirect_uriがクライアント登録済みURIと一致するか確認
  • scopeが有効か確認
  • Response Typeがクライアント設定と一致するか確認

Authorization Code生成失敗

  • AuthorizationGrantが正しく生成されているか確認
  • ユーザー認証が完了しているか確認

同意画面が表示されない

  • Grant管理の設定を確認
  • 既存Grantが存在する場合は同意スキップ