# マイナアプリ 同意取消しAPI

<br>

## **概要**

マイナアプリ 同意取消しAPIは、利用者の基本4情報（氏名・住所・生年月日・性別）の提供を受けるために利用者から取得した同意を、取り消すためのAPIです。
利用者からの同意取消しは、本人の意思に基づくものであることを確実に示すため、同意の申請時と同様、署名用電子証明書を用います。署名用電子証明書を用いた同意取消しは、サービスプロバイダ事業者とプラットフォーム事業者を経由したうえで、J-LISに送信されます。
利用者による同意取消し申請後、J-LISにて申請を受信次第、即時に、J-LISからの基本4情報（氏名・住所・生年月日・性別）提供が停止されます。

## **アクセスコントロール**

<AccordionGroup>
    <Accordion title="マイナンバーカード">
        署名用電子証明書の暗証番号（6〜16桁の半角英数字）
        
:::caution[]
5回連続で署名用電子証明書の暗証番号を間違えた場合には、マイナンバーカードにロックがかかってしまいますのでご注意ください。     
:::
    </Accordion>
    <Accordion title="スマートフォンのマイナンバーカード">
        署名用電子証明書の暗証番号（6〜16桁の半角英数字）
:::caution[]
5回連続で署名用電子証明書の暗証番号を間違えた場合には、マイナンバーカードにロックがかかってしまいますのでご注意ください。     
:::
    </Accordion>
</AccordionGroup>

## **処理の流れ**


<Tabs>
  <Tab title="対面">
