Windowsリモートデスクトップに多要素認証を組み込む

# はじめに

IBM Security Verify の Gateway for Windows Login を利用して、Windowsリモートデスクトップのログインに、多要素認証を組み込む手順をご紹介します。
これにより、Windows のログインの際、UserID/Password 以外の要素による多要素認証を組み込むことができます。

[IBM Security Verify Gateway for Windows Login](https://www.ibm.com/docs/ja/security-verify?topic=integrations-security-verify-gateway-windows-login)

### 設定後のイメージ
UserID/Password を入力後、二要素目の方式の選択画面が表示されます。
ここで二要素目方式のうち、ワンタイムパスワードを利用するもの(TOTP,SMS,Email)を選択した場合は、以下のようなワンタイムパスワード入力画面が表示されますので、メール、SMS、等に届くワンタイムパスワードを以下の画面に入力することで、ログインができるようになります。

画面イメージ：　IBM Security Verify Gateway for Windows Login による2要素目のワンタイムパスワードを入力する画面。
![2021-10-11 09_09_07-.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/a6a24fc8-8a6d-e4a1-2983-c3f8af080c43.png)

## 設定手順
### IBM Security Verify のAPIクライアントの構成
IBM Security Verifyにて、APIクライアントが構成します。
管理コンソールにログインし、セキュリティー > API access から API Client を設定します。
クライアントIDと、クライアント秘密鍵を、後の手順で使用します。
![2021-11-07 09_57_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/b81b34f4-4ab7-60a0-9b4c-558a46f3bbcc.png)

このAPIクライアントのクライアントIDと、クライアント秘密鍵は、IBM Security Verify Gateway for Windowsのインストール後、[config.jsonファイル](https://www.ibm.com/docs/ja/security-verify?topic=configuration-configjson-file) を構成をする際に使います。


### IBM Security Verify Gateway for Windows のインストール
ここでは 1.0.6 をインストールをしたときの動作・構成を記載します。
(2021年10月21日に Version 1.0.7、2022年5月30日に Version 1.0.8 がリリースされています）


システム要件は、[リンク先](https://www.ibm.com/docs/ja/security-verify?topic=login-installing-security-verify-gateway-windows)に記載があります。Remote Desktop で接続する先になるサーバーからIBM Security Verifyに対して、HTTPS 443ポートで接続できることがネットワーク要件にあります。

### IBM Security Verify Gateway for Windows Login アプリケーションをダウンロードします。

https://exchange.xforce.ibmcloud.com/hub に移動します。
「IBM Security Gateway for Windows Login」を検索して選択します。
アプリケーションをダウンロードします。

![2021-10-08 15_10_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/fc2fe6e7-d0fd-b5c2-6820-c1a65613fc86.png)

ダウンロード時の注意
・ゲストログインではダウンロードできませんでしたが、IBM idでログインするとダウンロードが可能になりました。
・ポップアップブロックが表示される場合があるので、ダウンロードを許可します。

![2021-10-08 15_13_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/4777552a-f097-a968-4db9-17ee76701268.png)

ダウンロードしたファイルを保存します。
![2021-10-08 15_21_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/6db6b8a8-b0bf-927a-3348-05ab208d9704.png)


ダウンロードした端末と、Gateway for Windows Login を導入するWindowsサーバーが異なる場合は、Gateway for Windows Login を導入するサーバーにファイルをコピーします。
ダウンロードしたzipファイルを展開します。
中に含まれる setup_winlogon.exe を実行します。
![2021-10-08 15_22_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/a82e5b4b-1c19-46ea-2e93-b19e4834b723.png)


インストールを行います。READMEを参照すると、インストール時の言語選択で日本語を選択した状態から起動する方法の記載があります。
![2021-10-11 08_56_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/e2eacf44-5d97-d788-d0be-906f96f96bca.png)
次へ
![2021-10-11 08_57_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/09ae9006-7977-c78e-4485-96926d084213.png)
ライセンス情報をよく読み、同意する場合は使用許諾契約の条項に同意します。を選択します。
![2021-10-11 08_57_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/d80f110f-29d8-a3be-932c-2482ec43596b.png)
インストール先ディレクトリを聞かれます。この後、config.jsonファイルの編集の際に、インストールしたディレクトリ情報が必要になるため、忘れないようにします。
![2021-10-11 08_57_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/a94f1f54-fcd8-c569-dc04-6884bee98983.png)
インストールを選択します。
![2021-10-11 08_57_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/3330aa0c-eb25-73ef-3e82-2f79fa679fe6.png)
数秒程度でインストールが完了します。
![2021-10-11 08_57_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/4f0d66d8-7e36-3b3c-6b9f-3f3366c0b535.png)

導入が終わったら構成をします。

## IBM Security Verify Gateway for Windows の構成

インストール時に指定したPATHに移動します。
![2021-10-08 16_46_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/1ce2ba62-5938-2d68-6eaf-3e416d3520f9.png)




IBM Security Verify の導入ディレクトリにある config.json.sample を参考に config.json を作成します。
client-idとclient-secretには、IBM Security Verify のAPIクライアントの構成で作成したAPIクライアントIDとクライアント秘密鍵をそれぞれ記載します。
hostには、IBM Security Verifyのテナントを指定します。
username-format には、IBM Security Verify上のユーザーと、Windowsユーザーの名前を解決する定義を記載します。この環境は、ドメインを構成していないため、ユーザー名のフォーマットを以下のように設定変更しています。
disable-builtin-password-logon は、構成中はfalseにしておき、他の項目を正しく設定できてから true に設定するようにします。

```config.json
{
    "ibm-auth-api":{
        "client-id":"c751cxxx-xxxx-xxxx-xxxx-xxxxxxxf267f",
        "client-secret":"ZaVxxxxwd1", /* See obfuscate.exe tool. */
        "protocol":"https",
        "host":"xxxxxxxx.verify.ibm.com",
        "port":443,
        "max-handles":16
    },
    "credential-provider":{
        "username-format":"%U",
        /*"trace-file":"c:/credprov/credprov.log",*/
        "disable-builtin-password-logon": false,
        "auth-method":"winpwd-then-choice-then-otp"
    }
}

```

config.json ファイルの設定が正しくない場合、Gateway for Windows Login は動作できません。



これで設定ができました。
リモートデスクトップで Gateway for Windows Login をインストールしたサーバーに接続し、多要素認証が求められるようになっていることを確認します。

ユーザー名、パスワードの後に、どの方式で二要素目の情報を指定するかを選択します。
![2021-10-11 09_07_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/82900959-b514-7f73-7993-45ae3a5573ee.png)

TOTP, SMS, Emailなどの場合、ワンタイムパスワードを入力します。正しければ入力後数秒程度でログインができます。
![2021-10-11 09_08_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/44a10232-33bb-52b7-237d-bb136fc982fc.png)

disable-builtin-password-logon の設定が false であれば、以下のようにMFA
多要素認証なしでパスワードだけでログインする方法も提供されます(鍵マークを選択すると多要素認証なしでログインが可能）。true に設定すると、この選択肢がなくなり多要素認証が必須になりますので、構成を正しく設定できてから true に設定するようにします。
![2021-10-12 20_13_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147690/d256d769-5d4a-1e3b-0d49-d6391f2c8eb2.png)

## 最後に
IBM Security Verify Gateway for Windows を利用した Windowsリモートデスクトップのログインに多要素認証を追加する手順をご紹介しました。