ログインしようとしているユーザーに対して、認証および検証を 2 段階で行うことができます。これは、二要素認証 (2FA) や二段階認証 (2SV) として知られています。
2FA は通常、パスワードやユーザー名が入力され、ブルートフォース攻撃のリスクを軽減する方法として E メールまたは SMS を送信することによって、2 番目の検証ステップが実行される場合に使用されます。
2 番目の認証要素には、OTP Custom を含む
ワン タイム パスワード (OTP) 検証のみ使用できます。
セキュリティを向上させるためには、ユーザーはアクセスする前に 2 回検証する必要があります。最初の段階ではユーザー名およびパスワードを入力し、2 番目の段階では別の検証を実行します (前述のような検証)。
Web とモバイルのどちらのアプリケーションでも、ユーザーがこの機能を有効にしている場合、ユーザーがログインする際は毎回 2 つの手順に従う必要があります。つまり、ユーザーがログインしている間、アプリケーションにログオンし続けるためには、2 番目の要素を正常に通過する必要があります。
二要素認証には、次の認証タイプを設定できます: OTP、
ローカル、
カスタム、
Web サービス、
GAM リモート REST。
この例では、1 番目の認証要素にローカル認証、2 番目の認証要素に OTP を設定します。
- 手順 1: OTP を選択して、2 番目の認証要素を追加します。OTP の設定の詳細については、「OTP の設定手順」を参照してください。
OTP を 2 つ目の要素にのみ使用するためには、 [ Use For First Factor Authentication? ] チェックボックスを選択解除しておく必要があります。
- 手順 2: この例では、1 番目の認証要素はローカルになります。ローカルは GAM の既定の認証であるため、編集する必要があります。

ローカル認証のフォームを編集するには、チェックボックス [ Enable Two Factor Authentication? ] を選択する必要があります。
[ Authentication Type Name ] コンボボックスで、手順 1 で追加した OTP を選択します。
チェックボックス [ Force 2FA for all users? ] が選択されます。このオプションでは、アプリケーションのすべてのユーザーに対して、2FA を設定します。

1 番目の認証要素でチェックボックス [ Force 2FA for all users? ] を選択することで、アプリケーションの各ユーザーの [ Enable Two Factor Authentication? ] チェックボックスが選択されて設定されます。
[ Force 2FA for all users? ] チェックボックスを選択しない場合は、2FA を使用する各ユーザーの設定で [ Enable Two Factor Authentication? ] チェックボックスを選択する必要があります。
上記に示されている設定のほかに、GeneXus IDE で 2FA のプロパティを設定することもできます。このためには、次の名前でプロパティを参照する必要があります:
- &AuthenticationTypeLocal.TwoFactorAuthentication.Enable
- &AuthenticationTypeLocal.TwoFactorAuthentication.AuthenticationTypeName
- &AuthenticationTypeLocal.TwoFactorAuthentication.FirstAuthenticationFactorExpiration (秒): Numeric 9。既定値 = 900。
- &AuthenticationTypeLocal.TwoFactorAuthentication.ForceForAllUsers: false に設定した場合、すべてのユーザーがこれを有効にできます。
- &UserEnableTwoFactorAuth = Boolean (Null 許容)
詳細については、GAM の E メールサーバーの設定を参照してください。
REST サービスを通じて 2FA を使用する方法
1. アクセストークン
エンドポイント: https://<ドメイン>/<仮想ディレクトリー>/oauth/gam/v2.0/access_token
1 回目の POST
本文:
client_id: アプリケーションのクライアント ID。必須。
client_secret: アプリケーションのクライアントシークレット。必須。
grant_type=password: 必須。
scope: アクセスするユーザーアカウントの適用範囲。"&GAMApplication.ClientAuthenticationRequestMustIncludeUserScopes" が true の場合のみ必要。
username: 2FA の有効化対象のユーザーのユーザー名。必須。
password: 認証対象のユーザーのパスワード。必須。
authentication_type_name: サーバーで設定される 2FA の認証タイプの名前。必須。
POSTMAN の例:
このリクエストを行った後に、
2 回目の POST で使用するコードが書かれたメールが届きます。
2 回目の POST
client_id: アプリケーションのクライアント ID。必須。
client_secret: アプリケーションのクライアントシークレット。必須。
grant_type=password: 必須。
scope: アクセスするユーザーアカウントの適用範囲。"&GAMApplication.ClientAuthenticationRequestMustIncludeUserScopes" が true の場合のみ必須。
password: 1 回目の POST 内の OTP コード。必須。
username: 2FA の有効化対象のユーザーのユーザー名。必須。
authentication_type_name: サーバーで設定される 2FA の認証タイプの名前。必須。
use_2fa=true: 必須。
otp_step=2: 必須。
POSTMAN の例:
2. ユーザー情報
エンドポイント: https://<ドメイン>/<仮想ディレクトリー>
/oauth/gam/v2.0/userinfo
GET
Headers
Content-Type: 返されるコンテンツのタイプ。application/x-www-form-urlencoded を使用。必須。
Authorization: 2 回目の POST で取得した
access_token。必須。
{
"guid": "4c921af0-6805-4f51-9cfe-4d6cd6821e05",
"username": "juan",
"email": "jperez@genexus.com",
"verified_email": true,
"first_name": "Juan",
"last_name": "Perez",
"external_id": "",
"gender": "M",
"url_image": "",
"url_profile": "",
"phone": "099 888 888",
"address": "",
"city": "",
"state": "",
"post_code": "",
"language": "",
"timezone": "",
}
応答:
GeneXus 17 Upgrade 5 以降