Android Studio と IBM Security Verify SDKをはじめて触ってみる④

# はじめに
②の記事で、Authenticator Demoアプリを使ってQRCode読み取ったあと、デバイスの検証に進むことができませんでした。なぜデバイスの検証に進めないのか調べてみました。
[Android Studio と IBM Security Verify SDKをはじめて触ってみる②](https://qiita.com/fitz/items/baadc466055e9dbd00ef)

![androidStudio (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/9deed720-6f4c-f0e2-cc19-2d9fdb18204d.png)

オーセンティケータの状態を、/v1.0/authenticators APIを用いて比較してみました。

# 1.IBM Security VerifyアプリでQRCodeを読み取った場合
まず最初に、IBM Security Verifyアプリを使ってQRCodeを読み取り、指紋認証まで実施したときのオーセンティケータを確認しました。

```JSON
{
    "total": 1,
    "authenticators": [
        {
            "owner": "75500008BB",
            "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "creationTime": "2021-08-04T03:21:53.635Z",
            "attributes": {
                "applicationVersion": "2.5.0",
                "deviceType": "SOV37",
                "accountName": "testuser",
                "platformType": "Android",
                "pushToken": "yyyy~~~~~~yyyyy",
                "deviceName": "SOV37",
                "deviceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "fingerprintSupport": true,
                "verifySdkVersion": "2.1.4",
                "osVersion": "10",
                "frontCameraSupport": true,
                "faceSupport": false,
                "applicationId": "com.ibm.security.verifyapp"
            },
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "state": "ACTIVE",
            "enabled": true
        }
    ],
    "limit": 200,
    "count": 200,
    "page": 1
}
```


# 2.Authenticator DemoアプリでQRCodeを読み取った場合

次にAuthenticator Demoアプリを使い、オーセンティケータ登録/確認しました。
IBM Security Verifyアプリとの違いとしては以下の点がありました。

- PushTokenが空白
- Stateが"ENROLLING"になっている

StateがActiveになっていないため、デバイスの検証に進めまないようでした。

また、Push通知に関するコードは実装されていないため、PushTokenが設定されていませんでした。

```JSON
{
    "total": 1,
    "authenticators": [
        {
            "owner": "75500008BB",
            "clientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "creationTime": "2021-08-04T01:52:34.825Z",
            "attributes": {
                "applicationVersion": "1.0",
                "deviceType": "SOV37",
                "accountName": "testuser",
                "platformType": "Android",
                "pushToken": "",
                "deviceName": "SOV37",
                "deviceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "fingerprintSupport": true,
                "verifySdkVersion": "2.1.4",
                "osVersion": "10",
                "frontCameraSupport": true,
                "faceSupport": false,
                "applicationId": "com.ibm.security.verifyapp"
            },
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "state": "ENROLLING",
            "enabled": true
        }
    ],
    "limit": 200,
    "count": 200,
    "page": 1
}
```

# 3.Stateを"ENROLLING"から "ACTIVE"に変更するには？

Push通知が来ないため、多要素認証としてまだ利用できませんが、
とりあえずStateを"ENROLLING"から "ACTIVE"に変更できないかと試行錯誤しました。

結果としては、refreshを行うことでStateが"ACTIVE"に変わりました。

![androidStudio (47).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/9cd8b13c-ba0d-b8c2-ebe7-cb7787e4ebbb.png)


```java
AuthenticatorContext.sharedInstance().refresh(mfaAuthenticator,
 new IResultCallback<Void>() {
@Override                                                                            public void handleResult(Void unused, VerifySdkException e) {
}
});
```

StateがACTIVEになると、デバイスの検証ボタンがクリックできる状態になりました。
![androidStudio (48) .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/1af5a779-0341-7eb0-747b-0497b93595da.png)


# 最後に
全4回にわたりIBM Security Verify SDK＋デモアプリケーションを使ってなにができるのか試行錯誤してみました。

（一覧）
[Android Studio と IBM Security Verify SDKをはじめて触ってみる①](https://qiita.com/fitz/items/b9b19fba10f769e491a4)
[Android Studio と IBM Security Verify SDKをはじめて触ってみる②](https://qiita.com/fitz/items/baadc466055e9dbd00ef)
[Android Studio と IBM Security Verify SDKをはじめて触ってみる③](https://qiita.com/fitz/items/ad44927116fdc8462d29)
[Android Studio と IBM Security Verify SDKをはじめて触ってみる④](https://qiita.com/fitz/items/e23df9b54c7e24eb3306)