メインコンテンツまでスキップ
プレビュー版
PocketSign Link v2 は現在プレビュー版です。正式提供までに仕様が変更される可能性があります。

通常のログイン連携

PocketSign Link v2 を ID 認証基盤として使い、サービスのサインアップ・サインインを実装したいときに、最初に試すログインフローです。 まずはこのページの構成でログインを通し、その後に再認証や追加権限要求を組み合わせていきます。

このページの前提

  • OIDC クライアントを作成済みで、client_idclient_secretredirect_uri が分かっている
  • redirect_uri を事前登録済みである

OIDC クライアント情報がまだ手元にない場合は、PocketSign Platform で client_id、クライアント認証情報、登録済み redirect_uri を取得してから実装してください。 接続先や環境ごとの違いをまだ確認していない場合は 環境 を、OIDC の全体像を先に把握したい場合は OIDC の概要 を参照してください。

このフローで実現すること

  • PocketSign Link v2 のアカウントでユーザーを認証する
  • 必要なら userinfo で最新属性を取得する

実装の進め方

このページでは、次の順番で実装します。

  1. Discovery Document を取得して issuerauthorization_endpointtoken_endpointjwks_uri を確認する
  2. 認可リクエストを組み立ててユーザーをリダイレクトする
  3. コールバックで受け取った認可コードを token に交換する
  4. id_token を検証し、sub をログイン識別子として扱う
  5. 最新属性が必要な場合だけ userinfo を呼ぶ

Discovery の見方や主要エンドポイントは OIDC の概要 にまとめています。

フロー図

認可エンドポイントで送るパラメータ

まず /.well-known/openid-configuration を取得し、環境に対応する authorization_endpoint を確認してください。

パラメータ役割
client_id7f3b41e2-a81c-4e35-b08d-2c7e60a4d073OIDC クライアント ID
redirect_urihttps://rp.example.com/callbackコールバック先
response_typecodeAuthorization Code Flow を使う指定
scopeopenidID トークン発行を要求
state8f2c...サービス側のリクエスト対応付け
nonce6b11...ID トークンの再利用防止
code_challengexxxxxxPKCE
code_challenge_methodS256PKCE の方式
GET /api/oidc/v1/authorize
?client_id=7f3b41e2-a81c-4e35-b08d-2c7e60a4d073
&redirect_uri=https%3A%2F%2Frp.example.com%2Fcallback
&response_type=code
&scope=openid
&state=8f2c...
&nonce=6b11...
&code_challenge=xxxxxx
&code_challenge_method=S256

トークンエンドポイントで送るパラメータ

この例では client_secret_basic を使い、Authorization ヘッダーでクライアント認証します。 別の方式を使う場合は クライアント認証 を参照してください。

パラメータ役割
grant_typeauthorization_code認可コード交換
codeSplxlOBeZQQYbYS6WxSbIAauthorize から返ったコード
redirect_urihttps://rp.example.com/callback認可リクエスト時と完全一致
code_verifierrandom-verifierPKCE 検証用
curl -X POST "https://id.mock.klon.you/api/oidc/v1/token" \
-u "7f3b41e2-a81c-4e35-b08d-2c7e60a4d073:client-secret" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=SplxlOBeZQQYbYS6WxSbIA" \
-d "redirect_uri=https://rp.example.com/callback" \
-d "code_verifier=random-verifier"

RP 側で確認するポイント

  • id_token の署名、issaudexpnonce を検証する
  • sub を サービス内のログイン識別子として保存する
  • 最新属性が必要な場合だけ userinfo を呼ぶ

このフローから広げるとき