本文へ移動

デジタル認証アプリ

APIリファレンス(民間事業者向け)

公開日

更新日

認可エンドポイント

OpenID Connect で定義されている認可エンドポイント。

query Parameters
response_type
required
string
Value: "code"
Example: response_type=code

レスポンスタイプ
OpenID Connect の通り。
デジタル認証アプリサービスは、code(認可コード)のみをサポートする。

固定値codeを設定する。

scope
required
string
Example: scope=openid name address birthdate gender sign

スコープ
Access Token に要求されるアクセス権限。大文字と小文字を区別する文字列で、スペース区切りのリストで示される。

[スコープ一覧]

スコープ名 説明
openid 必須。
name 基本4情報取得を要求する場合設定。
address 基本4情報取得を要求する場合設定。
birthdate 基本4情報取得を要求する場合設定。
gender 基本4情報取得を要求する場合設定。
sign 署名を要求する場合、必須。
client_id
string [ 1 .. 255 ] characters [0-9a-zA-Z]*
Example: client_id=RP00000001

クライアントID
デジタル認証アプリサービスがクライアントに発行したクライアントID。

クライアントIDを設定する。

redirect_uri
required
string <uri> [ 1 .. 255 ] characters
Example: redirect_uri=https://client.sample/uri

リダイレクトURI
レスポンスが返される Redirection URI。

リダイレクトURIを設定する。

state
required
string [ 1 .. 255 ] characters [\x20-\x7E]*
Example: state=b04b31cee32645ab700dce72860047bd

