1. 変更履歴

Table 1. TrustIDSDK 2.0.1変更点
変更箇所 内容

メソッド追加

linkAccount、showAccountのメソッドを追加。

2. はじめに

本ドキュメントは Trust Idiom/ID を導入される企業様に向けた、モバイルアプリ (iOS) 向けの SDK のインストール方法、実装方法などをまとめたマニュアルです。 本ドキュメント及び SDK の構成については今後変更される場合があります。

2.1. 動作環境

SDK は以下の環境での動作を保証しています。

Table 2. 動作環境

OS

iOS 13.x 以上

アーキテクチャ

ARM

FIDO に使用している NC7000-3A-FS は x86 アーキテクチャの動作をサポートしていないため、iOS シミュレータでのデバッグ・実行は行えません。動作確認を行う際は iOS デバイスをご用意ください。

2.2. ライブラリ構成

SDK は以下のモジュールで構成されています。

Table 3. SDK の構成
モジュール名 説明

TrustIDSDK

Trust Idiom/ID SDK のコアモジュール

NCAdapter

NC7000-3A-FS のアダプターモジュール

Trust Idiom/ID SDK の基本機能は TrustIDSDK モジュールに搭載されています。その中で FIDO (生体認証など) に関わる機能は NC7000-3A-FS を包含した nc-adapter モジュールで提供しています。

2.3. NC7000-3A-FS について

NC7000-3A-FS は日本電気株式会社(NEC)製のネイティブアプリ向けの FIDO UAF1.1 に対応した認証機能の SDK です。

Trust Idiom/ID では FIDO 機能に NC7000-3A-FS を使用しているため、FIDO 機能の振る舞いを含めた仕様は本製品に準拠します。

Table 4. NC7000-3A-FS バージョン
バージョン

1.5.7

3. SBIデジトラスト株式会社へ一部プロジェクト情報を提出する

NC7000-3A-FS を利用するためには、SBIデジトラスト株式会社へ以下の一部プロジェクト情報を事前に提出いただく必要があります。具体的な提出方法に関しては、個別に担当者へご相談ください。

3.1. バンドルID(Bundle identifier)

NC7000-3A-FS のライセンス文字列を発行するには、導入先 iOS プロジェクトの バンドルID が必要です。

4. Firebase SDK のインストール

Trust Idiom/ID は Firebase のサービスである Firebase Cloud Messaging (以下 FCM) を利用しています。

Push 通知機能を利用する場合は Firebase SDK のインストールが必要です。Firebase SDK の導入手順は以下のドキュメントを参考にしてください。

Firebase は次のサービスを利用します。

  • Firebase Cloud Messaging (FCM)

5. Trust Idiom/ID SDK のインストール

5.1. インストールする方法

Trust Idiom/ID SDK は Zip ファイルとして提供しています。担当者から受領した上でインストールを進めてください。

5.2. Trust Idiom/ID SDK のインストール

5.2.1. Xcode へのインポート

Zip ファイルを解凍すると次のファイル構成になっていることが確認できます。

Table 5. SDK のファイル構成
ファイルまたはフォルダ名 説明

TrustIDSDK.framework

Trust Idiom/ID SDK フレームワーク

TrustID-Info.plist

Trust Idiom/ID SDK の設定ファイル

NCAdapter.framework

NC7000-3A-FS 拡張フレームワーク

NCPlugin◯◯.framework

NC7000-3A-FS トランザクション認証拡張フレームワーク

FIDO

FIDO ライブラリおよび設定ファイル

これらのファイル・フォルダを Xcode プロジェクトにドラッグ&ドロップで追加します。具体的な内容については下記手順を参照してください。

TrustIDSDK.framework TrustID-Info.plist NCAdapter.framework NCPlugin◯◯.framework は「Copy items if needed」にチェックが付いていること、「Create folder references」を確認します。

ios add files2

FIDO は「Copy items if needed」にチェックが付いていること、「Create Groups」にチェックが付いていることを確認します。

ios add files1

下図のようになれば正常に追加できています。 FIDOディレクトリ配下の nc7000_3a_fs_client.framework, SVGKit.famework が含まれない場合はドラッグアンドドロップで追加します。

General > Frameworks, Libraries, and Embedded Content

xcode framework

Build Phases > Copy Bundle Resources

copy resources

5.2.2. Runpath Search Paths の追加

「Runpath Search Paths」に「@executable_path/FIDO」を追加します。

Build Settings > Linking > Runpath Search Paths

runpath search paths

5.2.3. NC7000-3A-FS 設定ファイルの修正

FIDO ディレクトリには NC7000-3A-FS の実行に必要な設定ファイルなどが含まれています。

Table 6. FIDO ディレクトリ構成
ファイルまたはフォルダ名 説明

CustomTransactionDisplay.h

トランザクション確認画面を表示するクラス

