Ory Hydraで運営しているAPI提供サーバーにDeveloper portalを用意する

Ory Hydraで運営しているAPI提供サーバーにDeveloper portalを用意する

更新: 2026年1月19日

Ory Hydraに専用のscopeを用意して、それを経由してアクセスすることで、既存の仕組みを使いながらデベロッパーポータルサイトを構築することができる

前回のブログで、Ory Hydra をつかって、APIを提供する仕組みを作った。しかし現状のままでは各開発者にIDを渡すために、Hydraサーバーに対して、毎回コマンドを叩く必要がある。

 そのため、開発者がアプリケーションのcallbackや名前等を自由に編集するDeveloper portalページを用意した。

https://bfh-developer-portal-front.vercel.app/

画像の説明

 このWebサイトはブレイブフロンティアヒーローズのプライム会員でないと利用できないようになっている。

手法としては、OryHydraに対して、developer portal用のClientを発行する。Scopeにdeveloper:adminを追加する。

--scope openid,profile,offline_access,developer:admin \

 APIサーバーによるClientのCRUD操作はdeveloper:admin権限を要求するようにする。また、新たにdeveloper:adminをもつClientを作れないように制御している。そして、上で述べたように、元のゲームでの利用権限もチェックすることでユーザーの正当性を確認している。

graph TB
    subgraph Public_Internet [パブリックインターネット]
        Dev((開発者))
        Portal[Developer Portal Front-end<br/>Vercel]
    end

    subgraph AWS_Private_Network [AWS プライベートネットワーク]
        API[API Server<br/>CRUD操作 / 権限チェック]
        Hydra[Ory Hydra<br/>OAuth2/OIDC Server]
        GameDB[(Game Server / DB)]
    end

    Dev -- アクセス --> Portal
    Portal -- 1. ログイン/認可要求<br/>scope: developer:admin --> Hydra
    Portal -- 2. Client操作要求<br/>(Bearer Token付) --> API

    API -- 3. 会員ステータス確認 --> GameDB
    API -- 4. Client CRUD実行<br/>(ownerタグ付与) --> Hydra

    style AWS_Private_Network fill:#f9f,stroke:#333,stroke-width:2px
    style Public_Internet fill:#fdf,stroke:#333,stroke-dasharray: 5 5
sequenceDiagram
    autonumber
    actor Developer as 開発者
    participant Portal as Portal (Front)
    participant Hydra as Ory Hydra
    participant API as API Server
    participant Game as Game Server

    Developer->>Portal: ログイン (OAuth2 Flow)
    Portal->>Hydra: 認可リクエスト (scope: developer:admin)
    Hydra-->>Developer: ログイン/同意画面
    Developer->>Hydra: 承認
    Hydra-->>Portal: Access Token (developer:admin保持)

    Note over Developer, Portal: 開発者ポータル利用開始

    Developer->>Portal: 新規Client作成要求 (名前, Callback等)
    Portal->>API: Client作成リクエスト (Token + 入力内容)
    
    API->>API: 1. scope 'developer:admin' の検証
    API->>Game: 2. プライム会員かチェック
    
    alt 正当なユーザー
        API->>Hydra: 3. Client作成 (POST /admin/clients)
        Note right of Hydra: --owner 'ユーザーID'<br/>--scope 'openid,profile...'
        Hydra-->>API: 201 Created
        API-->>Portal: 作成完了通知
        Portal-->>Developer: Client ID / Secret 表示
    else 不正/非会員
        API-->>Portal: 403 Forbidden
    end

これによって、OryHydraとAPIサーバーを利用してDeveloper Portalページを作成することができ、3rdパーティー開発者が自由に開発を行えるようになる。

開発者が作ったClientをポータルサイトで一覧で取得できるようにclient作成時にはownerを付与する(実際にはAWS上のプライベートネットワーク内でAPIを叩いて実行している)

--owner '一意のユーザーID' \

 Ory Hydraを使うことで、自己増殖するかのように便利ツールを増やしていけるのはヘッドレスな構造ならではといったところ。

現状はやらなきゃいけないことなどが無限にあるため、引き続き開発者向けの便利な仕組みを構築していきます。

最新記事をフォロー

RSS Feed