<Steps>
    <Step title="同意取消しの要求（サービスプロバイダ事業者）">
        利用者から基本4情報（氏名・住所・生年月日・性別）提供に対する同意取消しの要求を受信し、リダイレクト先URLと併せてAPIに送信します。
    </Step>
    <Step title="署名トランザクションの開始（プラットフォーム事業者）">
        同意取消し申請書を生成し、その内容から署名対象データを作成します。署名対象データを同意取消し申請書に追加し、署名トランザクションを開始します。正常に開始された場合、サービスプロバイダ事業者にマイナアプリ用の同意取消しURLを返却します。
    </Step>
    <Step title="マイナアプリの起動（サービスプロバイダ事業者）">
        受信した同意取消しURLにアクセスすると、利用者のスマートフォンでマイナアプリが起動します。PCまたはタブレットの場合は、認証用のQRコードがブラウザやアプリ画面に表示されますので、利用者はマイナアプリの「二次元コードを読み取る」をタップすることでカメラを起動し、表示されたQRコードを読み取ることで、マイナアプリに表示された6桁のパスコードをPCまたはタブレットの画面で入力します。
    </Step>
    <Step title="署名値の生成（サービスプロバイダ事業者）">
        マイナアプリ起動後、利用者は画面の案内に従って操作を行い、同意取消し申請書に基づいて署名値を生成します。署名完了後、リダイレクトにより署名結果パラメータをAPIへ送信します。        
        <AccordionGroup>
            <Accordion title="マイナンバーカードを読み取る">
                <Steps>
                    <Step>「マイナンバーカードを使って署名します」画面の「ほかの方法を選ぶ」を選択します。</Step>
                    <Step>「実物のマイナンバーカード」を選択します。</Step>
                    <Step>PCまたはタブレットの場合のみ、マイナアプリ画面に6桁のパスコードが表示されますので、PCまたはタブレットに表示されているパスコード入力欄に入力します。</Step>
                    <Step>署名対象の内容が画面に表示されるので、内容を確認後、「確認して次へ」をタップします。</Step>
                    <Step>6〜16桁の署名用電子証明書のパスワードを入力し、「次へ」をタップします。</Step>
                    <Step>「読み取り開始」をタップし、NFC機能でマイナンバーカードを読み取ることで署名が完了します。</Step>
                </Steps>
            </Accordion>
            <Accordion title="iPhoneのマイナンバーカードを読み取る">
                <Steps>
                    <Step>「マイナンバーカードを使って署名します」画面の「iPhoneのマイナンバーカード」を選択します。</Step>
                    <Step>PCまたはタブレットの場合のみ、マイナアプリ画面に6桁のパスコードが表示されますので、PCまたはタブレットに表示されているパスコード入力欄に入力します。</Step>
                    <Step>署名対象の内容が画面に表示されるので、内容を確認後、「確認して次へ」をタップします。</Step>
                    <Step>6〜16桁の署名用電子証明書のパスワードを入力し、「次へ」をタップします。</Step>
                    <Step>入力したパスワードに問題なければ、署名が完了します。なお、基本4情報を取得する場合は、Appleウォレットの承認も正常に完了する必要があります。</Step>
                </Steps>
            </Accordion>
            <Accordion title="Androidスマホ用電子証明書を読み取る">
                <Steps>
                    <Step>「マイナンバーカードを使って署名します」画面の「スマホ用電子証明書」を選択します。</Step>
                    <Step>PCまたはタブレットの場合のみ、マイナアプリ画面に6桁のパスコードが表示されますので、PCまたはタブレットに表示されているパスコード入力欄に入力します。</Step>
                    <Step>署名対象の内容が画面に表示されるので、内容を確認後、「確認して次へ」をタップします。</Step>
                    <Step>6〜16桁の署名用電子証明書のパスワードを入力し、「次へ」をタップします。</Step>
                    <Step>入力したパスワードに問題なければ、署名が完了します。</Step>

                </Steps>
            </Accordion>
        </AccordionGroup>
    </Step>
    <Step title="CSRF対策検証（プラットフォーム事業者）">
        リダイレクトで受信したデータをもとに、CSRF攻撃の有無を検証します。攻撃が検知された場合は、認証処理を中断しエラーを返却します。
    </Step>
    <Step title="署名トランザクション結果の取得（プラットフォーム事業者）">
        検証が正常に完了した場合、マイナアプリで生成された署名結果を取得します。取得した内容に異常がある場合はエラーを返却し、処理を中断します。
    </Step>
    <Step title="署名値・署名用電子証明書の追加（プラットフォーム事業者）">
        取得した署名結果から、署名値、署名用電子証明書を同意取消し申請書に追加します。
    </Step>
    <Step title="同意取消し申請の要求（プラットフォーム事業者）">
        署名値および署名用電子証明書を追加した同意取消し申請書を使用し、J-LISに同意取消し申請を送信します。
    </Step>
    <Step title="署名トランザクションIDの返却（プラットフォーム事業者）">
        同意申請が正常に完了した場合、署名トランザクションIDをリダイレクトで返却し、署名完了画面へ遷移します。
    </Step>
    <Step title="同意取消し結果の取得（サービスプロバイダ事業者）">
        取得した署名トランザクションIDを各APIに送信することで、同意取消し結果が返却されます。
    </Step>
</Steps>
  </Tab>
  <Tab title="非対面">