CustomTransactionDisplay.m

トランザクション確認画面を表示するクラス

nc7000_3a_fs_client.framework

NC7000-3A-FS フレームワーク本体

nc7000_3a_fs.bundle

NC7000-3A-FS 設定ファイル

SVGKit.framework

SVG 描画ライブラリ

ios004

NC7000-3A-FS の実行には導入するアプリごとに提供されるライセンス文字列が必要です。ライセンス文字列を受領後、NC7000-3A-FS の設定ファイルである nc7000_3a_fs.bundle 内の fs_authtag.txt を書き換えます。

fs_authtag.txt の内容は次のようになっています(ライセンス文字列は一例)。

fs_authtag.txt
89c6ff64f3a9aabcffffffff20260401

トランザクション確認画面をカスタマイズする場合、NC7000-3A-FS の設定ファイルである nc7000_3a_fs.bundle 内の fs_config.txt を書き換えます。 [_トランザクション確認画面] については後述している内容を確認してください。

fs_config 設定値抜粋
"fingerprint":{
      "transaction_display": "ファイル名"
},
"faceID":{
      "transaction_display": "ファイル名"
},

fs_config.txt の詳細な設定値については、NC7000-3A-FSのドキュメントのSG値を確認してください。

5.2.4. FaceID の設定

FaceID機能を利用するため、 iOS11以降ではFaceID使用目的を記載しないとアプリケーションが動作しません。

Info.plistに「Privacy – Face ID Usage Description」を追加し、使用目的を記載してください。 詳細ついてはNC7000-3A-FSのドキュメントの UAF APIリファレンス のFaceIDに関する記載箇所を参照してください。

5.2.5. Bitcodeの設定

Trust Idiom/ID SDKの利用において、Bitcodeをオフにする必要があります。

BuildSetting > Build Options > Enable Bitcode で値をNoにします。

5.3. プロジェクトの設定

5.3.1. Trust Idiom/ID SDK の設定

SDK の設定ファイルとして TrustID-Info.plistInfo.plist と同一フォルダ配下に配置します。

Table 7. TrustID-Info.plist 設定値
key 説明

CLIENT_ID

SDK クライアントID ※1

TENANT_ID

テナントID ※1

WEB_ENDPOINT

WebView画面のエンドポイント ※1

WEB_VERSION

WebViewのバージョン ※3

ENV

動作環境 (開発用: DEBUG、 本番用: RELEASE)

AUTHENTICATION_ENDPOINT

認証リクエストエンドポイント

TOKEN_ENDPOINT

トークンエンドポイント

REFRESH_TOKEN_EXPIRES_IN

リフレッシュトークンの有効期限 ※2

※1 は Trust Idiom/ID で発行した値を設定する必要があります。担当者までご連絡ください。 ※2 は Trust Idiom/ID 導入時に取り決めた値になります。 ※3 は デフォルト値は1.0。機能改修で、バージョンを上げる場合は設定を行う。

5.4. Push Notifications の設定

本サービスはプッシュ通知を FCM を介して利用するため、Capabilities に Push Notifications を追加する必要があります。未追加の場合は Xcode Project 設定の Capability から Push Notifications を追加します。

ios push

また、アプリでプッシュ通知を利用するには Apple Developer 上で App の Push Notification を有効化し、Firebase に認証キーを登録する必要があります。詳しくは FCM のドキュメントを参照してください。

5.5. クイックスタート

Trust Idiomの画面が起動することを確認します。

import UIKit
import TrustIDSDK

class LoginViewController: UIViewController {

    let service = TrustIDV2Service.shared

    override func viewDidLoad() {
        super.viewDidLoad()
        service.configure()
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        service.login(from: self, path: "/1.0/tid/",clientId: "", scope: ["openid"])
    }
}

6. Trust Idiom/ID SDK の提供する実装方法

Trust Idiom/ID では、SDKの導入を実現するために以下の実装方法を提供しています。

6.1. TrustIDV2Serviceの初期設定

アプリ起動後に AppDelegate などで TrustIDV2Service.shared.configure() を実行ください。 このメソッドを実行すると FIDO の設定がされます。

Trust Idiom/ID の機能を利用するために必要な実装については次項より解説します。 各メソッドの詳細はAPIドキュメントをご確認ください。

6.2. login

ネイティブアプリでログインをするためのメソッドです。トークンとユーザー情報を取得します。 本人確認が未実施の場合、Trust Idiomの画面が表示されます。 scopeに応じてユーザー情報が返却されます。

let service = TrustIDV2Service.shared
service.delegate = self // 実装したdelegateを設定する
service.login(from: self, clientId: "", scope: ["openid", "profile", "phone", "email", "address"])

以下のデリゲートメソッドで処理のハンドリングを実施できます。

extension ViewController: TrustIDV2ServiceDelegate {

