本番環境
公的個人認証サービスが発行した証明書を利用する環境です。 この環境では、実際のマイナンバーカードを利用できます。 環境の違いについては環境をご参照ください。
検証の対象
SDK は、実際のマイナンバーカードに搭載された公的個人認証 AP(JPKI AP)と通信し、署名の作成を行います。 本番環境は、この署名に対して検証を行います。 モック環境で利用していたカードや、テスト用マイナンバーカードは利用できません。
PocketSign Verify API を使用して署名の検証や現況確認を行った場合、 ポケットサイン社が公的個人認証サービスに問い合わせを行い、署名の検証や現況確認を行います。 このため、使用した API の種類に応じた金額が課金されます。
本番環境の利用方法
PocketSign Verify API の本番環境を利用するには、以下のように設定を行う必要があります。
PocketSign Verify API
本番環境のご利用にあたっては、事前に当社より地方公共団体情報システム機構(J-LIS)など関係機関へ申請する必要があります。 本番環境でのテナント作成は、ご利用手続きをいただき、関係機関への申請が完了した事業者にのみに限らせていただいております。 テナント作成を希望される場合は、PocketSign Platform のお手続きページより、申し込みください。
本番環境における PocketSign Verify API のエンドポイントは https://verify.p8n.app です。
例えば、署名検証を行う場合の URL は、
https://verify.p8n.app/pocketsign.verify.v2.VerificationService/Verify
となります。
PocketSign Verify SDK
モック環境と本番環境では使用する PocketSign Verify SDK が異なります。 これらの SDK は、同一のインターフェースを用いているため、モック環境向けに作成したコードを本番環境でも利用することができます。
基本的な組み込み方法は同じですので、Getting Startedをベースに、下記注意点を併せてご参照ください。
パッケージ名の違い
本番環境向け SDK は、モック環境向け SDK とパッケージ名が異なりますので、インポートするパッケージを変更する必要があります。
- iOS
- Android
- Web(PaSoRi)
- Flutter
- React Native
パッケージ名がモック環境と異なります。
本番環境向け SDK のパッケージ名は VerifyJPKI
です。
SDK の URL を入力する際には、
https://repo.platform.p8n.app/VerifyJPKI/
と入力してください。
Swift で SDK を利用する際には、以下のようにインポートしてください。
import SwiftUI
import VerifyJPKI
func run(pin: String) async throws -> String {
// JPKI APへの接続準備を行います。
let session = ReaderSession(dispatchQueue: DispatchQueue.main)
// ここに実装を追加します。
session.close()
return "not implemented"
}
パッケージ名がモック環境と異なります。
本番環境向け SDK のパッケージ名は jp.co.pocketsign.verify:****
です。
libs.versions.toml
に依存関係を追加する際に、
pocketsign-verify-shared = { group = "jp.co.pocketsign.verify", name = "shared", version.ref = "pocketsign-verify" }
pocketsign-verify-driver = { group = "jp.co.pocketsign.verify", name = "driver", version.ref = "pocketsign-verify" }
pocketsign-verify-jpki = { group = "jp.co.pocketsign.verify", name = "jpki", version.ref = "pocketsign-verify" }
と入力してください。
また、インポートパスが異なります。
jp.co.pocketsign.verify.mock
を jp.co.pocketsign.verify
に変更することで、本番向けの SDK を利用できます。
例えば、モック環境でインポートするクラスが jp.co.pocketsign.verify.mock.mynacard.jpki.JPKIAP
であれば、
jp.co.pocketsign.verify.mynacard.jpki.JPKIAP
が本番環境でインポートするクラスとなります。
具体的なクラス名はSDK リファレンスをご覧ください。
Kotlin で SDK を利用する際には、以下のようにインポートしてください。
import jp.co.pocketsign.verify.driver.ReaderSession
import jp.co.pocketsign.verify.mynacard.jpki.JPKIAP
class MainActivity : ComponentActivity() {
suspend fun run(pin: String): String {
// JPKI APへの接続準備を行います。
val session = ReaderSession(this, this)
// ここに実装を追加します。
session.close()
return "not implemented"
}
/* ... */
}
下記のようなタイプエイリアスファイルを作成し、product flavor 等に応じて読み込むファイルを切り替えることで、すべてのインポートパスを編集する必要がなくなります。
package jp.co.pocketsign.verify.example
// 本番では `mock` なしのパスからインポートする。
import jp.co.pocketsign.verify.mock.driver.ReaderSession
import jp.co.pocketsign.verify.mock.mynacard.cardinfo.ConfirmationAP
import jp.co.pocketsign.verify.mock.mynacard.cardinfo.InputSupportAP
import jp.co.pocketsign.verify.mock.mynacard.jpki.JPKIAP
typealias JPKIAP = JPKIAP
typealias ReaderSession = ReaderSession
typealias InputSupportAP = InputSupportAP
typealias ConfirmationAP = ConfirmationAP
パッケージ名がモック環境と異なります。
本番環境向け SDK のパッケージ名は @pocketsign/verify-web-pasori-jpki
です。
SDK をインストールする際には、
@pocketsign/verify-web-pasori-jpki
と入力してください。
TypeScript で SDK を利用する際には、以下のようにインポートしてください。
import './style.css';
import { ReaderSession } from '@pocketsign/verify-web-pasori-jpki';
// Verify SDK を使用するためには、NFCPortLib が別途必要となります。
// NFCPortLibはソニー株式会社から提供される SDK for NFC Web Client に含まれています。
const nfcPortLib = new NFCPortLib();
const run = async (pin: string) => {
// JPKI APへの接続準備を行います。
const session = new ReaderSession(nfcPortLib);
// ここに実装を追加します。
await session.close();
return 'not implemented';
};
パッケージ名がモック環境と異なります。
本番環境向け SDK のパッケージ名は flutter-verify-jpki
です。
pubspec.yaml
に依存関係を追加する際には、
パッケージ名を flutter-verify-jpki
として、URL も https://repo.platform.p8n.app/flutter_verify_jpki/
としてください。
Flutter で SDK を利用する際には、以下のようにインポートしてください。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter_verify_jpki/flutter_verify_jpki.dart';
void main() {
runApp(const MyApp());
}
パッケージ名がモック環境と異なります。
本番環境向け SDK のパッケージ名は @pocketsign/verify-react-native-jpki
です。
SDK をインストールする際には、
@pocketsign/verify-react-native-jpki
と入力してください。
次に、 app.json
または app.config.js
ファイルを開き、以下の内容を追加・編集し、Expo の Prebuild を行ってください。
/* ... */
"plugins": [
/* ... */
[
"@pocketsign/verify-expo-plugin",
{
"types": ["verify-jpki"],
"tenantId": "00000000-0000-4000-8000-000000000000"
}
]
],
/* ... */
React Native で SDK を利用する際には、以下のようにインポートしてください。
import React, { useState } from 'react';
import { StyleSheet, Text, View, TextInput, TouchableOpacity, ScrollView } from 'react-native';
import { ReaderSession } from '@pocketsign/verify-react-native-jpki';
export default function App() {
const [pin, setPin] = useState('');
const [result, setResult] = useState('カードをタッチしてください ...');
const run = async (pin: string) => {
// JPKI APへの接続準備を行います。
const session = await ReaderSession.create();
// ここに実装を追加します。
await session.close();
return "not implemented";
};
// ... 残りのコンポーネントコード
}
AID の設定 (iOS のみ)
- iOS
- Android
- Web(PaSoRi)
- Flutter
- React Native
iOS では、マイナンバーカードを読み取るために「ISO7816 application identifiers for NFC Tag Reader Session」を設定する必要があります。 Value には、利用するマイナンバーカード AP(JPKI AP/券面事項確認 AP/券面事項入力補助 AP)に応じて、値を設定します。複数利用する場合には、「+」をクリックしてすべてを追加してください。
AID の設定値については、機密情報のため公開しておりません。 iOS での SDK 利用をご検討の際は、お問い合わせください。
モック環境で設定した「ISO18092 system codes for NFC Tag Reader Session」は、本番環境では使用しないため、削除することができます。
この設定は、Androidでは不要です。
この設定は、Webアプリでは不要です。
Flutter アプリで iOS をターゲットにする場合、マイナンバーカードを読み取るために「ISO7816 application identifiers for NFC Tag Reader Session」を設定する必要があります。
XCode で ios ディレクトリ内にある ios/Runner.xcworkspace
を開き、Info.plist を設定してください。
Value には、利用するマイナンバーカード AP(JPKI AP/券面事項確認 AP/券面事項入力補助 AP)に応じて、値を設定します。複数利用する場合には、「+」をクリックしてすべてを追加してください。
AID の設定値については、機密情報のため公開しておりません。 iOS を対象にした Flutter SDK の利用をご検討の際は、お問い合わせください。
モック環境で設定した「ISO18092 system codes for NFC Tag Reader Session」は、本番環境では使用しないため、削除することができます。
React Native アプリで iOS をターゲットにする場合、マイナンバーカードを読み取るために「ISO7816 application identifiers for NFC Tag Reader Session」を設定する必要があります。
app.json
または app.config.js
ファイルを開き、以下の内容を追加・編集してください。
配列には、利用するマイナンバーカード AP(JPKI AP/券面事項確認 AP/券面事項入力補助 AP)に応じて、値を設定します。複数利用する場合には、すべてのAID を追加してください。
infoPlist: {
NFCReaderUsageDescription: 'マイナンバーカードの読み取りに利用します。',
'com.apple.developer.nfc.readersession.iso7816.select-identifiers': ['JPKI AP の AID', '券面事項入力補助 AP の AID']
},
AID の設定値については、機密情報のため公開しておりません。 iOS を対象にした React Native SDK の利用をご検討の際は、お問い合わせください。
モック環境で設定した「ISO18092 system codes for NFC Tag Reader Session」は、本番環境では使用しないため、削除することができます。
エラーハンドリング
本番環境向け SDK では、一部関数から返されるエラーの種類が増えているため、 必要に応じてハンドリングを追加することをおすすめします。詳しくはSDK リファレンスをご覧ください。