プレビュー版
PocketSign Link v2 は現在プレビュー版です。正式提供までに仕様が変更される可能性があります。
通常のログイン連携
PocketSign Link v2 を ID 認証基盤として使い、サービスのサインアップ・サインインを実装したいときに、最初に試すログインフローです。 まずはこのページの構成でログインを通し、その後に再認証や追加権限要求を組み合わせていきます。
このページの前提
- OIDC クライアントを作成済みで、
client_id、client_secret、redirect_uriが分かっている redirect_uriを事前登録済みである
OIDC クライアント情報がまだ手元にない場合は、PocketSign Platform で client_id、クライアント認証情報、登録済み redirect_uri を取得してから実装してください。
接続先や環境ごとの違いをまだ確認していない場合は 環境 を、OIDC の全体像を先に把握したい場合は OIDC の概要 を参照してください。
このフローで実現すること
- PocketSign Link v2 のアカウントでユーザーを認証する
- 必要なら
userinfoで最新属性を取得する
実装の進め方
このページでは、次の順番で実装します。
- Discovery Document を取得して
issuer、authorization_endpoint、token_endpoint、jwks_uriを確認する - 認可リクエストを組み立ててユーザーをリダイレクトする
- コールバックで受け取った認可コードを
tokenに交換する id_tokenを検証し、subをログイン識別子として扱う- 最新属性が必要な場合だけ
userinfoを呼ぶ
Discovery の見方や主要エンドポイントは OIDC の概要 にまとめています。
フロー図
認可エンドポイントで送るパラメータ
まず /.well-known/openid-configuration を取得し、環境に対応する authorization_endpoint を確認してください。
| パラメータ | 例 | 役割 |
|---|---|---|
client_id | 7f3b41e2-a81c-4e35-b08d-2c7e60a4d073 | OIDC クライアント ID |
redirect_uri | https://rp.example.com/callback | コールバック先 |
response_type | code | Authorization Code Flow を使う指定 |
scope | openid | ID トークン発行を要求 |
state | 8f2c... | サービス側のリクエスト対応付け |
nonce | 6b11... | ID トークンの再利用防止 |
code_challenge | xxxxxx | PKCE |
code_challenge_method | S256 | PKCE の方式 |
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_type | authorization_code | 認可コード交換 |
code | SplxlOBeZQQYbYS6WxSbIA | authorize から返ったコード |
redirect_uri | https://rp.example.com/callback | 認可リクエスト時と完全一致 |
code_verifier | random-verifier | PKCE 検証用 |
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の署名、iss、aud、exp、nonceを検証するsubを サービス内のログイン識別子として保存する- 最新属性が必要な場合だけ
userinfoを呼ぶ
このフローから広げるとき
- 強い本人確認が必要なら マイナンバーカード認証を要求しながらログイン連携する
- 重要操作の前に再認証したいなら 重要な操作の前に PocketSign Link v2 での再認証を要求する
- ログインと同時に権限も取りたいなら ユーザーのリソースへのアクセス権限を要求する