  func didLoginSuccess(loginResponse: LoginResponseObj) {
    // 成功時のハンドリング
  }

  func didLoginFailure(error: LoginErrorObj) {
    // 失敗時のハンドリング
  }
}

6.3. getToken

トークンを取得するメソッドです。 ログイン後に、振込など更新系のトークンを取得する際に利用します。 scopeは適宜指定してください。

let service = TrustIDV2Service.shared
service.delegate = self // 実装したdelegateを設定する
service.getToken(from: self, clientId: "", scope: ["openid", "profile", "phone", "email", "address"])

以下のデリゲートメソッドで処理のハンドリングを実施できます。

extension ViewController: TrustIDV2ServiceDelegate {

  func didGetTokenSuccess(tokenResponse: TokenV2ResponseObj) {
    // 成功時のハンドリング
  }

  func didGetTokenFailure(error: GetTokenErrorObj) {
    // 失敗時のハンドリング
  }
}

6.4. execute

Trust Idiomでカスタマイズ機能を呼び出すメソッドです。Trust Idiomのカスタマイズ画面が起動します。

let service = TrustIDV2Service.shared
service.delegate = self // 実装したdelegateを設定する
service.execute(from: self, path: "カスタマイズ時に規定したパス")

以下のデリゲートメソッドで処理のハンドリングを実施できます。

extension ViewController: TrustIDV2ServiceDelegate {

  didExecuteSuccess(path: String, query: [String: String]?, notificationToken: String, miscData: [String: String], status: AccountStatusObj, data: String?) {
    // 成功時のハンドリング
  }

  func didExecuteFailure(path: String, query: [String: String]?, notificationToken: String, miscData: [String: String], error: ExecuteErrorObj) {
    // 失敗時のハンドリング
  }
}

6.5. linkAccount

Trust Idiomアカウントが連携されているかを確認します。本人確認が未実施の場合、Trust Idiomの画面が表示されます。

※更新系など一部の機能のみでTrust Idiomを利用する場合に利用します。

let service = TrustIDV2Service.shared
service.delegate = self // 実装したdelegateを設定する
service.linkAccount(from: self, notificationToken: "fcm tokenを設定する")

以下のデリゲートメソッドで処理のハンドリングを実施できます。

extension ViewController: TrustIDV2ServiceDelegate {

  didLinkAccountSuccess(notificationToken: String, miscData: [String: String], status: AccountStatusObj, data: String?) {
    // 成功時のハンドリング
  }

  func didLinkAccountFailure(notificationToken: String, miscData: [String: String], error: LinkAccountErrorObj) {
    // 失敗時のハンドリング
  }
}

6.6. showAccount

Trust Idiomアカウントの照会機能。Trust Idiomのアカウント照会の画面が表示されます。

let service = TrustIDV2Service.shared
service.delegate = self // 実装したdelegateを設定する
service.showAccount(from: self, notificationToken: "fcm tokenを設定する")

以下のデリゲートメソッドで処理のハンドリングを実施できます。

extension ViewController: TrustIDV2ServiceDelegate {

  didShowAccountSuccess(notificationToken: String, miscData: [String: String], status: AccountStatusObj, data: String?) {
    // 成功時のハンドリング
  }

  func didShowAccountFailure(notificationToken: String, miscData: [String: String], error: ShowAccountErrorObj) {
    // 失敗時のハンドリング
  }
}

6.7. getAuthenticationViewController

FIDO認証用のViewControllerを取得します。

let service = TrustIDV2Service.shared
let authenticationViewController = service.getAuthenticationViewController(delegate: self)
self.present()

以下のデリゲートメソッドで処理のハンドリングを実施できます。

extension ViewController: AuthenticationViewControllerDelegate {

  func authenticationViewControllerDidSuccess(viewController: AuthenticationViewController) {
    // 成功時のハンドリング
  }

  func authenticationViewControllerDidFailure(viewController: AuthenticationViewController) {
    // 失敗時のハンドリング
  }

  func authenticationViewControllerDidClose(viewController: AuthenticationViewController) {
    // Viewを閉じた場合のハンドリング
  }
}

6.8. hasAuthenticationメソッド

認証要求の有無を確認することができるメソッドです。結果はdelegateで通知されます。

let service = TrustIDV2Service.shared
service.delegate = self // 実装したdelegateを設定する
service.hasAuthentication()

以下のデリゲートメソッドで処理のハンドリングを実施できます。

extension ViewController: TrustIDV2ServiceDelegate {

  func didHasAuthenticationSuccess(result: Bool) {
    // 成功時のハンドリング
    if (result) {
      // 認証要求がある場合の処理
      // getAuthenticationViewControllerで取得したViewControllerを表示する
    }
  }

  func didHasAuthenticationFailure(error: HasAuthenticationErrorObj) {
    // 失敗時のハンドリング
  }
}

6.9. logout メソッド

