SAML認証
用 語
用 語 |
説 明 |
---|---|
Sp(Service Provider) |
ここではFileBlogのことです。 |
Idp(Identity Provider) |
Microsoft Entra(Azure AD)などのユーザー認証の仕組みを提供するシステムまたはサービスのことです。 |
前提条件
FileBlogのSAML連携機能の使用には2つの要件を満たすことが必要です。
Active Directoryドメインの環境でFileBlogサーバーがドメイン参加している。
FileBlogサーバーのネットワークドライブを検索対象にする場合、Active Directoryサーバーで委任許可の設定が必要です。
Active Directoryに登録されているドメインユーザーアカウントでFileBlogにログインできることが必要です。
ドメインユーザーアカウントと一致する情報が、SAML認証を提供するIdP側に登録されている。
Active Directoryの設定
ドキュメントルートフォルダがFileBlogサーバーのネットワークドライブである場合、ログインユーザーの代理でCIFSサービスを利用するための委任設定が必要です。
ドキュメントルートフォルダがFileBlogサーバーのローカルフォルダの場合は設定不要です。
設定方法については統合Windows認証の[Active Directoryサーバーの設定]欄を参照してください。
委任設定では、「任意の認証プロトコルを使う」を選択します。「Kerberosのみを使う」は選択しません。
基本設定例
FileBlog(Sp)の設定[1]
[管理ツール > 設定全般 > WEBサーバー > 認証 > SAML認証]を選択します。
[WebServer/Authentication/Saml/enabled]を選択してチェックを入れるとSAML認証機能が有効になります。
[WebServer/Authentication/Saml/Scope > 変更]でSAML認証を許可する範囲を定義します。
[WebServer/Authentication/Saml/EntityId]にFileBlogに接続するURLを指定します。
例) https://servername.domain.jp/fileblog/
ユーザーが接続可能なURLを指定します。
servername.domain.jp
の部分はピリオドを含まない単一ホスト名またはIPアドレスでもかまいません。URLの末尾は
/fileblog/
にします。(末尾の/
を必ず含めてください)プロトコルはHTTPまたはHTTPSのどちらでもかまいません。
なおIdpの仕様によってはHTTPSが有効なSpでないと連携できない場合があります。
HTTPSにするにはサーバー証明書の設定が必要です。
[保存する]を選択してサービスを再起動します。
再起動後 にWEBブラウザで[EntityId]に指定したURLに
/saml
を足したURLに接続します。Sp側のメタデータファイル(xml形式)がダウンロードされます。
例) https://servername.domain.jp/fileblog/saml
Idpの設定
Idpの設定方法に従ってSpから取得したメタデータファイル(xml形式)をインポートします。
Idpによってはメタデータのインポート機能が備わっていません。その場合は手入力で各情報を設定してください。
必要な情報はメタデータファイルに記載されています。
設定の完了後、Idpのメタデータファイル(XML形式)をエクスポート(ダウンロード)します。
FileBlog(Sp)の設定[2]
動作確認
[EntityId]に指定したURLに接続します。
SAML認証フロー(シングルサインオン)を経てFileBlogのトップ画面が表示されれば成功です。
FileBlogにログインが成功してもドキュメントルートフォルダが表示されない場合は、Active Directoryの委任設定まわりに原因があることが多いです。
詳細設定
運用環境に応じて設定を行ってください。SAML認証を成功させるために必須の設定ではありません。
[管理ツール > 設定全般 > WEBサーバー > 認証 > SAML認証]で各設定項目が表示されます。
FileBlog(Sp)の設定[3]
WebServer/Authentication/Saml/UpnTemplate
Idpとの認証成功後にFileBlogサーバーでS4U(Windowsへのシングルサインオン)する際に利用するUPN(UserPrincipalName)の形式です。
Idpから提供されるNameId値(NameIdFormatで指定した値)が「userid@domain」形式と一致するようにします。
例として、NameId値がドメイン名を含まない場合の設定です。(Windowsドメイン名FQDN形式:
contso.local
)$(resource)@contso.local
WebServer/Authentication/Saml/NameIdFormat
Idpから認証成功後に提供されるNameId値(ユーザーの識別子)の形式です。
FileBlogはNameId値を用いてWindowsにシングルサインオンするため、原則は「userid@domain」の値を入手できる形式を選択します。
[UpnTemplate]とセットで設定します。
証明書
次の動作を実現するにはSp側にX509形式の証明書が必要です。
FileBlog(Sp)からIdpへのSAMLリクエスト(AuthnRequest)を署名付きで送信する
シングルログアウトを行う
証明書は自己署名証明書でも機能しますがIdp側の仕様に依存します。公開鍵はメタデータで公開され、秘密鍵は復号化/署名に使用されます。
WebServer/Authentication/Saml/PublicOrigin
ロードバランサーやリバースプロキシを経由すると、HTTPリクエストのOriginがEntityId設定値どおりにならずSAML認証に失敗する可能性があります。このような場合は[PublicOrigin]を[EntityId]と同じ値に設定します。
WebServer/Authentication/Saml/AuthenticateRequestSigningBehavior
SpからIdpへのSAMLリクエスト(AuthnRequest)の署名動作を設定します。
[管理ツール > 設定全般 > WEBサーバー > 認証 > SAML認証 > 証明書 > AuthenticateRequestSigningBehavior]
[Certificate]にて証明書を設定しているのに、AuthnRequestに署名が埋め込まれない(Idpから署名が不足していると拒絶される)場合、[Always]に設定することで改善が期待できます。
値 |
説 明 |
---|---|
IfIdpWantAuthnRequestsSigned |
idpのmetadataにWantAuthnRequestsがtrueに設定されている場合に限り、AuthnRequestsに署名します。(既定値) |
Always |
常にすべてのAuthnRequestに署名します。 |
Never |
AuthnRequestに署名することはありません。 |
WebServer/Authentication/Saml/LogonScript
Idpとの認証(ハンドシェイク)に成功後、Windowsへシングルサインオンする直前に実行されるスクリプトのパス(物理パス)です。原則として設定不要です。
フォーム認証を制限する
フォーム認証を制限するとSAML認証でのみFileBlogにログインできるようになります。(SAML認証設定が完了してから必要に応じて設定してください)
フォーム認証は完全に無効化しないで、FileBlogサーバーのローカル接続(127.0.0.1)やローカルユーザーでは有効にしておくことをおすすめします。
トラブルシューティング
SAML認証設定の成功前にフォーム認証を制限すると、SAML認証設定が期待どおりに動作しない場合にFileBlogにログインできなくなってしまいます。(ログイン方法がなくなってしまいます)
そのようなときはSAML認証を解除してフォーム認証を許可してください。
[管理ツール > 設定全般 > すべての設定 > Webサーバー > 認証 > SAML認証]で[Enabled]のチェックを外します。
[管理ツール > 設定全般 > すべての設定 > Webサーバー > 認証 > フォーム認証]で[Enabled]にチェックを入れます。
[保存する]を選択してサービスを再起動します。