メインコンテンツまでスキップ

署名 API の結果を用いた同意

ここでは、同意データの準備で取得した署名前同意申請データと、デジタル認証アプリの署名結果を用いて同意を行う方法を説明します。

注意

このRPCはプレビュー版のため、通常のクライアントはご利用いただけません。詳しくはプレビュー機能の利用をご覧ください。

あらかじめAPI の利用開始を完了し、API トークンを取得しておいてください。

シーケンス

要確認

Verify API の利用は、必ず SP 事業者で管理するサーバを経由して行ってください。 API トークンをアプリケーションに含めて配布することは、Verify API の不正利用ひいては JPKI への不正なアクセスにつながるため、絶対に行わないでください

実装例

クライアントライブラリのセットアップ方法は、クライアントライブラリをご参照ください。

sign_certificate_jwe の取得方法については、署名トランザクションの結果取得をご覧ください。

package main

import (
"context"
"encoding/base64"
"fmt"
"log"
"net/http"

"buf.build/gen/go/pocketsign/apis/connectrpc/go/pocketsign/verify/v2/verifyv2connect"
verifyv2 "buf.build/gen/go/pocketsign/apis/protocolbuffers/go/pocketsign/verify/v2"
"connectrpc.com/connect"
)

var (
// APIエンドポイントを指定します。この値は環境によって異なります。
// デジタル認証アプリを使用するため、テスト環境の URL を指定しています。
baseUrl = "https://verify.test.p8n.app"

// Verify APIのトークンです。ご自身のトークンに置き換えてください。
token = "<YOUR_API_TOKEN>"

// PrepareConsentApplication のレスポンスから取得した署名前同意申請データです。
rawApplication = "POWIqeeUqOiAheWQjOaEj+eUs+iri+aDheWgsT4855Sz6KuL5pu4PjznlLPoq4vml6U+MjAyNi8wNS8yODwv55Sz6KuL5pelPjznlLPoq4vmmYLplpM+MjM6Mjk6NTE8L+eUs+iri+aZgumWkz4844K144O844OT44K5SUQ+c2FtcGxlPC/jgrXjg7zjg5PjgrlJRD4844K144O844OT44K55LqL5qWt6ICFSUQ+c2FtcGxlPC/jgrXjg7zjg5Pjgrnkuovmpa3ogIVJRD485Yip55So6ICF5ZCM5oSP5oOF5aCxPjzkvY/miYA+MTwv5L2P5omAPjzmsI/lkI0+MTwv5rCP5ZCNPjznlJ/lubTmnIjml6U+MTwv55Sf5bm05pyI5pelPjzmgKfliKU+MTwv5oCn5YilPjwv5Yip55So6ICF5ZCM5oSP5oOF5aCxPjwv55Sz6KuL5pu4Pjwv5Yip55So6ICF5ZCM5oSP55Sz6KuL5oOF5aCxPg=="

// デジタル認証アプリの署名トランザクション結果取得 API のレスポンスに含まれる
// `response.sign_certificate_jwe` をそのまま指定してください。
signCertificateJwe = "<YOUR_RESPONSE_SIGN_CERTIFICATE_JWE>"
)

func run() error {
// Base64をデコードしてバイト列にします。
application, err := base64.StdEncoding.DecodeString(rawApplication)
if err != nil {
return err
}

// 同意リクエストを作成します。
request := connect.NewRequest(&verifyv2.CreateConsentForDigitalIdentificationAppRequest{
// PrepareConsentApplication のレスポンスから取得した署名前同意申請データを送信します。
Application: application,
// デジタル認証アプリの署名トランザクション結果取得 API のレスポンスの sign_certificate_jwe を送信します。
SignCertificateJwe: signCertificateJwe,
})

// リクエストにAPIトークンを設定します。
request.Header().Set("Authorization", "Bearer "+token)
// リクエストにプレビュー版にオプトインするためのヘッダを設定します。
request.Header().Set("X-P8N-OptIn", "PREVIEW")

// APIクライアントを作成します。
client := verifyv2connect.NewConsentServiceClient(http.DefaultClient, baseUrl)

// 同意リクエストを送信します。
response, err := client.CreateConsentForDigitalIdentificationApp(context.Background(), request)
if err != nil {
return err
}

// 結果を表示します。
fmt.Printf("Certificate: %s\n", response.Msg.Certificate.Id)
return nil
}

func main() {
if err := run(); err != nil {
log.Fatalln(err)
}
}

リクエストに成功すると、以下のように結果が表示されます。

Certificate: 53e8bf1c-44ef-4a48-b02b-cfad42e1ceda

次のステップ

同意時に作成される証明書 ID を利用し、最新の基本4情報取得を行いましょう。

注意

最新の基本4情報取得のサンプルコードはモック環境(https://verify.mock.p8n.app)を前提としています。 署名 API の結果を用いた同意はテスト環境を前提としているため、 サンプルコードの API エンドポイントをテスト環境(https://verify.test.p8n.app)に置き換えてください。

その他、API の詳しい使い方やエラーの詳細等については、API リファレンスをご覧ください。