キャッシュされているトークンを全て破棄すメソッドです。

let service = TrustIDV2Service.shared
service.logout()

7. Push Notifications の実装

Remote Notification (プッシュ通知) は CIBA フローによってログインを実行する際に必要となります。Remote Notification はアプリ未起動状態で開封した場合とアプリ起動中に開封した場合、2通りの状況のいずれにも対応できるようにしておく必要があります。

※プッシュ通知が認証端末に到達しない場合でも、後述するメソッド TrustIDV2Service#getAuthenticationViewController でViewControllerを取得し画面を起動することで認証を開始することができます。

まず FCM の Registration Token を SDK に登録します。FCM の Registration Token の取得方法は Firebase のドキュメントを参考にしてください。

Registration Token を取得したら、 TrustIDV2Service#login 及び execute メソッドの引数に設定してください。

プッシュ通知の受信方法はFirebase のドキュメントを参考にしてください。 iOS アプリでメッセージを受信する

Table 8. Trust Idiom/ID からのデータメッセージ
key value

sender

trustid.jp

title

通知タイトル

body

通知メッセージボディ

データメッセージの sender の value が trustid.jp なら Trust Idiom/ID からの通知となります。

sender の値を参照して通知の表示のハンドリングを行ってください。

shouldHandle() を使うことでハンドリングすべきか否かを判別できます。

Trust Idiom/ID からの通知の場合、getAuthenticationViewControllerメソッドで取得してViewControllerを起動してください。 処理結果のハンドリングはデリゲートを実装してください。

8. トランザクション認証の利用

トランザクション認証は送金など本人確認が必要とされる操作について、確認画面と生体認証を同時に実行できる機能です。

Trust Idiom/ID を使うと、次のようなフローを構成することができます。

  1. ユーザーはアプリから送金先の口座情報を入力し、送金リクエストを行う(ボタンタップなど)。

  2. 送金確認を含む認証(トランザクション認証)のリクエストがサービスに対して実行される。

  3. ユーザーはFIDO認証を実行する。

  4. ユーザーに送金先の情報を含む送金確認アラートが表示される。

  5. 承認するとトランザクション認証が完了する。

※利用する場合は、トランザクション認証画面に連携するパラメータ及び画面デザインを決める必要があります。

トランザクション機能は FIDO Transaction Confirmation の仕様に準拠しています。仕様についてより詳しく知りたい場合は、次のドキュメントも参照してください。

8.1. getToken

トランザクション認証を利用する場合はauthorizationDetailsの引数を指定します。

AuthorizationDetailsBuilderを利用してトランザクション認証のリクエストを組み立ててください。

authorizationDetailsのTrust Idiom® 導入における FAPI-CIBA 対応マニュアル(トークン取得編)のRich Authorization Requestsを参照ください。

また、authorizationDetailsのcontentsで指定した値以外に画面に表示する値がある場合はtransactionViewDataを設定してください。

let builder = AuthorizationDetailsBuilder()
            .addApiPath(path: "/v1/api")
            .addOneshotToken(oneshot: true)
            .addContents(contents: ["bankCode": "bankCode",
                                    "senderName": "senderName",
                                    "receiverName": "receiverName",
                                    "fee": "fee",
                                    "transferAmount": "transferAmount",
                                    "bankName": "bankName",
                                    "receiverDate": "receiverDate",
                                    "accountNumber":"accountNumber",
                                    "depositSubject": "普通預金"
                                   ])
            .addIntrospectionCheck(check: true)
            .addIntrospectionCheck(check: true)
        let transactionViewData = ["custom": "data"]
        service.getToken(from: self, clientId: clientId, scope: ["openid", "profile", "email", "phone"], customHeaders: ["x-client-id": clientId, "x-tenant-id": tenantId],
                         authorizationDetails: builder.build(), transactionViewData: transactionViewData)

8.2. FIDOトランザクション確認画面

トランザクション認証で使用する確認画面はSDK内部に実装された画面が使用されます。 NC7000-3A-FS の提供 API を使用することにより、アプリのデザインにマッチした確認画面にすることが可能になります。 独自に実装したい場合はNC7000-3A-FSのドキュメントのTransactionDisplay APIリファレンスを参照してください。

FIDOトランザクション認証用文字列の詳細については Trust Idiom® 導入における FAPI-CIBA 対応マニュアル(トークン取得編)のFIDOトランザクション認証用文字列を参照ください。

9. SDKの拡張機能について

9.1. ekyc

ekycプロバイダーでliquidを利用する場合は下記マニュアルを参照してください。

ekycプロバイダーでpolarifyを利用する場合は下記マニュアルを参照してください。

9.2. volt-mx-foundry

アプリのバックエンドサーバーがvolt-mx-foundryの場合は、下記マニュアルを参照してください。

10. エラーコード

10.1. エラーメッセージ

