Tinyauth

始める

Tinyauthに OAuth/OIDC クライアントを登録する方法

tinyauthを通じてユーザーを認証したいアプリケーションは、まず OAuth/OIDC クライアントとして登録する必要があります。クライアント登録は config.yamlclients セクションでできます。

# config.yaml
clients:
  - id: my-app
    name: My Application
    client_id: my-app-client-id
    client_secret: my-app-client-secret
    redirect_uris:
      - https://myapp.example.com/callback
    response_types:
      - code
    grant_types:
      - authorization_code
      - refresh_token
    scope: openid profile email

設定項目

アイテム必須説明
idOクライアントの内部一意の識別子です。
nameOユーザーに表示されるアプリケーション名です。同意画面に見えます。
logo_uriX同意画面に表示されるロゴ画像 URLこれです。
client_idOOAuth リクエストで使用するパブリッククライアント識別子です。
client_secretクライアントシークレットです。機密クライアント(サーバー側アプリ)でのみ必要で、公開クライアント(SPA/モバイル)では省略します。
redirect_urisO認証後にリダイレクトできる許可 URL リストです。
response_typesO許可する OAuth 応答タイプです。一般的に codeを使用します。
grant_typesO許可する OAuth 認可タイプです。
scopeO許可する OAuth スコープ(空白で区切り)です。

機密クライアント vs 公開クライアント

OAuthでは、クライアントを2つのタイプに分けます。

機密クライアント(Confidential Client)

サーバー側でシークレットを安全に保管できるアプリケーションです。 client_secretを設定し、トークン交換時にシークレットを一緒に送信します。

  • Next.js、Express、Spring Bootなどのサーバーサイドアプリ
  • client_secretこの必須
clients:
  - id: web-server-app
    name: Web Server App
    client_id: web-server-client
    client_secret: ${WEB_SERVER_SECRET}
    redirect_uris:
      - https://myapp.com/api/callback
    response_types:
      - code
    grant_types:
      - authorization_code
      - refresh_token
    scope: openid profile email

パブリッククライアント (Public Client)

クライアント側のコードでシークレットを安全に保持できないアプリケーションです。 client_secretを省略し、代わりに PKCE を使用してセキュリティを確保します。

  • React SPA, Vue SPA、モバイルアプリなど
  • client_secret 省略
clients:
  - id: spa-app
    name: Single Page App
    client_id: spa-client
    redirect_uris:
      - https://myapp.com/callback
    response_types:
      - code
    grant_types:
      - authorization_code
      - refresh_token
    scope: openid profile email

OIDC Discovery

登録されたクライアントアプリケーションは tinyauthの OIDC Discoveryエンドポイントを使用して、認証に必要な情報を自動的にインポートできます。

{server.public_origin}/.well-known/openid-configuration

このエンドポイントは認証、トークン、ユーザー情報、 JWKS などのエンドポイント URLを返します。ほとんど OIDC クライアントライブラリは URLだけで自動設定が可能です。


次のステップ

クライアントを登録した後、実際のアプリケーションに連動する方法については、次のガイドを参照してください。

  • Next.js 連動 - サーバーサイドアプリ(機密クライアント)
  • React SPA 連動 - クライアントサイドアプリ(パブリッククライアント)