IBM TechXchange Japan Identity and Access Management (IAM) User Group

IBM TechXchange Japan Identity and Access Management (IAM) User Group

 View Only

【IBM Security Verify SDK】と Android Studio で TOTP アプリを自分でも作ってみる

By TAKESHI SHIROIWA posted yesterday

  

皆さんこんにちは。

IBM Verify ですが、クラウドやらオンプレサーバーのソリューションが主体ですが、スマホの汎用アプリも用意されていまして、QR コード認証であったり、タイムベースのワンタイムパスワード (以後 TOTP と表記します) アプリとして使用することも可能です。しかしながら、汎用的に使用できる TOTP アプリは、いろいろなベンダーから配布されていますので、普通の状況であれば IBM Verify のスマホアプリをわざわざ使う理由もございません。

一方で、様々な金融機関様が、自社ブランドで TOTP のアプリを独自に開発されていたりします。

IBM Verify も、スマホアプリを作成するための SDK が用意されていまして、ご自身でカスタムの TOTP アプリを開発することが可能です。TOTP アプリの開発費用比較の対象としてご検討いただけると幸いでございます。

さて、実は当社の同僚がかつて、IBM Verify の SDK を用いてアプリを作ってみたという記事を公開しています。

https://qiita.com/fitz/items/b9b19fba10f769e491a4

ただ、その公開記事から少し時間も経ち、Android OS、Android Studio、そして、IBM Verify SDK のバージョンも更新されていますので、同じ手順で構築できるものか、再度わたくしがチャレンジしてみました。

動作確認した環境は、Windows11環境 + Android11 デバイス(OPPO Reno3 A)となります。
時間の都合上、対象のアプリは1つとしました。

  • Authenticator Demoアプリ

1. 環境構築

先人の記事を参考に必要な環境を構築しました。

  • Android Studio Narwhal Feature Drop | 2025.1.2 Patch 1
  • IBM Verify SDK for Android OS
  • IBM Verify SDK for Android OS サンプルアプリ

1-1 Android Studio の入手

https://developer.android.com/studio?hl=ja

こちらの URL から、Windows 64 bit 版をダウンロードし、インストールしました。特段インストールが難しいということはありませんでしたが、途中 WSLWindows Subsystem for Linuxをアップデートせよと言う指示が出ましたので、指示に従いました。PC の再起動が必要でした。

1-2  IBM Verify SDK for Android OS の入手