Table 9. エラーメッセージ一覧
メソッド エラータイプ エラータイトル エラーメッセージ

login

loginNotAvailable

要本人確認

ログインするためには、本人確認が完了する必要があります。(エラーコード)

reLoginRequired

再ログイン

本人確認が完了しました。ログインを実施してください。(エラーコード)

authenticationNotFound

認証エラー

認証を実施することができませんでした。再度、認証を実施してください。(エラーコード)

authenticationTimeout

認証エラー

認証時にタイムアウトが発生しました。再度、認証を実施してください。(エラーコード)

authenticationFailed

認証エラー

認証に失敗しました。再度、認証を実施してください。(エラーコード)

authenticationCancel

認証エラー

認証がキャンセルされました。再度、認証を実施してください。(エラーコード)

authenticationLocked

認証エラー

認証機能がロックされました。しばらく時間をおいてから、再度、認証を実施してください。(エラーコード)

deviceSettingRequired

端末設定エラー

認証を実施することができませんでした。端末の生体認証の設定をご確認ください。(エラーコード)

permissionRequired

アプリ権限エラー

認証を実施することができませんでした。アプリの権限をご確認ください。(エラーコード)

deviceNotSupported

端末エラー

認証を実施することができませんでした。端末の生体認証が利用可能かご確認ください。(エラーコード)

invalidSetting

設定エラー

アプリの設定エラーが発生しました。問い合わせ窓口にまでご連絡ください。(エラーコード)

networkCommunicationFailed

通信エラー

通信エラーが発生しました。再度、実施してください。(エラーコード)

maintenanceError

メンテナンス中

Trust Idiomサービスはメンテナンス中になります。メンテナンスが完了するまで暫くお待ち下さい。(エラーコード)

gatewayTimeoutError

通信エラー

通信時にタイムアウトが発生しました。再度、実施してください。(エラーコード)

unexpected

予期せぬエラー

予期せぬエラーが発生しました。何度も発生する場合は、問い合わせ窓口にまでご連絡ください。(エラーコード)

execute

authenticationFailed

認証エラー

認証に失敗しました。再度、認証を実施してください。(エラーコード)

authenticationNotFound

認証エラー

認証を実施することができませんでした。再度、認証を実施してください。(エラーコード)

authenticationTimeout

認証エラー

認証時にタイムアウトが発生しました。再度、認証を実施してください。(エラーコード)

authenticationCancel

認証エラー

認証がキャンセルされました。再度、認証を実施してください。(エラーコード)

authenticationLocked

認証エラー

認証機能がロックされました。しばらく時間をおいてから、再度、認証を実施してください。(エラーコード)

deviceSettingRequired

端末設定エラー

認証を実施することができませんでした。端末の生体認証の設定をご確認ください。(エラーコード)

permissionRequired

アプリ権限エラー

認証を実施することができませんでした。アプリの権限をご確認ください。(エラーコード)

deviceNotSupported

端末エラー

認証を実施することができませんでした。端末の生体認証が利用可能かご確認ください。(エラーコード)

invalidSetting

設定エラー

アプリの設定エラーが発生しました。問い合わせ窓口にまでご連絡ください。(エラーコード)

networkCommunicationFailed

通信エラー

通信エラーが発生しました。再度、認証を実施してください。(エラーコード)

maintenanceError

メンテナンス中

Trust Idiomサービスはメンテナンス中になります。メンテナンスが完了するまで暫くお待ち下さい。(エラーコード)

gatewayTimeoutError

通信エラー

通信時にタイムアウトが発生しました。再度、実施してください。(エラーコード)

unexpected

予期せぬエラー

予期せぬエラーが発生しました。何度も発生する場合は、問い合わせ窓口にまでご連絡ください。(エラーコード)

getToken

logoutRequired

認証エラー

認証が実施できない状態です。ログアウト実施後に、再度お試しください。(エラーコード)

authenticationFailed

認証エラー

認証に失敗しました。再度、認証を実施してください。(エラーコード)

authenticationNotFound

認証エラー

認証を実施することができませんでした。再度、認証を実施してください。(エラーコード)

authenticationTimeout

認証エラー

認証時にタイムアウトが発生しました。再度、認証を実施してください。(エラーコード)

authenticationCancel

認証エラー

認証がキャンセルされました。再度、認証を実施してください。(エラーコード)

authenticationLocked

認証エラー

認証機能がロックされました。しばらく時間をおいてから、再度、認証を実施してください。(エラーコード)

deviceSettingRequired

端末設定エラー

認証を実施することができませんでした。端末の生体認証の設定をご確認ください。(エラーコード)

permissionRequired

アプリ権限エラー

認証を実施することができませんでした。アプリの権限をご確認ください。(エラーコード)

deviceNotSupported

端末エラー

認証を実施することができませんでした。端末の生体認証が利用可能かご確認ください。(エラーコード)

