SDBiometrics

scaBiometrics を使用すれば指紋認証技術を利用して(iOSにおけるTouchID )、ログイン操作などのセッション開始が必要な場合にユーザー名やパスワードなどの認証用データを取り出すことが可能になります。 GAMでの利用の他、ベーッシクなユーザ名とパスワード等の認証の際にも使用することが可能です。 一旦、認証用の情報を登録しておけば、指紋認証により登録された情報を利用することができるようになります。   インストール 開発しているiOSアプリケーションで本ツールを使用するためには、GeneXusにExternal Objectをインストールします。

  • "scaBiometrics.xpz"をインポートします。
  • 次のディレクトリに移動します。 <GeneXusインストールフォルダ>\iOS\Templates\iOS_Genexus\Classes
  • 次のファイルをディレクトリにコピーします。"KeychainItemWrapper.h"、"KeychainItemWrapper.m"、 "scaTouchID.h"、 "scaTouchID.m" 
  • もし"GXCustomExternalObjectsMapper.m" ファイルが存在する場合は、"externalObjectClassNameForObjectName"メソッドに以下の内容を追加します。
    if ([name isEqualToString:@"scaBiometrics"])
            return @"scaTouchID";
  • もし存在しない場合は、ディレクトリに次のファイルをコピーします。"GXCustomExternalObjectsMapper.h"、"GXCustomExternalObjectsMapper.m"
  • 次のディレクトリに移動します。<GeneXusインストールフォルダ>\iOS
  • テキストエディタを使用して、"iOS.impl"ファイルを編集します。Bootstrapping セクションに次の内容を追加します。
    <Template Id="iOS_Genexus\Classes\GXCustomExternalObjectsMapper.h" Output="iOS\Genexus\Classes\GXCustomExternalObjectsMapper.h"/>
    <Template Id="iOS_Genexus\Classes\GXCustomExternalObjectsMapper.m" Output="iOS\Genexus\Classes\GXCustomExternalObjectsMapper.m"/>
    <Template Id="iOS_Genexus\Classes\KeychainItemWrapper.h" Output="iOS\Genexus\Classes\KeychainItemWrapper.h"/>
    <Template Id="iOS_Genexus\Classes\KeychainItemWrapper.m" Output="iOS\Genexus\Classes\KeychainItemWrapper.m"/>
    <Template Id="iOS_Genexus\Classes\scaTouchID.h" Output="iOS\Genexus\Classes\scaTouchID.h"/>
    <Template Id="iOS_Genexus\Classes\scaTouchID.m" Output="iOS\Genexus\Classes\scaTouchID.m"/>
  • Xcode上で次のライブラリーを追加します。
    • Security.framework
    • LocalAuthentication.framework

  使用方法   XPZ内には、scaBiometrics External ObjectとSDPanelのサンプルが格納されています。    

ユーザーがシステムに適切なパスワードを入力した際(または入力したい場合に)、システムはスマートデバイス側でSignInメソッドを実行します。この際、ユーザ名とパスワードの2つのパラメータが必要になります。

ユーザーが指紋認証を利用してシステムに認証情報を入力する場合は、Authenticationメソッドを使用します。認証に失敗した場合は、ErrorBiometricドメインよりエラー情報が返却されます。指紋認証に成功した場合、ユーザ名とパスワードをGetAccountメソッドとGetPasswordメソッドで取得することができます。

Event 'SignIn'
    Composite
        &Error = &scaBiometrics.SignIn(&Account,&Password)
        if &Error > 0
            msg("Ocurrió un error al guardar en el Keychain")
        endif
        Home.Call(&Account,&Password)
    EndComposite
Endevent
Event 'Biometrics'
    Composite
        &Error = &scaBiometrics.Authentication()
        if &Error = ErrorsBiometric.OK
            &Account = &scaBiometrics.GetAccount()
            &Password = &scaBiometrics.GetPassword()
        else
            msg(&Error.EnumerationDescription())
        EndIf
    EndComposite
Endevent

&scaBiometricsは、scaBiometricsタイプの変数

&Errorは、ErrorBiometricタイプの変数

 

セキュリティ

iOS
ユーザ名とパスワードは、iOSオペレーティングシステムのkeychainに保存されます。そのためデータは全てIOSオペレーティングシステムによって管理され、アプリケーションでは格納された情報へのアクセスのみを考慮するだけでセキュリティを確保できます。

Touch IDのセキュリティについては、次のリンクを参考にしてください。 link.