IBM Security App Exchange のサイト  ( https://www.ibm.com/products/app-exchange から https://apps.xforce.ibmcloud.com/ へ ) から IBM Verify SDK for Android OS を入手します。

画面左の選択肢から「Verify Identity and Access」を選択すると、表示を絞り込むことができます。

IBM Verify SDK (Android) を探し出して入手します。App Exchange にログインしていないとダウンロードできないのでログインしておきます。

1-3  IBM Verify SDK for Android OS サンプルアプリの入手

なにもないところからアプリを作るのもしんどいので、サンプルアプリを入手します。

https://github.com/IBM-Security/verify-sdk-android

自分は、ここの github サイトから、Code の ZIP ファイルをダウンロードしました。

ダウンロードしたファイルを解凍して、C:\Users\<Your User Name>\AndroidStudioProjects\ のディレクトリに展開します。次のようなフォルダー構造で展開されると思います。

C:\Users\<Your User Name>\AndroidStudioProjects\verify-sdk-android-release\samples\AuthenticatorDemo

先ほどダウンロードした Verify SDK のファイルである com.ibm.security.verifysdk-2.1.13.aar を以下のディレクトリに保存します。ファイル名はダウンロード時期により、バージョン番号の部分が変更される可能性があります。

C:\Users\<Your User Name>\AndroidStudioProjects\verify-sdk-android-release\samples\AuthenticatorDemo\VerifySdk

1.4 Android の端末を PC につなげましょう。

Android の端末は、USBケーブルで PC につなげましょう。開発者オプションを有効にして、USBデバッグできるようにしておきましょう。方法はインターネットに多数情報があると思いますので、適宜検索してください。

Android Studio の Device Manager で 対象の Android 端末をを見つけてください。

2. アプリのビルド

あとは何も考えずに、サンプルアプリをビルドしようとしました。

ところが…

「Your build is currently configured to use incompatible Java 21.0.6 and Gradle 8.0. Cannot sync the project.」なにか面倒なことを言ってきます。

では、Gradle をバージョンアップしましょう。ということで、ちょっとずつ更新していったら、なかなかエラーが消えず、結局、

「Minimum supported Gradle version is 8.13. Current version is 8.11.1.」バージョン 8.13 までアップデートしました。

その後もいくつか例外が発生し、その都度エラーメッセージを見て、修正して行きました。

Unresolved module dependency :VerifySdk (:) in :VerifySdk (BuildId(buildRoot=C:\Users\<Your User Name>\AndroidStudioProjects\verify-sdk-android-release\samples\AuthenticatorDemo)). Neither the source set nor the artifact property was populated by the Android Gradle plugin.
java.lang.IllegalStateException: Unresolved module dependency :VerifySdk (:) in :VerifySdk (BuildId(buildRoot=C:\Users\<Your User Name>\AndroidStudioProjects\verify-sdk-android-release\samples\AuthenticatorDemo)). Neither the source set nor the artifact property was populated by the Android Gradle plugin.
at com.android.tools.idea.gradle.project.sync.IdeModelFactoryV2.moduleLibraryFrom(IdeModelFactoryV2.kt:104)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$createFromDependencies$lambda$71$populateProjectDependencies(ModelCacheV2Impl.kt:446)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$createFromDependencies$lambda$71$createIdeDependenciesInstance(ModelCacheV2Impl.kt:654)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$createFromDependencies$lambda$71(ModelCacheV2Impl.kt:664)
at com.android.tools.idea.gradle.project.sync.ModelResult$Companion.create(ModelResult.kt:32)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$createFromDependencies(ModelCacheV2Impl.kt:438)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$dependenciesFrom(ModelCacheV2Impl.kt:686)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$androidArtifactWithDependenciesFrom$lambda$81(ModelCacheV2Impl.kt:810)
at com.android.tools.idea.gradle.project.sync.ModelResult$Companion.create(ModelResult.kt:32)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$androidArtifactWithDependenciesFrom(ModelCacheV2Impl.kt:809)
at com.android.tools.idea.gradle.project.sync.ModelCacheV2ImplKt.modelCacheV2Impl$variantWithDependenciesFrom$lambda$113(ModelCacheV2Impl.kt:1061)
<以下略>

また、Android Studio で、Verify SDK のバージョンを変更しました。サンプルアプリが前提としている Verify SDK が少々古いために変更が必要でした。

↓ このあたりの設定も、エラーや警告メッセージを参考に修正しました。

3. アプリの起動

ビルドに成功すると、スマホ上にアプリのアイコンができます。

起動すると、カメラが有効になります。これは QRコードを読める状態です。

会社のログインページで QR コードを使ったログインページを表示させてみます。これを作成したアプリでスキャンしてみます。

うまく QRコードが認識できると、Hellow World ! と表示されます。それだけのデモですが、これを元に肉付けしていくことが可能です。

ここまでで、大体 3 時間でできました。

4. まとめ

このように、Verify の SDK を使うと、それほど時間をかけずにここまでのことができてしまいます。

実際、TOTP を表示させるプログラムはあとちょっとでできると思いますが、この記事ではここまでで終了します。あとは皆さんが、上述の当社の同僚の記事を元に先に進めてみてください。

意外と簡単に Android のアプリが作成できることが実感できるのではないかと思います。

実用的アプリとなると、セキュリティー対策や、リバースエンジニアリング対策も必要になるかも知れませんので、実績のある業者に依頼する必要があるかもしれませんが、認証アプリの機能面の開発は Verify SDKを使えば簡単であることを実感いただければ幸いです。

0 comments
16 views

Permalink