invalidSetting

設定エラー

アプリの設定エラーが発生しました。問い合わせ窓口にまでご連絡ください。(エラーコード)

networkCommunicationFailed

通信エラー

通信エラーが発生しました。再度、認証を実施してください。(エラーコード)

maintenanceError

メンテナンス中

Trust Idiomサービスはメンテナンス中になります。メンテナンスが完了するまで暫くお待ち下さい。(エラーコード)

gatewayTimeoutError

通信エラー

通信時にタイムアウトが発生しました。再度、実施してください。(エラーコード)

unexpected

予期せぬエラー

予期せぬエラーが発生しました。何度も発生する場合は、問い合わせ窓口にまでご連絡ください。(エラーコード)

hasAuthentication

networkCommunicationFailed

通信エラー

通信エラーが発生しました。再度、認証を実施してください。(エラーコード)

maintenanceError

メンテナンス中

Trust Idiomサービスはメンテナンス中になります。メンテナンスが完了するまで暫くお待ち下さい。(エラーコード)

gatewayTimeoutError

通信エラー

通信時にタイムアウトが発生しました。再度、実施してください。(エラーコード)

unexpected

予期せぬエラー

予期せぬエラーが発生しました。何度も発生する場合は、問い合わせ窓口にまでご連絡ください。(エラーコード)

10.2. エラーコードのカテゴリ

SDK 利用時に発生したエラーにはすべて、エラーコードとエラーメッセージが付与されます。エラーコードは次のカテゴリに分けられます。

Table 10. エラーカテゴリ一覧
エラーカテゴリ エラーコード 説明

オペレーションエラー

1000番台

Trust Idiom SDK機能が想定しないタイミングで呼び出された場合。

通信エラー

2000番台

ネットワークが繋がっていない、API リクエストが正常に行えないなど通信が正常に行えていない場合。

ライブラリエラー

3000番台

NC7000-3A-FS の処理内でエラーが発生した場合。

アカウントステータスエラー

4000番台

Trust Idiomのアカウントのエラー。

予期せぬエラー

9000番台

上記に含まれない、想定していないエラーが発生した場合。

またライブラリエラー3016番以降のエラーが発生した場合、Trust Idiom担当者までご連絡ください。

10.3. エラーコード一覧

Table 11. エラーコード一覧
エラーコード 内容 再実行可

1001

クライアントデバイスIDが取得できない

1002

Safari Viewを開くことができない

1003

認証鍵が作成できない

1004

バインディングメッセージが認証リクエストと異なる

1005

認証リクエストで許可されていない認証方式を実行した

1006

アカウントが登録されていない

1007

認証器が登録されていない

1008

パスワードが一致しない

1009

アカウントの機能制限エラー

1010

認証リクエストが見つからない

1011

リソースオーナーが認証を拒否した

1012

トークン取得の有効期限が切れた

1013

アクセストークンが取得できていない

1014

認証期限が切れた

1015

FIDOの署名検証が正しくない

1016

不正な認証が行われた

1017

認証に失敗した

1018

リカバリーフローにおけるトークンポーリングがキャンセルされた。再実行してください。

1019

ekycのクライアントの設定がされていない場合のエラー。アプリケーションの実装を確認ください。

1020

サーバーサイド生体認証のクライアントの設定がされていない場合のエラー。アプリケーションの実装を確認ください。

1021

FIDO-UAFのクライアントの設定がされていない場合のエラー。アプリケーションの実装を確認ください。

2001

ネットワークが繋がっていない

2002

APIのリクエストが正しくない

2003

APIのリクエスト先に起因するエラー

2004

APIのリクエストのJSONエンコードができない

2005

APIのレスポンスのJSONデコードができない

2006

サーバーメンテナンスに起因するエラー

2007

APIGatewayのタイムアウトに起因するエラー

3001

FIDO認証実行がタイムアウトした。一定時間以内に顔認証を行ってください

3002

FIDO認証実行がキャンセルされた。正常にキャンセルされたので対処はありません。

3003

FIDO登録/認証実行にアウトオブメモリーが発生。メモリ不足ですので、他のアプリを閉じてから再実行してください。

3004

FIDO認証実行時に生体情報が未登録。FIDO登録を行ってからFIDO認証を再実行してください。

3005

FIDO登録/認証実行にアクセス権限エラーが発生。アクセス権限を確認して、再実行してください。UAFメッセージに設定されているAPPIDはFIDO登録時、認証時で同じ内容になっていること

3006

FIDO登録/認証実行に必要な指紋認証機能がない。指紋認証機能が存在するデバイスを使用して、再実行してください。

3007

FIDO認証実行時に指紋認証情報が未登録。指紋を登録して、再実行してください。

3008

FIDO認証実行時に指紋認証のロックアウトが発生。端末を一度ロックした後、パスコードで端末のロックを解除し、再実行してください。

