FortiGateのSSL-VPNにSAML認証します。IdpはAzureADを使います。
はじめに
検証構成
- FortiGate:Azure上に構築したVM版のv6.4.3
- AzureAD:デフォルトの「onmicrosoft.com」ドメイン
- クライアント:Windows10 Home + FortiClientv6.4.1
※オンプレのFortiGateを持っていないので、Azure上に構築したVM版のFortiGateを使っています。
AzureへのFortiGate-VMの構築方法は「AzureにFortiGate-VM構築してみた」を参照してください。
AzureADの設定
エンタープライズアプリケーションの追加
AzureADへ「エンタープライズアプリケーション」を追加します。
AzureポータルでAzureADを開き、エンタープライズアプリケーションをクリック
新しいアプリケーションをクリック
SAMLの設定
AzureADに追加したSaaSアプリにSAMLの設定をします。
シングルサインオンの設定をクリック
SAMLをクリック
基本的なSAML構成を編集する
項目 | URL |
---|---|
[識別子] | https://[FQDN]/remote/saml/metadata |
[応答URL] | https://[FQDN]/remote/saml/login |
[サインオンURL] | https://[FQDN]/remote/login |
[ログアウトURL] | https://[FQDN]/remote/saml/logout |
※[FQDN]は、SSL-VPNで使うFortiGateのFQDN or グローバルIP
SSL-VPNに443以外を使う場合は適宜ポート番号を付けてください
ユーザー属性とクレームの「編集」をクリック
「新しいクレームの追加」から「username」を追加する
名前 | ソース属性 |
---|---|
username | user.userprincipalname |
既存設定の「users.group[SecurityGroup]」をクリックする
「グループ要求の名前をカスタマイズする」をチェックし名前を「group」に設定し「保存」する
「username」「group」があることを確認します。
この2つ以外は不要なので消しても良いみたいです。
証明書 (Base64)をダウンロードする
「FortiGate SSL VPNのセットアップ」に表示される3つのURLをメモする
ユーザーの作成とアプリの割り当て
接続に使用するユーザを作成し、アプリを割り当てます。
グループに対してアプリを割り当てることも可能ですが、AzureAD Premium(有料ライセンス)が必要になります。
ユーザーの作成
AzureADにユーザーを作成する
セキュリティグループの作成
ユーザー認証に使用するセキュリティグループ「FortiGateAccess」を作成し、ユーザーを追加します。
作成したグループの「オブジェクト ID 」を後ほどFortiGateへ設定します。
AzureADでセキュリティグループ「FortiGateAccess」を作成する
FortiGateの設定に使うので「オブジェクトID」をメモしておきます。
作成したグループにユーザーを追加する
FortiGateの設定
SAMLの設定
FortiGateにSSH接続し、下記コマンドを実行します。
config user saml edit azure set entity-id [SP 識別子] set single-sign-on-url [SP 応答URL] set single-logout-url [SP ログアウトURL] set idp-single-sign-on-url [IdP ログインURL] set idp-entity-id [IdP AzureAD識別子] set idp-single-logout-url [IdP ログアウトURL] set idp-cert [Base64 SAML 証明書名] set user-name username set group-name group end
[SP...][IdP...]は「AzureADの設定」でメモしたものに置き換えます。
注意点
[IdP ログアウトURL]は「https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0」となり、「?」を含みます。「?」はFortiGateで特別な文字として扱われるので、そのままでは入力できません。よって、「?」の直前まで入力した後、一度「Ctrl+V」を押します。すると「?」を入力できます。
グループ設定
AzureADで作成したグループ「FortiGateAccess」をFortiGateに設定します。
config user group edit FortiGateAccess set member azure config match edit 1 set server-name azure set group-name [オブジェクトID] next end next end
動作確認
FortiClientでの動作確認
公式サイトから、最新のFortiClientVPNをDLしてインストールします。
起動し、VPN接続設定をします。
「Enable Single Sign On(SSO) for VPN Tunnel」をチェックします。
VPNに接続します。
証明書のエラーが表示されるので「OK」します。
AzureADの認証画面が表示されるのでサインインします。
※接続途中にステータスが40%程度で停止した場合、FortiClientに隠れて証明書の確認ダイアログが表示されている場合があります。その場合、ダイアログを前面に表示し「OK」を押します。(初回のみ表示されると思われます。)