<Steps>
    <Step title="同意取消しの要求（サービスプロバイダ事業者）">
        利用者から基本4情報（氏名・住所・生年月日・性別）提供に対する同意取消しの要求を受信し、リダイレクト先URLと併せてAPIに送信します。
    </Step>
    <Step title="署名トランザクションの開始（プラットフォーム事業者）">
        同意取消し申請書を生成し、その内容から署名対象データを作成します。署名対象データを同意取消し申請書に追加し、署名トランザクションを開始します。正常に開始された場合、サービスプロバイダ事業者にマイナアプリ用の同意取消しURLを返却します。
    </Step>
    <Step title="マイナアプリの起動（サービスプロバイダ事業者）">
        受信した同意取消しURLにアクセスすると、利用者のスマートフォンでマイナアプリが起動します。PCまたはタブレットの場合は、認証用のQRコードがブラウザやアプリ画面に表示されますので、利用者はマイナアプリの「二次元コードを読み取る」をタップすることでカメラを起動し、表示されたQRコードを読み取ることで、マイナアプリに表示された6桁のパスコードをPCまたはタブレットの画面で入力します。
    </Step>
    <Step title="署名値の生成（サービスプロバイダ事業者）">
        マイナアプリ起動後、利用者は画面の案内に従って操作を行い、同意取消し申請書に基づいて署名値を生成します。署名完了後、リダイレクトにより署名結果パラメータをAPIへ送信します。        
        <AccordionGroup>
            <Accordion title="マイナンバーカードを読み取る">
                <Steps>
                    <Step>「マイナンバーカードを使って署名します」画面の「ほかの方法を選ぶ」を選択します。</Step>
                    <Step>「実物のマイナンバーカード」を選択します。</Step>
                    <Step>PCまたはタブレットの場合のみ、マイナアプリ画面に6桁のパスコードが表示されますので、PCまたはタブレットに表示されているパスコード入力欄に入力します。</Step>
                    <Step>署名対象の内容が画面に表示されるので、内容を確認後、「確認して次へ」をタップします。</Step>
                    <Step>6〜16桁の署名用電子証明書のパスワードを入力し、「次へ」をタップします。</Step>
                    <Step>「読み取り開始」をタップし、NFC機能でマイナンバーカードを読み取ることで署名が完了します。</Step>
                </Steps>
            </Accordion>
            <Accordion title="iPhoneのマイナンバーカードを読み取る">
                <Steps>
                    <Step>「マイナンバーカードを使って署名します」画面の「iPhoneのマイナンバーカード」を選択します。</Step>
                    <Step>PCまたはタブレットの場合のみ、マイナアプリ画面に6桁のパスコードが表示されますので、PCまたはタブレットに表示されているパスコード入力欄に入力します。</Step>
                    <Step>署名対象の内容が画面に表示されるので、内容を確認後、「確認して次へ」をタップします。</Step>
                    <Step>6〜16桁の署名用電子証明書のパスワードを入力し、「次へ」をタップします。</Step>
                    <Step>入力したパスワードに問題なければ、署名が完了します。なお、基本4情報を取得する場合は、Appleウォレットの承認も正常に完了する必要があります。</Step>
                </Steps>
            </Accordion>
            <Accordion title="Androidスマホ用電子証明書を読み取る">
                <Steps>
                    <Step>「マイナンバーカードを使って署名します」画面の「スマホ用電子証明書」を選択します。</Step>
                    <Step>PCまたはタブレットの場合のみ、マイナアプリ画面に6桁のパスコードが表示されますので、PCまたはタブレットに表示されているパスコード入力欄に入力します。</Step>
                    <Step>署名対象の内容が画面に表示されるので、内容を確認後、「確認して次へ」をタップします。</Step>
                    <Step>6〜16桁の署名用電子証明書のパスワードを入力し、「次へ」をタップします。</Step>
                    <Step>入力したパスワードに問題なければ、署名が完了します。</Step>

                </Steps>
            </Accordion>
        </AccordionGroup>
    </Step>
    <Step title="CSRF対策検証（プラットフォーム事業者）">
        リダイレクトで受信したデータをもとに、CSRF攻撃の有無を検証します。攻撃が検知された場合は、認証処理を中断しエラーを返却します。
    </Step>
    <Step title="署名トランザクション結果の取得（プラットフォーム事業者）">
        検証が正常に完了した場合、マイナアプリで生成された署名結果を取得します。取得した内容に異常がある場合はエラーを返却し、処理を中断します。
    </Step>
    <Step title="署名値・署名用電子証明書の追加（プラットフォーム事業者）">
        取得した署名結果から、署名値、署名用電子証明書を同意取消し申請書に追加します。
    </Step>
    <Step title="同意取消し申請の要求（プラットフォーム事業者）">
        署名値および署名用電子証明書を追加した同意取消し申請書を使用し、J-LISに同意取消し申請を送信します。
    </Step>
    <Step title="署名トランザクションIDの返却（プラットフォーム事業者）">
        同意申請が正常に完了した場合、署名トランザクションIDをリダイレクトで返却し、署名完了画面へ遷移します。
    </Step>
    <Step title="同意取消し結果の取得（サービスプロバイダ事業者）">
        取得した署名トランザクションIDを各APIに送信することで、同意取消し結果が返却されます。
    </Step>
</Steps>
  </Tab>