3009

FIDO登録/認証実行にAPIのリクエストでエラーが発生。再実行してください。

3010

FIDO登録/認証実行にAPIのリクエストでエラーが発生。再実行してください。

3011

FIDO認証実行時にFaceIDの登録がない。Face IDを登録して、再実行してください。

3012

FIDO認証実行時にFaceIDの機能がない。Face ID認証機能が存在するデバイスを使用して、再実行してください。

3013

FIDO認証実行時に顔認証情報のロックアウトが発生。端末を一度ロックした後、パスコードで端末のロックを解除し、再実行してください。

3014

以前のFIDO認証が未完了の状態でFIDO認証を実行した場合に発生。SDKの他の機能が動作している状態なので動作中の機能が完了してから再実行してください。

3015

FIDO認証実行時に認証機能が見つからない、FaceIDが許可されていない場合などに発生。ポリシー設定、端末機能を確認して、再実行してください。

3016

FIDO実行時に予期せぬエラーが発生。再実行してください。

3017

無効なパラメーター。FIDOの設定ファイルを見直してください。

3018

データ不足。TLV解析処理中にデータ不足が発生した場合、このエラーが返却されます。 FIDOの設定ファイルを見直してください。

3019

appCheckName Failed、BundleID もしくは AuthTag が間違っている場合に発生。FIDOの設定ファイルを見直してください。

3020

appCheckName Failed、BundleID もしくは AuthTag が間違っている場合に発生。FIDOの設定ファイルを見直してください。

3021

アプリケーション名チェックにて、許可されていない機能を利用した場合、このエラーが返却されます。ライセンス文字列が正しく設定されていることを確認して、再実行してください。

3022

予期せぬエラーが発生した場合、このエラーが返却されます。再実行してください。

3023

UAFメッセージの内容に誤りがある場合、このエラーが返却されます。UAFメッセージの内容を確認して、再実行してください。

3024

appCheckName Failed、BundleID もしくは AuthTag が間違っている場合に発生。FIDOの設定ファイルを見直してください。設定が問題ない場合はFIDOサーバーと不一致になっている可能性があります。

3025

ASMでエラーが発生した場合、このエラーが返却されます。再実行してください。

3026

ポリシーに合致するAuthenticatorが存在しない場合、このエラーが返却されます。ポリシー設定、端末機能を確認して、再実行してください。

3027

FIDO認証時にFIDO登録を行っていない場合、このエラーが返却される。FIDO登録を行ってからFIDO認証を再実行してください。

3028

Trusted Facet ListとUAFメッセージに設定されているUAF protocol version (upv)がマッチしない場合、このエラーが返却される。Trusted Facet ListとUAFメッセージに設定されているUAF protocol version (upv)を確認して、再実行してください。

3029

/UAFメッセージに設定されているUAF protocol version (upv)をクライアントがサポートしていない場合、このエラーが返却される。クライアントがサポートしているUAF protocol version (upv) を設定したUAFメッセージか確認して、再実行してください。

3030

ASM DB保存内容の暗号化に失敗した場合、このエラーが返却されます。再実行してください。

3031

ASM DB保存内容の保存に失敗した場合、このエラーが返却されます。再実行してください。

3032

ASM DBに条件が一致するKeyHandleが見つからなかった場合、このエラーが返却されます。FIDO登録して、再実行してください。

3033

Authenticatorからのコマンドレスポンス形式に誤りがある場合、このエラーが返却されます。プログラム内部エラーなので対処無し。

3034

認証時にトランザクションが指定されているが、認証対象のAuthenticatorで取り扱えるトランザクションが存在しない場合、このエラーが返却されます。パラメーターの確認をして、再実行してください。

3035

keyHandleの暗号化に失敗した場合、このエラーが返却される。再実行してください。

3036

keyHandleの復号に失敗した場合、このエラーが返却される。再実行してください。

3037

ユーザー認証用鍵ペア作成に失敗した場合、このエラーが返却されます。再実行してください。

3038

登録コマンドでサポートしていないアテステーションタイプが指定された場合、このエラーが返却されます。アテステーションタイプを確認して、再実行してください。

3039

internal storage保存内容の暗号化に失敗した場合、このエラーが返却されます。再実行してください。

3040

internal storage保存に失敗した場合、このエラーが返却されます。再実行してください。

3041

サポートしていないトランザクションコンテントタイプの場合、このエラーが返却されます。トランザクションコンテンツタイプを確認して、再実行してください。

3042

FIDO認証時にパスコードでの認証を実行した場合に発生。FIDO認証時ではパスコードでの認証が許可されていない

3043

TAG_UAFV1_KRDの署名に失敗した場合、このエラーが返却されます。再実行してください。

3044

TAG_UAFV1_SIGNED_DATAの署名に失敗した場合、このエラーが返却されます。再実行してください。