ステート
リクエストとコールバックの間で維持されるランダムな値。Cross-Site Request Forgery (CSRF, XSRF) 対策の目的で利用される。
stateの仕様は RFC6749 参照。

  • VSCHAR = %x20-7E (Augmented BNF 構文 すべてのASCII文字を示す)
  • state = 1*VSCHAR (1文字以上のASCII文字)
    ASCII文字 ``` [ ]!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~ ```` [ ]は半角スペース。

リクエスト毎にステート値を生成し設定する。
code_verifierと同じく、256ビットのエントロピーを推奨。

nonce
required
string [ 1 .. 255 ] characters [\x20-\x7E]*
Example: nonce=b04b31cee32645ab700dce72860047bd

ナンス
Client セッションと ID Token を紐づける文字列。リプレイアタック対策に用いられる。
nonce 値は、case-sensitive (大文字と小文字を区別する) である点に留意すること。(OpenID Connect)

リクエスト毎にナンス値を生成し設定する。
code_verifierと同様に、256ビットのエントロピーを推奨。

code_challenge
required
string [ 1 .. 128 ] characters [0-9a-zA-Z_-]*
Example: code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM

code_challenge
code_verifier(半角英数字および記号(-.~)からなるランダムな43〜128の文字)をSHA256でハッシュ化したうえで、Base64URL形式にエンコードした値。
code_verifierの仕様は RFC7636 参照。

  • code_verifier = 43*128unreserved
  • unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
  • ALPHA = %x41-5A / %x61-7A
  • DIGIT = %x30-39

code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))


リクエスト毎にcode_challenge値を生成し設定する。

code_challenge_method
required
string
Value: "S256"
Example: code_challenge_method=S256

code_challenge生成方法

固定値"S256"を設定する。

acr_values
string
Example: acr_values=aal3 ocsp

認証コンテキストクラス参照値
認証要求を処理する際に要求される acr の値をスペース区切りで示した文字列。

  • 署名要求の場合
    指定不要。

  • 認証要求の場合
    aal3 crl または aal3 ocsp を設定する。

    acr値 説明
    aal3 利用者証明用電子証明書認証する場合に設定する。
    ocsp 利用者証明用電子証明書認証における利用者証明用
    電子証明書失効確認をOCSPで確認する場合に設定する。
    crl 利用者証明用電子証明書認証における利用者証明用
    電子証明書失効確認をCRLで確認する場合に設定する。

    aal3 ocsp を使用する場合は申し込み時にご相談ください。

sign_transaction_id
string <uuid>
Example: sign_transaction_id=65a04b4e-af8b-45a2-8713-5ec2631bab64

署名トランザクションID
署名を要求する場合に、署名トランザクション開始レスポンスの署名トランザクションIDを設定する。
スコープにsignを設定し、署名を要求する場合に設定する。

Responses

トークンエンドポイント

  • 認可コードフローの場合:
    • RPから認可コードを受信し、認可コードフローのアクセストークンを返却する。private_key_jwtで認証する。
  • クライアントクレデンシャルズフローの場合:
    • クライアント情報を受信し、クライアントクレデンシャルズフローのアクセストークンを返却する。private_key_jwtで認証する。
  • トークンリフレッシュフローの場合:
    • リフレッシュトークンを受信し、トークンリフレッシュフローのアクセストークンを返却する。
      ※初回発行におけるフローが認可コードフローの場合、IDトークンを返却する。
      private_key_jwtで認証する。
Request Body schema: application/x-www-form-urlencoded
grant_type
required
string
Enum: "authorization_code" "client_credentials" "refresh_token"

グラントタイプ
アクセストークンを取得する方法を設定する。

  • 認可コードフロー
    必須。authorization_code を設定する。
  • クライアントクレデンシャルズフロー
    必須。client_credentials を設定する。
  • トークンリフレッシュフロー
    必須。refresh_tokenを設定する。
code
string = 110 characters [0-9a-zA-Z.-]*

認可コード
認可レスポンスで受信した認可コードを設定する。

  • 認可コードフロー
    必須。
  • クライアントクレデンシャルズフロー
    設定しない。
  • トークンリフレッシュフロー
    設定しない。
redirect_uri
string <uri> [ 1 .. 255 ] characters

リダイレクトURI
認可レスポンスを受信したリダイレクトURIを設定する。

  • 認可コードフロー
    必須。
  • クライアントクレデンシャルズフロー
    設定しない。
  • トークンリフレッシュフロー
    設定しない。
client_id
string [ 1 .. 255 ] characters [0-9a-zA-Z]*

クライアントID
トークンエンドポイントを要求するクライアントIDを設定する。

  • 認可コードフロー
    任意。RPのクライアントIDを設定する。
  • クライアントクレデンシャルズフロー
    必須。RPのクライアントIDを設定する。
  • トークンリフレッシュフロー
    必須。RPのクライアントIDを設定する。
code_verifier
string [ 43 .. 128 ] characters [a-zA-Z0-9._~-]*

code_verifier
認可リクエストに設定したcode_challengeのもととなったcode_verifierを設定する。

  • 認可コードフロー
    必須。
  • クライアントクレデンシャルズフロー
    設定しない。
  • トークンリフレッシュフロー
    設定しない。
client_assertion_type
required
string
Value: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"

クライアントアサーションタイプ
client_assertionのタイプを設定する。

client_assertion
required
string

クライアントアサーション
クライアント認証のための情報を含むJWTを設定する。

client_assertionの仕様は OpenID Connect - 9.Client Authentication の [private_key_jwt] 参照。
JWT の必須クレームの設定例は以下の通り。

  • iss: デジタル認証アプリサービスがクライアントに発行したクライアントID。
  • sub: デジタル認証アプリサービスがクライアントに発行したクライアントID。
  • aud: トークンエンドポイント https://{FQDN}/api/realms/main/protocol/openid-connect/token を設定。
  • jti: 任意のUUIDや、client_id + timestamp などを組み合わせたトークンを一意に識別するための識別子を設定。
  • exp: JWTの有効期限を設定。
scope
string

スコープ
Access Token に要求されるアクセス権限。大文字と小文字を区別する文字列で、スペース区切りのリストで示される。

  • 認可コードフロー
    設定しない。
  • クライアントクレデンシャルズフロー
    必須。クライアント・クレデンシャルズフローで認可を要求するスコープを設定する。
  • トークンリフレッシュフロー
    設定しない。
    [スコープ一覧]
  • sign
refresh_token
string <byte>

リフレッシュトークン
デジタル認証アプリサービスから過去に受信した既存のリフレッシュトークン。

  • 認可コードフロー
    設定しない。
  • クライアントクレデンシャルズフロー
    設定しない。
  • トークンリフレッシュフロー
    必須。

Responses

Response samples

Content type
application/json
{
  • "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhVFN4RHpxM1B6c2dhak0wN3YzWmxGSm8tajBWUGdaVWQ1d0NPOUJydkx3In0...",
  • "expires_in": 300,
  • "refresh_expires_in": 1800,
  • "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJmZDMzN2ZkMS1lMzU5LTQyMjEtODM1NS1lMWVhYzBhZTZjZTUifQ...",
  • "token_type": "Bearer",
  • "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhVFN4RHpxM1B6c2dhak0wN3YzWmxGSm8tajBWUGdaVWQ1d0NPOUJydkx3In0...",
  • "not_before_policy": 0,
  • "session_state": "db0815aa-3ac9-429c-9f59-f789bbe1953b",
  • "scope": "openid name address birthdate"
}

UserInfoエンドポイント

利用者識別子および属性情報(基本4情報、利用者証明用電子証明書)を返却する。
属性情報は、認可レスポンス返却後、60分経過後に破棄される。認可レスポンス受信後、60分以内に取得すること。

Authorizations:
bearer_rp_authorization_code_token

Responses

Response samples

Content type
application/json
{
  • "sub": "29bc4140-6bad-c79f-4101-c2c3a5d8bfc8",
  • "name": "番号 花子",
  • "address": "○○県□□市△△町◇丁目○番地▽▽号",
  • "birthdate": 20000202,
  • "gender": 1
}

署名トランザクション開始

指定されたパラメータを元に、署名トランザクションIDを作成し、返却する。

Authorizations:
bearer_rp_client_credentials_token
Request Body schema: application/json
required
client_id
required
string [ 1 .. 255 ] characters

クライアントID

title
required
string [ 1 .. 255 ] characters

署名対象データ名

identification_code
required
string [ 1 .. 10 ] characters

署名対象識別コード (利用者に表示し、署名対象を識別するID)

data
required
string

署名対象データ 以下の署名対象データの指定方法がある。詳細は、行政機関等・民間事業者向け実装ガイドラインの署名についての項目を参照のこと。 ー署名対象をSHA256によって生成したハッシュ値をBase64エンコードしたものを設定 ー署名対象をSHA256によって生成したハッシュ値にDigestInfoを付加し、Base64エンコードしたものを設定

Responses

Request samples

Content type
application/json
{
  • "client_id": "RP00000001",
  • "title": "登録申請書(法人)",
  • "identification_code": "6391",
  • "data": "aQcY31F3kz6vopFmw3UyCuGgoLSHwbWn/gkv5c3n8gPFJyntwNPNp092P/Q1i5OBq6GUKw=="
}

Response samples

Content type
application/json
{
  • "sign_transaction_id": "37a52ac8-b232-ebac-a454-04d68916489f",
  • "client_id": "RP00000001",
  • "state": "CREATED",
  • "expiration_datetime": "2022-01-01T00:00:00+09:00"
}

署名トランザクション結果取得

署名トランザクションIDを元に署名値、署名用電子証明書を返却する。

Authorizations:
bearer_rp_authorization_code_token
path Parameters
sign_transaction_id
required
string <uuid>
Example: 37a52ac8-b232-ebac-a454-04d68916489f

署名トランザクションID

Responses

Response samples

Content type
application/json
{
  • "sign_transaction_id": "37a52ac8-b232-ebac-a454-04d68916489f",
  • "client_id": "RP00000001",
  • "state": "SIGNED",
  • "expiration_datetime": "2022-01-01T00:00:00+09:00",
  • "request": {
    },
  • "response": {
    }
}

OpenID Provider Configuration エンドポイント

各エンドポイントのURLとサポート機能を確認するためのエンドポイント。

Responses

Response samples

Content type
application/json
{}

JWK Set公開エンドポイント

デジタル認証アプリサービスが有効にした公開鍵を JSON Web Key (JWK) としてエンコードし返却する。

Responses

Response samples

Content type
application/json
{
  • "keys": [
    ]
}