最近のアクセス:
GAM - モバイル用二要素認証

この記事では、モバイルアプリケーションで二要素認証 (2FA) を使用するための手順を説明します。
二要素認証を使用できるようにするには、最初に認証タイプを設定する必要があります。
また、次の点を検討します:
以下で説明されているイベントはすべて同じパネルにあります。
イメージ:50727.png

1 つ目の認証要素

このイベント内のロジックには、LoginExternal という名前の Actions 外部オブジェクトのメソッドの呼び出しが含まれます。
最初のパラメーターは GAMAuthenticationTypes ドメインに基づきます。値は GAMLocal です。
LoginExternal メソッドが True を返す場合、GeneXusSecurity.GAMLoginEvents.TwoFactorAuthenticationRequested イベントがトリガーされます。
このイベントは、サブルーチン「Display2FAStep2」を呼び出してパネルを変更するため、2 つ目の認証要素の入力を表示する準備ができています。加えて、このイベントは 2 つ目の認証要素を確認するようユーザーに警告します。
Event 'BtnNext'
    Composite
        GeneXus.Common.UI.Progress.ShowWithTitle("Connecting...")
        &isLoginOK = GeneXus.SD.Actions.LoginExternal(GAMAuthenticationTypes.GAMLocal, &UserName, &UserPassword, &LoginExternalAdditionalParameters)
        GeneXus.Common.UI.Progress.Hide()
        If &isLoginOK
            //OK
        Else
            GAMSDGetLastErrors(&Messages)
        Endif
    EndComposite
Endevent

Event GeneXusSecurity.GAMLoginEvents.TwoFactorAuthenticationRequested
    Msg("validate second factor authentication")
    
    Do "Display2FAStep2"
    &Login2FAStep = 2
    GeneXus.Client.ClientStorage.Set(!'Login2FA-Step', &Login2FAStep.ToString())
      GeneXus.Client.ClientStorage.Set(!'Login2FA-UserName', &UserName.Trim())
EndEvent

2 つ目の認証要素

このイベントでは、外部オブジェクトのメソッド LoginExternal を使用して、2 つ目の認証要素を確認します。このため、&LoginExternalAdditionalParameters.OTPStep プロパティに「2」を定義します。このイベントでは、2 つ目の認証要素の OTP コードを確認するからです。
そのほかに、&password パラメーターを LoginExternal メソッドの &OTPCode に変更します。
Event 'BtnValidCode'
    Composite
        GeneXus.Common.UI.Progress.ShowWithTitle("Connecting...")
        &LoginExternalAdditionalParameters = new()
        &LoginExternalAdditionalParameters.AuthenticationTypeName         = !"OTP-2FA"
        &LoginExternalAdditionalParameters.OTPStep                        = 2
        &LoginExternalAdditionalParameters.UseTwoFactorAuthentication    = True
        GeneXus.SD.Actions.LoginExternal(GAMAuthenticationTypes.OTP, &UserName, &OTPCode, &LoginExternalAdditionalParameters)
        GeneXus.Common.UI.Progress.Hide()
        Do "Set2FAStep1"
        Return
    EndComposite
Endevent

Start イベント

アプリケーションをバックグラウンドで実行している場合、ログインプロセスの状態を維持することが重要です。これは、ユーザーが 1 つ目の認証要素で確認されると、1 つ目の認証要素で既に実行された確認を失わずに、別のアプリを開いて (必要な場合) 2 つ目の認証要素を完了できる必要があることを意味します。
この問題を解決するには、ClientStorage 外部オブジェクトを使用します。
Event ClientStart
    &UserName.Enabled        = True
    &UserPassword.Visible    = True
    BtnNext.Visible            = True
    TblCode.Visible            = False
    &Login2FAStep.FromString(GeneXus.Client.ClientStorage.Get(!'Login2FA-Step'))
    If &Login2FAStep = 2
        Do "Display2FAStep2"
        &UserName = GeneXus.Client.ClientStorage.Get(!'Login2FA-UserName')
    Endif
Endevent

Go Back イベント

このイベントでは、サブルーチン「Set2FAStep1」を呼び出してログインプロセスをキャンセルします。
Event 'BtnBack'
    Composite
        Do "Set2FAStep1"
        Return
    EndComposite
Endevent

サブルーチン

上記のイベントは、2 つの異なるサブルーチンを呼び出します。
「Display2FAStep2」サブルーチンは、ユーザーが両方の認証要素を操作できるように、パネルのエレメントで変更を行います。
Sub "Display2FAStep2"
    &UserName.Enabled        = False 
    &UserPassword.Visible    = False
    BtnNext.Visible            = False
    TblCode.Visible            = True
EndSub
「Set2FAStep1」サブルーチンは、パネルを既定のままにして、ログインプロセスの手順をリセットします。
Sub "Set2FAStep1"
    &Login2FAStep = 1
    GeneXus.Client.ClientStorage.Set(!'Login2FA-Step', &Login2FAStep.ToString())
    GeneXus.Client.ClientStorage.Set(!'LoginOTP-UserName', "")
EndSub


使用可能バージョン

この機能は GeneXus 17 Upgrade 9 以降で利用できます。
 


サブページ
Created: 23/04/24 18:11 by Admin Last update: 23/04/24 18:11 by Admin
カテゴリ
Powered by GXwiki 3.0