3045

サポートされていないコマンドが実行された場合、このエラーが返却されます。サポートされていないコマンドの為、実行できません。

3046

鍵情報の暗号化に失敗した場合、このエラーが返却されます。再実行してください。

3047

指紋Authenticatorの初期化に失敗した場合、このエラーが返却される。アプリを再起動して、再実行してください。

3048

UAFメッセージに設定されている拡張情報IDがAuthenticatorでサポートしていない場合、このエラーが返却される。UAFメッセージに設定されている拡張情報IDとAuthenticatorがサポートしている拡張情報IDを確認して、再実行してください。

3049

UVCの時間検証失敗時に、このエラーが返却される。FIDO登録して、再実行してください。

3050

アプリケーションサーバーが不正なレスポンスを返却した場合、このエラーが返却されます。アプリケーションサーバーからのレスポンスを確認して、再実行してください。

3051

特徴量情報の保存に失敗した場合、このエラーが返却されます。再実行してください。

3052

顔画像認証機能が利用できない場合、このエラーが返却されます。(実行環境チェックNG)前面カメラが存在するデバイスを使用して、再実行してください。

3053

顔画像認証機能が利用できない場合、このエラーが返却されます。(パーミッションチェックNG)アプリを再起動して、再実行してください。

3054

顔画像認証機能が利用できない場合、このエラーが返却されます。(顔画像未登録)顔画像を登録して、再実行してください。

3055

顔画像処理の初期化に失敗した場合、このエラーが返却されます。アプリを再起動して、再実行してください。

3056

認証時の検証に失敗した場合、このエラーが返却されます。再実行してください。

3057

特徴量情報storage保存内容の暗号化に失敗した場合、このエラーが返却される。再実行してください。

3058

特徴量情報storage読み込み内容の復号に失敗した場合、このエラーが返却される。再実行してください。

3059

特徴量情報の保存個数が既に保存上限数である場合、このエラーが返却される。特徴量情報を削除して、再実行してください。

3060

顔画像認証機能がロックアウト状態の場合、このエラーが返却される。ロックアウト状態を解除し、再実行してください。

3061

バイナリデータファイル保存初期化に失敗した場合、このエラーが返却される。再実行してください。

3062

バイナリデータファイル保存に失敗した場合、このエラーが返却される。再実行してください。

3063

認証時の検証に失敗した場合、このエラーが返却される。再実行してください。

3064

KVStorage保存失敗時に、このエラーが返却される。再実行してください。

3065

Face IDAuthenticatorの初期化に失敗した場合、このエラーが返却される。アプリを再起動して、再実行してください。

3066

FaceAPIでの更新対象レコードが見つからない場合、このエラーが返却されます。登録情報を確認して、再実行してください。

3067

声紋認証機能が利用できない場合、このエラーが返却される。(実行環境チェックNG)マイクが存在するデバイスを使用して、再実行してください。

3068

声紋認証機能が利用できない場合、このエラーが返却される。(声紋未登録)声紋を登録して、再実行してください

3069

SpeakerRecognitionライブラリの初期化に失敗した場合、このエラーが返却される。アプリを再起動して、再実行してください。

3070

SpeakerRecognitionライブラリが初期化されていない。アプリを再起動して、再実行してください。

3071

特徴量データ形式不正。再実行してください。

3072

認証時の検証に失敗した場合、このエラーが返却される。再実行してください。

3073

音声録音用キュー作成に失敗した場合、このエラーが返却される。再実行してください。

3074

音声録音用バッファー作成に失敗した場合、このエラーが返却される。再実行してください。

3075

音声セッション初期設定に失敗した場合、このエラーが返却される。再実行してください。

3076

音声セッション初期設定に失敗した場合、このエラーが返却される。再実行してください。

3077

音声録音開始に失敗した場合、このエラーが返却される。再実行してください。

3078

他アプリ原因で録音が割り込まれて中止した場合、このエラーが返却される。再実行してください。

3079

声紋認証で録音した音声が登録済であった場合、このエラーが返却される。登録済みの為、声紋を削除して再実行してください。

3080

声紋認証機能がロックアウト状態の場合、このエラーが返却される。ロックアウト状態を解除し、再実行してください。

3501

ローカル認証に失敗

3502

ローカル認証をキャンセル

3600

サーバーサイド生体認証をキャンセル。再実行してください。

3601

サーバーサイド生体認証がまだ完了していない。再実行してください。

3602

サーバーサイド生体認証がNGになった。再実行してください。

3603

サーバーサイド生体認証がタイムアウトになった。再実行してください。

3604

サーバーサイド生体認証で予期せぬエラーが発生。再実行してください。

9000

予期せぬエラー

9001

サポートされないネイティブ呼び出しが行われた

9002

不正なURLにアクセスが行われた

9003

FIDOサーバーで予期せぬエラー