</Tabs>

## **シーケンス図**


<Tabs>
  <Tab title="対面">

```mermaid
%%{init:{'theme':'natural'}}%%
sequenceDiagram
autonumber
    participant 利用者
    participant マイナアプリ
    participant サービスプロバイダ事業者
    participant プラットフォーム事業者
    participant デジタル庁サーバ
    participant J-LIS

    Note Over サービスプロバイダ事業者,プラットフォーム事業者:1.同意取消しの要求
    サービスプロバイダ事業者->>プラットフォーム事業者: [02] 同意取消しの要求
    プラットフォーム事業者->>プラットフォーム事業者: [03] 同意取消し情報XMLの署名対象ハッシュ値生成
    プラットフォーム事業者->>デジタル庁サーバ: [04] トークンリクエスト（client_credentials）
    デジタル庁サーバ-->>プラットフォーム事業者: [05] トークンレスポンス（client_credentials）
    Note Over プラットフォーム事業者,デジタル庁サーバ:2.署名トランザクションの開始
    プラットフォーム事業者->>デジタル庁サーバ: [06] 署名トランザクション開始リクエスト
    デジタル庁サーバ-->>プラットフォーム事業者: [07] 署名トランザクション開始レスポンス
    プラットフォーム事業者-->>サービスプロバイダ事業者: 同意取消し用URLの返却
    Note Over 利用者,サービスプロバイダ事業者:3.マイナアプリの起動
    alt スマートフォン（同一端末）
        サービスプロバイダ事業者->>マイナアプリ: [08] 認可リクエスト [09] リダイレクト
        マイナアプリ->>利用者: マイナアプリ起動
    else PC・タブレット（別端末）
        サービスプロバイダ事業者->>マイナアプリ: [08] 認可リクエスト [09] リダイレクト（QRコード表示）
        マイナアプリ->>利用者: マイナアプリ起動<br>QRコードの読み取り・パスコード認証
    end
    Note Over 利用者,デジタル庁サーバ:4.署名値の生成
    利用者->>利用者: マイナアプリの操作
    利用者->>マイナアプリ: 署名用電子証明書の読み取り<br>暗証番号の入力
    マイナアプリ->>マイナアプリ: [10] 利用者が同意取消し情報に署名
    マイナアプリ->>デジタル庁サーバ: 署名完了
    デジタル庁サーバ->>プラットフォーム事業者: [11] 認可レスポンス [12] リダイレクト
    Note Over プラットフォーム事業者,デジタル庁サーバ:5.CSRF対策検証
    プラットフォーム事業者->>デジタル庁サーバ: [13] トークンリクエスト
    デジタル庁サーバ-->>プラットフォーム事業者: [14] トークンレスポンス
    Note Over プラットフォーム事業者,デジタル庁サーバ:6.署名トランザクション結果の取得
    プラットフォーム事業者->>デジタル庁サーバ: [16] 署名トランザクション結果取得リクエスト
    デジタル庁サーバ-->>プラットフォーム事業者: [17] 署名トランザクション結果取得レスポンス
    Note Over プラットフォーム事業者:7.署名値・署名用電子証明書の追加
    プラットフォーム事業者->>プラットフォーム事業者: 同意取消し申請書の作成
    Note Over プラットフォーム事業者,J-LIS:8.同意取消し申請の要求
    プラットフォーム事業者->>J-LIS: 同意取消しの申請
    Note Over プラットフォーム事業者,J-LIS:9.署名トランザクションIDの返却
    J-LIS->>プラットフォーム事業者: 同意結果の返却
    プラットフォーム事業者->プラットフォーム事業者: 同意結果の保存
    Note Over サービスプロバイダ事業者,プラットフォーム事業者:10.同意取消し結果の取得
    プラットフォーム事業者->>サービスプロバイダ事業者: [20] レスポンス（リダイレクトで署名トランザクションIDを返却）
    サービスプロバイダ事業者->>プラットフォーム事業者: 同意取消し結果の取得要求
    プラットフォーム事業者-->>サービスプロバイダ事業者: 同意取消し結果の返却
```
  </Tab>
  <Tab title="非対面">

