SAML認証

用語

  • Sp(Service Provider) : ここではFileBlogのことです。

  • Idp(Identity Provider) : Azure ADなどのユーザー認証の仕組みを提供するシステムまたはサービスのことです。

前提条件

FileBlogのSAML連携機能の使用には2つの要件を満たすことが必要です。

  1. Active Directoryドメインの環境でFileBlogサーバーがドメイン参加している。

    • FileBlogサーバーのネットワークドライブを検索対象にする場合、Active Directoryサーバーで委任許可の設定が必要です。

    • Active Directoryに登録されているユーザーアカウントでFileBlogにログインできることが必要です。

  2. Active Directoryのユーザーアカウントと一致する情報が、SAML認証を提供するIdP側に登録されている。

Active Directoryの設定

ドキュメントルートフォルダがネットワークのファイルサーバーである場合、ログインユーザーの代理でCIFSサービスを利用するための委任設定が必要です。

ドキュメントルートフォルダがFileBlogサーバーのローカルフォルダの場合は設定不要です。

設定方法については統合Windows認証の[Active Directoryサーバーの設定]欄を参照してください。

委任設定では、任意の認証プロトコルを使う」を選択します。「Kerberosのみを使う」は選択しません。

基本設定例

FileBlog(Sp)の設定[1]

  1. [管理ツール > 設定全般]を選択します。

../../../../_images/sa001.png
  1. [すべての設定 > WEBサーバー > 認証 > SAML認証]を選択します。

../../../../_images/sa002.png
  1. [enabled]にチェックを入れます。

  2. [EntityId]にFileBlogに接続するURLを指定します。

    例) https://servername.domain.jp/fileblog/
    
    • ユーザーが接続可能なURLを指定します。

    • servername.domain.jpの部分はピリオドを含まない単一ホスト名またはIPアドレスでもかまいません。

    • URLの末尾は/fileblog/にします。(末尾の / を必ず含めてください)

    • プロトコルは HTTP または HTTPS のいずれでもかまいません。

      • なおIdpによってはHTTPSが有効なSpでないと連携できない仕様の場合があります。

      • HTTPSにするにはサーバー証明書の設定が別途必要です。

  3. [保存する]を選択してサービスを再起動します。

  4. 再起動後 にWEBブラウザで[EntityId]に指定したURLに/samlを足したURLに接続します。

    • Sp側のメタデータファイル(xml形式)がダウンロードされます。

    例) https://servername.domain.jp/fileblog/saml
    

Idpの設定

  1. Idpの設定方法に従ってSpから取得したメタデータファイル(xml形式)をインポートします。

    • Idpによってはメタデータのインポート機能が備わっていません。その場合は手入力で各情報を設定してください。

    • 必要な情報はメタデータファイルに記載されています。

  2. 設定の完了後、Idpのメタデータファイル(XML形式)をエクスポート(ダウンロード)します。

FileBlog(Sp)の設定[2]

  1. [管理ツール > 設定全般 > すべての設定 > WEBサーバー > 認証 > SAML認証]を選択します。

  2. [IdpMetadataFile]にIdpから取得したメタデータファイル(xml形式)をインポートします。

../../../../_images/20230308-113235-641.png
  1. [保存する]を選択してサービスを再起動します。

動作確認

  1. [EntityId]に指定したURLに接続します。

  2. SAML認証フロー(シングルサインオン)を経てFileBlogのトップ画面が表示されれば成功です。

    • FileBlogにログインが成功してもドキュメントルートフォルダが表示されない場合は、Active Directoryの委任設定まわりに原因があることが多いです。

詳細設定

運用環境に応じて設定を行ってください。SAML認証を成功させるために必須の設定ではありません。

UpnTemplate

../../../../_images/20230314-151605-871.png
  • Idpとの認証成功後にFileBlogサーバー上でS4U(Windowsへのシングルサインオン)する際に利用するUserPrincipalNameの形式です。

  • Idpから提供されるNameId値(NameIdFormatで指定した値)が「userid@domain」形式と一致するようにします。

  • 例として、NameId値がドメイン名を含まない場合の設定です。(Windowsドメイン名FQDN形式:contso.local)

$(resource)@contso.local

NameIdFormat

../../../../_images/20230314-151830-672.png
  • Idpから認証成功後に提供されるNameId値(ユーザーの識別子)の形式です。

  • FileBlogはNameId値を用いてWindowsにシングルサインオンするため、原則は「userid@domain」の値を入手できる形式を選択します。

  • [UpnTemplate]とセットで設定します。

Certificate

../../../../_images/20230314-160139-151.png

次の動作を実現するにはSp側にX509形式の証明書が必要です。証明書は自己証明書で機能しますがIdp側の仕様に依存します。

  • SpからIdpへ送るSAMLリクエスト(AuthnRequest)を署名付きで送信する

  • シングルログアウトを行う

公開鍵はメタデータで公開され、秘密鍵は復号化/署名に使用されます。

  • Certificate:証明書ファイルをインポートします

  • Key:秘密鍵ファイルをインポートします

  • Password:証明書形式がpfxの場合にパスワードを登録します

PublicOrigin

../../../../_images/20230314-162239-737.png

ロード バランサーまたはリバースプロキシを使用する場合、HTTPリクエストのOriginがEntityId設定値のとおりにならないでSAML認証に失敗する可能性があります。このような場合にはPublicOriginをEntityIdと同じ値に設定して下さい。

AuthenticateRequestSigningBehavior

../../../../_images/20230314-162313-529.png

SpからIdpへのSAMLリクエスト(AuthnRequest)の署名動作を設定します。[Certificate]にて証明書を設定しているのに、AuthnRequestに署名が埋め込まれない(Idpから署名が不足していると拒絶された場合)、Alwaysに設定することで改善が期待できます。

  • IfIdpWantAuthnRequestsSigned:idpのmetadataにWantAuthnRequestsがtrueに設定されている場合に限り、AuthnRequestsに署名します。(既定値)

  • Always:常にすべてのAuthnRequestに署名します

  • Never:AuthnRequestに署名することはありません

LogonScript

../../../../_images/20230315-103546-116.png

Idpとの認証(ハンドシェイク)に成功後、Windowsへシングルサインオンする直前に実行されるスクリプトのパス(物理パス)です。原則として設定不要です。

フォーム認証を制限する

フォーム認証(ID/パスワード入力)を制限するとSAML認証でのみFileBlogにログインできるようになります。(SAML認証設定が完了してから必要に応じて設定してください)

  1. [管理ツール > 設定全般 > すべての設定 > WEBサーバー > 認証 > フォーム認証]を選択する

  2. [Enabled]のチェックをはずします。

../../../../_images/20230314-164024-927.png
  1. [保存する]を選択してサービスを再起動します。

ログインできるように設定を戻す(トラブルシューティング)

SAML認証設定の成功前にフォーム認証を制限すると、SAML認証設定が首尾よく動作しない場合にFileBlogにログインできなくなってしまいます。(ログイン方法がなくなってしまいます)

そのようなことに陥った場合には、SAML認証を解除してフォーム認証を許可してください。

  1. [管理ツール > 設定全般 > すべての設定 > Webサーバー > 認証 > SAML認証]で[Enabled]のチェックを外します。

  2. [管理ツール > 設定全般 > すべての設定 > Webサーバー > 認証 > フォーム認証]で[Enabled]にチェックを入れます。

  3. [保存する]を選択してサービスを再起動します。