最新の基本4情報取得の同意
ここでは、Verify SDK を使用して取得した同意データを用いて、同意を行う方法を説明します。
あらかじめAPI の利用開始を完了し、API トークンを取得しておいてください。
シーケンス
アプリとバックエンドの連携
Verify SDK を用いて取得した同意データは、何らかの方法でバックエンドサーバーに共有して同意を行ってください。
以下の実装例では、アプリとバックエンドの間での連携については省略しています。 実際のアプリケーションの実装例については、サンプルアプリをご覧ください。
要確認
Verify API の利用は、必ず SP 事業者で管理するサーバを経由して行ってください。 API トークンをアプリケーションに含めて配布することは、Verify API の不正利用ひいては JPKI への不正なアクセスにつながるため、絶対に行わないでください。
実装例
クライアントライブラリのセットアップ方法は、クライアントライブラリをご参照ください。
- Go
- TypeScript
- Kotlin
- Swift
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エンドポイントを指定します。この値は環境によって異なります。
baseUrl = "https://verify.mock.p8n.app"
// Verify APIのトークンです。ご自身のトークンに置き換えてください。
token = "<YOUR_API_TOKEN>"
// 同意データです。これらの値は、アプリ上で作成したものを何らかの方法で予め受け取っておいてください。
rawApplication = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPOWIqeeUqOiAheWQjOaEj+eUs+iri+aDheWgsT4855Sz6KuL5pu4PjznlLPoq4vml6U+MjAyMy8wNi8xNDwv55Sz6KuL5pelPjznlLPoq4vmmYLplpM+MTA6MTk6NTQ8L+eUs+iri+aZgumWkz4844K144O844OT44K5SUQ+c2FtcGxlPC/jgrXjg7zjg5PjgrlJRD4844K144O844OT44K55LqL5qWt6ICFSUQ+c2FtcGxlPC/jgrXjg7zjg5Pjgrnkuovmpa3ogIVJRD485Yip55So6ICF5ZCM5oSP5oOF5aCxPjzkvY/miYA+MTwv5L2P5omAPjzmsI/lkI0+MTwv5rCP5ZCNPjznlJ/lubTmnIjml6U+MTwv55Sf5bm05pyI5pelPjzmgKfliKU+MTwv5oCn5YilPjwv5Yip55So6ICF5ZCM5oSP5oOF5aCxPjwv55Sz6KuL5pu4PjxTaWduYXR1cmU+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSI+PC9DYW5vbmljYWxpemF0aW9uTWV0aG9kPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ij48L1NpZ25hdHVyZU1ldGhvZD48UmVmZXJlbmNlPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSI+PC9UcmFuc2Zvcm0+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXhtbC1jMTRuLTIwMDEwMzE1Ij48L1RyYW5zZm9ybT48L1RyYW5zZm9ybXM+PERpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZW5jI3NoYTI1NiI+PC9EaWdlc3RNZXRob2Q+PERpZ2VzdFZhbHVlPlpIalo3bjY4bU56dmdlSE84dWZhZjVaTGtCbkFscnJnQU1yQ1lhL3YzSzA9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPlZ3SFlTQWxod3VlNkQyUGsycXhGNjFhaWtnbjVlbnVoNjhtdlVVUTZYVkpxdG1uZ3hFS1VhOWxkbkpBei9CaHQ4cXczNjEyZHllWGdWZmo2djBqckdaSE91dEZHd0oxN3diRHBOajgvV2tsanpvRFdxeWYxbjdnLzN0Z0piTG8yWkhtdDNHTFhvRnhNa2RXMmI1SnFVZllJc0FjL3pVL0ZybW8zbFFOKzFxUEE5dVo2SDRtV3JUL3B6bU1vY2RUU1dSUFVHcGdHSkYvVUlzallRNUVZZDJTaTdRTFFLZC9XQmVvdFRuOHQwNzhpVHg1VFFwUVRIVjgwTUNURlFGa1I3WlNaaUZCZkFlQkduOU5zdzkwQVJOdVZJZFhxQ0cyT3paYThLSHVRd2NyL2czWkJiUXV6NEEySmc4eDc1UE4zSDhKZFU3L1Z5Ty9CS2diQ0xUay90dz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlHa3pDQ0JYdWdBd0lCQWdJVUlKSUgxd0FBQUFBQUFDQUFBQUFBQUFBQUFBQXdEUVlKS29aSWh2Y05BUUVMQlFBd1hqRUxNQWtHQTFVRUJoTUNTbEF4RVRBUEJnTlZCQW9NQ0ZBNFRpMU5UME5MTVNJd0lBWURWUVFMREJsUU9FNGdabTl5SUdScFoybDBZV3dnYzJsbmJtRjBkWEpsTVJnd0ZnWURWUVFMREE5UWIyTnJaWFJUYVdkdUlFbHVZeTR3SGhjTk1qSXdOREEzTVRJMU16RTFXaGNOTWpjd05EQTJNVEkxTXpFMVdqQmNNUXN3Q1FZRFZRUUdFd0pLVURFVk1CTUdBMVVFQnd3TVVISmxabVZqZEhWeVpTMHdNUTh3RFFZRFZRUUhEQVpEYVhSNUxUQXhKVEFqQmdOVkJBTU1IREl3TWpJd05EQTNNVEkxTXpFMU1EQXdNREF3TURBd01EQXdNREF3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ0JxdzE5TllVelZ4RnI5ajU5djhaYytjaEMvQjZGSERCNlcxQXNRclpWT1RFSmlHeDh3QUk5czE3STJsUkJQclMyTERYcnVVRFNZQmpyNE00eER6ZnpPZkFDNkxmdnkyUytJSkJRd0o1bS9kTmpyV1RLcVlKSEt3d2pZd0gyUm54bCt0Rm4wdzlZMGxjeFUvUlhwanM5VWs4Y1VIeHhFRmVCMVJHdEFOM3pyb3lML0JMcWJpZ3h3L2pXTmQ5RzVvelVwUkhVUzR5NllKdSsxWnljTmVzejh6cU9JN252emdJc0pscDU5RmwzSjhqbFlQbmhUeWZoNCs4dDlzWWtLVFRwL250bkI4bUJ6UFp4V1FtNTZLVnJEL3p2MW1VeXVjQmdtREQ5bTJQZjRPQkxidFR3NzhRSDVCdXNpejhWRm9jR2gweGF4VzFrdUtXOWN4cmR6RnVMQWdNQkFBR2pnZ05KTUlJRFJUQU9CZ05WSFE4QkFmOEVCQU1DQnNBd2dkMEdBMVVkRVFTQjFUQ0IwcUFmQmdvcWd3aU1tMVVJQlFVQm9CRU1EK1d1cnVXMGp1T0FnT1dFcXVpaG82QVpCZ29xZ3dpTW0xVUlCUVVFb0FzTUNUTXhPVGcxTURVeU5xQVJCZ29xZ3dpTW0xVUlCUVVEb0FNTUFUS2dSZ1lLS29NSWpKdFZDQVVGQmFBNEREYm9qS2psbjQ3bm5Jem9vWXptbHJubHVJTHBuWkxtc3J6dnZKSHZ2Skx2dkpidnZKRG5sYXJ2dkpudnZKbnZ2Sm52dkpubGo3ZWdGUVlLS29NSWpKdFZDQVVGQXFBSERBVXdNREF3TUtBaUJnb3Fnd2lNbTFVSUJRVUdvQlFNRWpBd01EQXdNREF3TURBd01EQXdNREF3TURBNkJnTlZIU0FCQWY4RU1EQXVNQ3dHQ2lzR0FRUUJnOXNIQVFFd0hqQWNCZ2dyQmdFRkJRY0NBUllRYUhSMGNEb3ZMM0E0Ymk1c2IyTmhiRENCdlFZRFZSMFNCSUcxTUlHeXBJR3ZNSUdzTVFzd0NRWURWUVFHRXdKS1VERXpNREVHQTFVRUNnd3E0NE9kNDRLeDQ0T0Q0NE9JNDRLMTQ0S2s0NE96NDRPaTQ0T0Q0NEt2NDRLMTQ0Tzg0NE9UNDRLNU1Ud3dPZ1lEVlFRTEREUGpnNTNqZ3JIamc0UGpnNGpqZ3JYamdxVGpnN1BqZzZMamc0UGpncS9qZ3JYamc3empnNVBqZ3JubnZiTGxrSTNubEtneEtqQW9CZ05WQkFzTUllT0RuZU9Dc2VPRGcrT0RpT09DdGVPQ3BPT0RzK2FncXVXOGorUzhtdWVrdmpDQnJnWURWUjBmQklHbU1JR2pNSUdnb0lHZG9JR2FwSUdYTUlHVU1Rc3dDUVlEVlFRR0V3SktVREVSTUE4R0ExVUVDZ3dJVURoT0xVMVBRMHN4SWpBZ0JnTlZCQXNNR1ZBNFRpQm1iM0lnWkdsbmFYUmhiQ0J6YVdkdVlYUjFjbVV4SURBZUJnTlZCQXNNRjBOU1RDQkVhWE4wY21saWRYUnBiMjRnVUc5cGJuUnpNUlV3RXdZRFZRUUxEQXhRY21WbVpXTjBkWEpsTFRBeEZUQVRCZ05WQkFNTURFTnBkSGt0TUNCRFVreEVVRENCaGdZRFZSMGpCSDh3ZllBVUZOTjVpZzc1aHZXTXQrRjlhdjBiTGh5akxnMmhZcVJnTUY0eEN6QUpCZ05WQkFZVEFrcFFNUkV3RHdZRFZRUUtEQWhRT0U0dFRVOURTekVpTUNBR0ExVUVDd3daVURoT0lHWnZjaUJrYVdkcGRHRnNJSE5wWjI1aGRIVnlaVEVZTUJZR0ExVUVDd3dQVUc5amEyVjBVMmxuYmlCSmJtTXVnZ0VCTUIwR0ExVWREZ1FXQkJSNGF3bDJOUFlQdjg5UmRxSHhUbTVVNDJpRUpUQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFlZm9Hem0zenhBcW1Ed2kwMkxKc3pidm1Ib1hOVlRuampnVDlnbE5ycGl3M3F0QUNIUEtLY1MzOUpxRTV0QXZKczd1Tk1jVlIwWkkxZko5d3NKc0F0THBtKzBINjZPUkdpUlNyWmVvZlA3QjlBQzZGaFVXczdFQ2JDRnJsZGp6czJyRlVlR1hBaU9vaTdnMldRSjc1UHpzWFF5cmZEcm9va3lSQVZJK0s0eU5wRXpDWmhzbml3aktKU1poWFl2VDJqZ3ZqR3E2YnhEc0l3QzBjTVlGZmRaYmM3YjNUeTNmdE9zOTVtWVpvOHEvcW0zSGErMS9kQndsSTI2N09TZ2JzS3FsYzBsVlJWN1I4TUpqa3J4OUM0RjBRRkdCMlRhRGNxWGo2VmVJanZIYTdZaXdhMU02YzVKOXpnaVl3K3FzUEo2VkoyQW8yY0lna0FpRTl1WVFSSWc9PTwvWDUwOUNlcnRpZmljYXRlPjwvWDUwOURhdGE+PC9LZXlJbmZvPjwvU2lnbmF0dXJlPjwv5Yip55So6ICF5ZCM5oSP55Sz6KuL5oOF5aCxPg=="
)
func run() error {
// Base64をデコードしてバイト列にします。
application, err := base64.StdEncoding.DecodeString(rawApplication)
if err != nil {
return err
}
// 同意リクエストを作成します。
request := connect.NewRequest(&verifyv2.CreateConsentRequest{
// SDKから得られた同意データを送信します。
Application: application,
})
// リクエストにAPIトークンを設定します。
request.Header().Set("Authorization", "Bearer "+token)
// APIクライアントを作成します。
client := verifyv2connect.NewConsentServiceClient(http.DefaultClient, baseUrl)
// 同意リクエストを送信します。
response, err := client.CreateConsent(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
要確認
同意データには、マイナンバーカードから取得した証明書の生データが含まれます。
SP 事業者は、証明書の生データの保持が禁じられているため、Verify API に送信後は速やかに削除するようにご実装ください。
次のステップ
同意時に作成される証明書 ID を利用し、最新4情報の取得を行いましょう。
その他、API の詳しい使い方やエラーの詳細等については、API リファレンスをご覧ください。