```mermaid
%%{init:{'theme':'natural'}}%%
sequenceDiagram
autonumber
    participant 利用者
    participant マイナアプリ
    participant サービスプロバイダ事業者
    participant プラットフォーム事業者
    participant デジタル庁サーバ
    participant J-LIS

    Note Over サービスプロバイダ事業者,プラットフォーム事業者:1.同意取消しの要求
    サービスプロバイダ事業者->>プラットフォーム事業者: [02] 同意取消しの要求
    プラットフォーム事業者->>プラットフォーム事業者: [03] 同意取消し情報XMLの署名対象ハッシュ値生成
    プラットフォーム事業者->>デジタル庁サーバ: [04] トークンリクエスト（client_credentials）
    デジタル庁サーバ-->>プラットフォーム事業者: [05] トークンレスポンス（client_credentials）
    Note Over プラットフォーム事業者,デジタル庁サーバ:2.署名トランザクションの開始
    プラットフォーム事業者->>デジタル庁サーバ: [06] 署名トランザクション開始リクエスト
    デジタル庁サーバ-->>プラットフォーム事業者: [07] 署名トランザクション開始レスポンス
    プラットフォーム事業者-->>サービスプロバイダ事業者: 同意取消し用URLの返却
    Note Over 利用者,サービスプロバイダ事業者:3.マイナアプリの起動
    alt スマートフォン（同一端末）
        サービスプロバイダ事業者->>マイナアプリ: [08] 認可リクエスト [09] リダイレクト
        マイナアプリ->>利用者: マイナアプリ起動
    else PC・タブレット（別端末）
        サービスプロバイダ事業者->>マイナアプリ: [08] 認可リクエスト [09] リダイレクト（QRコード表示）
        マイナアプリ->>利用者: マイナアプリ起動<br>QRコードの読み取り・パスコード認証
    end
    Note Over 利用者,デジタル庁サーバ:4.署名値の生成
    利用者->>利用者: マイナアプリの操作
    利用者->>マイナアプリ: 署名用電子証明書の読み取り<br>暗証番号の入力
    マイナアプリ->>マイナアプリ: [10] 利用者が同意取消し情報に署名
    マイナアプリ->>デジタル庁サーバ: 署名完了
    デジタル庁サーバ->>プラットフォーム事業者: [11] 認可レスポンス [12] リダイレクト
    Note Over プラットフォーム事業者,デジタル庁サーバ:5.CSRF対策検証
    プラットフォーム事業者->>デジタル庁サーバ: [13] トークンリクエスト
    デジタル庁サーバ-->>プラットフォーム事業者: [14] トークンレスポンス
    Note Over プラットフォーム事業者,デジタル庁サーバ:6.署名トランザクション結果の取得
    プラットフォーム事業者->>デジタル庁サーバ: [16] 署名トランザクション結果取得リクエスト
    デジタル庁サーバ-->>プラットフォーム事業者: [17] 署名トランザクション結果取得レスポンス
    Note Over プラットフォーム事業者:7.署名値・署名用電子証明書の追加
    プラットフォーム事業者->>プラットフォーム事業者: 同意取消し申請書の作成
    Note Over プラットフォーム事業者,J-LIS:8.同意取消し申請の要求
    プラットフォーム事業者->>J-LIS: 同意取消しの申請
    Note Over プラットフォーム事業者,J-LIS:9.署名トランザクションIDの返却
    J-LIS->>プラットフォーム事業者: 同意結果の返却
    プラットフォーム事業者->プラットフォーム事業者: 同意結果の保存
    Note Over サービスプロバイダ事業者,プラットフォーム事業者:10.同意取消し結果の取得
    プラットフォーム事業者->>サービスプロバイダ事業者: [20] レスポンス（リダイレクトで署名トランザクションIDを返却）
    サービスプロバイダ事業者->>プラットフォーム事業者: 同意取消し結果の取得要求
    プラットフォーム事業者-->>サービスプロバイダ事業者: 同意取消し結果の返却
```
  </Tab>
</Tabs>


   
<br>


