Checkmk
to checkmk.com
Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

1. はじめに

この記事では、Secure Assertion Markup Language(SAML) によるログインの設定方法について説明します。

SAML は、ユーザーが実際に本人であることを外部アプリケーションやサービスに通知するための標準化された方法です。 SAML を使用すると、ユーザーを 1 回認証するだけで、その認証情報を複数のアプリケーションに伝達できるため、シングルサインオン (SSO) が可能になります。 いわゆる「サービスプロバイダ (SP)」と「ID プロバイダ (IdP)」間の接続と通信により、従業員は 1 回のログインでさまざまな web アプリケーションにアクセスすることができます。 SAML アーキテクチャでは、サービスプロバイダがアプリケーションを利用可能にし、ID プロバイダがユーザーのデジタル ID を管理します。

SAML は Checkmk の商業版でサポートされており、Checkmk の web インターフェイスで直接設定できます。 Checkmk はサービスプロバイダの役割を果たします。 たとえば、セットアップの章で説明したように、Entra ID はアイデンティティプロバイダの例です。

Tip

Microsoft Entra ID(略称:Entra ID)は、2023 年より Azure Active Directory(Azure AD)の新しい名称です。 ただし、この記事に含まれるスクリーンショットおよび設定ファイルの内容は、旧名称の Azure AD を引き続き使用しています。

Checkmk バージョン2.2.0 までは、代替手段として、SAML は Apachemod_auth_mellon モジュールによってサポートされていました。このモジュールは、Checkmk ソフトウェアの一部として提供されていました。 バージョン2.3.0 以降、mod_auth_mellon は Checkmk ソフトウェアには含まれていません。 SAML をCheckmk Rawユーザーとして使用する場合は、mod_auth_mellon を自分でインストールする必要があります。 これに基づく設定については、Checkmk Raw の章で説明しています。 ただし、弊社ではサポートは行っておりません

Tip

トランスポート暗号化 (TLS/SSL) に関するトピック全体は、単純なデモ実装の例にのみ含まれています。 独自の認証機関 (CA)および適切な証明書処理を備えた実稼働環境では、お客様のインフラストラクチャに応じていくつかの違いがあります。

2. Checkmk で SAML を使用する

セットアッププロセスのすべてのポイントを確認すると、ユーザーは Checkmk で SAML ログインを使用できるようになります。 ボタンのテキストは、以下で説明するようにカスタマイズできます。

Checkmk login with SAML button.

SAML によって認可されたユーザーは、Checkmk に初めてログインすると、同じ ID のユーザーが存在しない限り、自動的に Checkmk に作成されます。 同じ ID のユーザーがすでに存在する場合、現在のユーザー作成は拒否されます。

ユーザーデータは、ユーザーが Checkmk にログインするたびに同期されます。

SAML が機能するには、いくつかの前提条件を満たす必要があります。

2.1. サポートされているアルゴリズム

Checkmk は、IdP との通信に以下のアルゴリズムを受け入れます。

  • RSA-SHA256

  • RSA-SHA384

  • RSA-SHA512

  • ECDSA-SHA256

  • ECDSA-SHA384

  • ECDSA-SHA512

Checkmk 自体は、リクエストの署名に RSA-SHA256 を使用しています。

IdP が応答に上記のアルゴリズムを使用していない場合、その応答は Checkmk によって拒否されます。

3. SAML の設定

商業版で SAML を使用するには、まず IdP を設定する必要があります。この例では、Entra ID(2023 年までは Azure Active Directory と呼ばれていました)を使用します。 設定が完了すると、SP、つまり Checkmk に必要な情報が提供されます。

3.1. Entra ID へのログイン

Entra ID に Checkmk SAML サービスを登録する

次に、Checkmk SAML サービスを Entra ID に登録します。 これを行うには、Enterprise applications > Create your own application を呼び出します。

Creating your own application in Entra ID.

任意の、できれば意味のある名前(例:checkmk-saml )を割り当ててください。 Checkmk エージェントとの混同を避けるため、アプリケーションの名前を単にcheckmk としないことをお勧めします。

Integrate any other application you don’t find in the gallery (Non-gallery) オプションを選択し、Create ボタンをクリックします。

Entra ID の概要ページに、次の関数が作成されます。Single sign-on > SAML > Basic SAML Configuration

Overview of application data in Entra ID.

この時点で、Entra ID は以下の2つの追加情報を要求します:

  • Identifier (Entity ID)https://myserver.com/mysite/check_mk/saml_metadata.py 形式で、および

  • Reply URL (Assertion Consumer Service URL) 」を「https://myserver.com/mysite/check_mk/saml_acs.py?acs 」形式で入力してください。

その他のオプションは、デフォルト値のまま、または空のままにしてください。 特に、Basic SAML ConfigurationRelay State は変更しないでください。変更すると、SAML が機能しなくなります。

次に、Edit > Signing Option > Sign SAML assertion を呼び出して、応答および認証用の Entra ID を設定します。

SAML access data in Entra ID.

Entra ID から SAML 情報を取得する

次に、Entra ID に移動して、Checkmk に必要な SAML 情報を見つけます。

これは、Enterprise applications | All applications > Browse Microsoft Entra Gallery > checkmk-saml | SAML-based Sign-On ビュー(上記を参照)で確認できます。

  • SAML Certificates ボックスで、App Federation Metadata Url を見つけます。 これは、Checkmk で SAML を設定する次のセクションで必要になります。(Identity provider metadata)

  • Attributes & Claims ボックスをクリックすると、Checkmk のユーザー属性(メールアドレス、氏名など)のビューが表示されます。

View of user attributes in Entra ID.

3.2. Checkmk web インターフェイスで SAML を有効にする

先ほど取得した情報を使用して、Checkmk 側で SAML 接続を設定します。

必要に応じて、IdP から発行された TLS 証明書を、Setup > Global settings > Trusted certificate authorities for SSL に信頼済み証明書として追加してください。

次に、Setup > Users > SAML authentication を開きます。 そこで、Add connection を使用して、新しい接続の設定を開始します。

The SAML connection in Checkmk.

新しい接続に「Connection ID 」と「Name 」を割り当てます。Name は、後でCheckmk ログインボタンの名前付けに使用されます。

次に、Security ボックスで、Checkmk または独自の証明書を使用してアクセス接続を保護するかどうかを指定します。

Selecting the certificate for SAML.

独自の証明書を使用する場合は、Private key およびCertificate を指定する必要があります。 カスタム証明書は、サイトディレクトリの~/etc/ssl/saml2/custom/ に保存されます。

次に、[Connection ] ボックスの [Identity provider metadata ] に、前のセクションで説明したように選択した URL (App Federation Metadata URL など) を入力します。

Entering connection data.

または、Entra ID からメタデータ XML ファイルを直接ダウンロードし、上記のダイアログで、Identity provider metadata オプションにUpload XML file を使用してアップロードすることもできます。 これは、たとえば、Checkmk サーバーがインターネットにアクセスできない場合に便利です。 必須のCheckmk server URL には、Entra ID ではなく、通常 Checkmk にアクセスするために使用するアドレス(https://myserver.com など)を入力してください。

次に、Users ボックスにユーザーの詳細を入力する必要があります。

Entering user information.

この情報も、前のセクションで説明したように取得する必要があります。User ID attribute は、ユーザー ID など、一意である必要があることにご注意ください。 Checkmk では、Entra ID の完全なclaim name 、つまりhttp で始まる URL アドレスを、各エントリについて入力する必要があります。 たとえば、上記の例では、ユーザー ID はhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/userID です。

Checkmk で SAML を使用して認証するすべてのユーザーの責任を定義するために、各ユーザーを1 つ以上の連絡先グループに割り当てることができますContact groups で、マッピングを定義するためのさまざまなオプションがあります。

Roles を使用して、ユーザーをさまざまな役割に割り当てて、通常のユーザー、管理者などを定義することができます。

4. Checkmk Raw での SAML

Important

この章で説明する設定は、Checkmk の商業版にビルトインされているSAML 接続を使用できない Checkmk Raw ユーザーのみに関わります。 前提条件として、Checkmk ソフトウェアには付属していない Apache モジュールmod_auth_mellon を、プロジェクトページの説明に従ってシステム全体にインストールしておく必要があります。 このモジュールに基づく設定について、この章で説明します。 ただし、mod_auth_mellon による SAML 接続はサポートされなくなりました。

以下のセクションでは、Active Directory フェデレーションサービス (ADFS) を例として、すでに実行されている IdP に対するmod_auth_mellon の設定についてのみ説明します。 Checkmk 自体での接続は、ADFS の説明の最後のステップに限定されます。 Checkmk サーバーでは、mod_auth_mellon が認証のサービスプロバイダとして機能します。

4.1. Active Directory フェデレーションサービスへのログイン

前提条件

Active Directory を使用して Checkmk にログインするのは、基本的に比較的簡単です。 Active Directory フェデレーションサービス (ADFS) が ID プロバイダ (IdP) として機能し、Checkmk が SAML 認証を提供します。

このチュートリアルの前提条件は次のとおりです:

  • 機能する LDAP-AD 統合

  • IdP として機能する ADFS

  • SSL 対応の Checkmk サーバー

  • サポートされているオペレーティングシステム

セットアップは 3 つのステップで完了します。

  1. Apache の設定(結果:メタデータを含む XML ファイル)。

  2. ADFS の設定:Mellon メタデータを使用して、信頼先信頼を設定します。

  3. Checkmk 自体でのログインを有効にします。

Apache の設定

これは、もちろん、サイト独自の Apache サーバーの設定に関するものですので、まずそこにログインしてください。

root@linux# omd su mysite

次に、mod_auth_mellon のディレクトリを作成し、そのディレクトリにスイッチします。

OMD[mysite]:~$ mkdir etc/apache/mellon
OMD[mysite]:~$ cd etc/apache/mellon

次に、サーバーと、mellon というサフィックスを付けたサイト名を指定して、mellon_create_metadata を実行します。

OMD[mysite]:~/etc/apache/mellon$ mellon_create_metadata https://myserver "https://myserver/mysite/mellon"

このモジュールは、証明書 (.cert)、鍵 (.key)、および静的メタデータ (.xml) の 3 つのファイルを生成します。.xml ファイルは不要なので、削除できます。

OMD[mysite]:~/etc/apache/mellon$ rm *.xml

簡略化のため、キーファイルと証明書ファイルの名前を変更します。

OMD[mysite]:~/etc/apache/mellon$ mv .key mellon.key
OMD[mysite]:~/etc/apache/mellon$ mv .cert mellon.cert

次に、必要なメタデータを ADFS サーバー (ここではmyadfs) から直接取得し、idp-metadata.xml として保存します。

OMD[mysite]:~/etc/apache/mellon$ wget --no-check-certificate -O ./idp-metadata.xml https://myadfs/FederationMetadata/2007-06/FederationMetadata.xml

次に、idp-public-key.pem ファイルに保存されている ADFS サーバーの公開証明書が必要です。

OMD[mysite]:~/etc/apache/mellon$ echo -n | openssl s_client -connect myadfs:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -pubkey -noout > idp-public-key.pem

echo -n について疑問がある場合: これは、次の SSL セッションを終了するために使用されます。

Tip

たとえば、IdP サービスが証明書チェーンをチェックする場合、証明書は信頼ストアにアップロードする必要があります。 このトピックの詳細については、HTTPS の記事をご覧ください。

最後のステップとして、認証設定ファイル~/etc/apache/conf.d/auth.conf を次のバリエーションに置き換えます。もちろん、Checkmk サーバー (ここではmyserver) およびサイト (ここではmysite) を指定してください。 次の設定例では、LoadModule で始まる行のインストールディレクトリのパスは、使用しているディストリビューションによって異なる場合があることにご注意ください。

~/etc/apache/conf.d/auth.conf
# Set this to the Name of your Checkmk site, e.g.
#Define SITE
Define SITE mysite

# ServerName from listen-ports.conf needs to be overwritten here
# and being set to the URL of the real server. auth_mellon uses this
# to generate the needed URLs in the metadata
ServerName https://myserver

# Load the module.
<IfModule !mod_auth_mellon.c>

	LoadModule auth_mellon_module /usr/lib/apache2/modules/mod_auth_mellon.so

</IfModule>

# Only enable this for debugging purposes
#MellonDiagnosticsFile /opt/omd/sites/${SITE}/tmp/mellon_diagnostics.txt
#MellonDiagnosticsEnable On

<Location /${SITE}>

	# Use SAML auth only in case there is no Checkmk authentication
	# cookie provided by the user and whitelist also some other required URLs
	<If "! %{HTTP_COOKIE} =~ /^(.*;)?auth_${SITE}/ && \
		! %{REQUEST_URI} = '/${SITE}/check_mk/register_agent.py' && \
		! %{REQUEST_URI} = '/${SITE}/check_mk/deploy_agent.py' && \
		! %{REQUEST_URI} = '/${SITE}/check_mk/run_cron.py' && \
		! %{REQUEST_URI} = '/${SITE}/check_mk/restapi.py' && \
		! %{REQUEST_URI} = '/${SITE}/check_mk/automation.py' && \
		! %{REQUEST_URI} -strmatch '/${SITE}/check_mk/api/*' && \
		! %{REQUEST_URI} = '/${SITE}check_mk/ajax_graph_images.py' && \
		! %{QUERY_STRING} =~ /(_secret=|auth_|register_agent)/ && \
		! %{REQUEST_URI} =~ m#^/${SITE}/(omd/|check_mk/((images|themes)/.*\.(png|svg)|login\.py|.*\.(css|js)))# ">

		MellonIdPMetadataFile /opt/omd/sites/${SITE}/etc/apache/mellon/idp-metadata.xml
		MellonIdPPublicKeyFile /opt/omd/sites/${SITE}/etc/apache/mellon/idp-public-key.pem
		MellonSPCertFile /opt/omd/sites/${SITE}/etc/apache/mellon/mellon.cert
		MellonSPPrivateKeyFile /opt/omd/sites/${SITE}/etc/apache/mellon/mellon.key
		MellonEndpointPath "/${SITE}/mellon"
		MellonDefaultLoginPath "/${SITE}/check_mk/"

		Order allow,deny
		Allow from all

		MellonSecureCookie On
		MellonCookieSameSite None

		AuthType Mellon
		AuthName "Checkmk SAML Login"
		MellonEnable auth
		Require valid-user

		# Get Username
		# ADFS sends username as DOMAIN\username pair.
		# Checkmk just wants the username.
		RewriteEngine on
		RequestHeader set X-Remote-User "expr=%{REMOTE_USER}"
		RequestHeader edit X-Remote-User "^.*\\\(.*)$" "$1"

		# When SAML auth fails, show the login page to the user. This should only happen,
		# if e.g. the mellon cookie is lost/rejected or if the IDP is misconfigured.
		# A failed login at the IDP will not return you here at all.

    ErrorDocument 401 '<html> \
      <head> \
        <meta http-equiv="refresh" content="1; URL=/${SITE}/check_mk/login.py"> \
      </head> \
      <body> \
        SAML authentication failed, redirecting to login page. \
        <a href="/${SITE}/check_mk/login.py">Click here</a>. \
      </body> \
    </html>'

	</If>

	# This header is also needed after authentication (outside of the If clause)
	RequestHeader set X-Remote-User "expr=%{REMOTE_USER}"
	RequestHeader edit X-Remote-User "^.*\\\(.*)$" "$1"

</Location>

次に、Apache を再起動してください:

OMD[mysite]:~/etc/apache/mellon$ omd restart apache

最後に、動的に作成された Mellon メタデータを XML ファイルとしてダウンロードし、AD 管理にすぐにインポートできるようにします。

OMD[mysite]:~/etc/apache/mellon$ wget https://myserver/mysite/mellon/metadata -o metadata.xml

Active Directory の設定

ADFS で信頼関係を作成するには、次の手順を実行します:

ADFS インターフェースを起動します:

saml adfs 01

Add Relying Party Trust 」をクリックします:

saml adfs 02

オプションを「Claims aware 」のままにして、「Start」ボタンをクリックします。

saml adfs 03

次に、Import data on the relying party from a file を選択し、先ほどダウンロードしたXMLファイルを指定します:

saml adfs 04

AD FS Management の警告は無視して問題ありません。

saml adfs 05

Specify Display Name 」の下に、名前として「Checkmk 」を入力してください:

saml adfs 06

テストのためにChoose Access Control Policy の許可を割り当てる際には、まずPermit everyone を選択してください。後で、これをPermit specific group に変更してください。

saml adfs 07

以下の概要を確認してください:Ready to Add Trust:

saml adfs 08

最後に、Finish ダイアログを確認し、Configure claims issuance policy for this application:

saml adfs 09

先ほど作成した信頼する当事者を選択し、Edit Claim Issuance Policy…​ :

saml adfs 10

Add Rule…​ を使用して、次のダイアログで新しいルールを追加します。

saml adfs 11

最初のステップで、Select Rule Template (信頼関係)を選択し、Transform to Incoming Claim (信頼関係の詳細)を選択して確認します:

saml adfs 12

2 番目のステップで、Configure Rule で以下の値を設定します:

  • Incoming claim type:Windows account name

  • Outgoing claim type:Name ID

  • Outgoing name ID format:Transient Identifier

saml adfs 13

この手順で ADFS の設定も完了します。 これで、FS は Windows 認証から Checkmk の認証を導出できるようになりました。次の手順では、HTTP 要求によってユーザーを認証するように指示します。

Checkmk の設定

Checkmk の [Setup > General > Global Settings > User Interface > Authenticate users by incoming HTTP requests] の [Current settings ] で、[Activate HTTP header authentication ] オプションを有効にするだけです。

saml adfs cmk

4.2. その他のシステムに関する追加情報

Entra ID と mod_auth_mellon

Entra ID(2023 年までは Azure Active Directory と呼ばれていました)が IdP として機能する場合、設定手順にいくつかの違いがあります。たとえば、ユーザー名は書き換える必要なく直接指定できます。

以下のサンプル構成の事前要件:

以下の構成例では、LoadModule で始まる行のインストールディレクトリのパスは、使用しているディストリビューションによって異なる場合があることにご注意ください。

~/etc/apache/conf.d/auth.conf
#Set this to the Name of your Checkmk site, e.g.
# Define SITE mysite
Define SITE mysite

# ServerName from listen-ports.conf needs to be overwritten here
# and being set to the URL of the real server.
# auth_mellon uses this to generate the needed URLs in the metadata.
ServerName https://myserver

# Load the module.
<IfModule !mod_auth_mellon.c>

	LoadModule auth_mellon_module /usr/lib/apache2/modules/mod_auth_mellon.so

</IfModule>

# Only enable this for debugging purposes
# MellonDiagnosticsFile /opt/omd/sites/${SITE}/tmp/mellon_diagnostics.log
# MellonDiagnosticsEnable On

<Location /${SITE}>

	# Use SAML auth only in case there is no Checkmk authentication
	# cookie provided by the user and whitelist also some other required URLs.
   <If "! %{HTTP_COOKIE} =~ /^auth_${SITE}/ && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/register_agent.py' && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/restapi.py' && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/run_cron.py' && \
	! %{REQUEST_URI} = '/${SITE}/check_mk/automation.py' && \
        ! %{REQUEST_URI} -strmatch '/${SITE}/check_mk/api/*' && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/deploy_agent.py' && \
		! %{REQUEST_URI} = '/${SITE}check_mk/ajax_graph_images.py' && \
        ! %{QUERY_STRING} =~ /(_secret=|auth_|register_agent)/ && \
		! %{REQUEST_URI} =~ m#^/${SITE}/(omd/|check_mk/((images|themes)/.*\.(png|svg)|login\.py|.*\.(css|js)))# ">

        RequestHeader unset X-Remote-User
        MellonIdPMetadataFile /opt/omd/sites/${SITE}/etc/apache/mellon/idp-metadata.xml
        # Azure-AD-specific: Not needed because in metadata:
        #MellonIdPPublicKeyFile /opt/omd/sites/${SITE}/etc/apache/mellon/idp-public-key.pem
        MellonSPCertFile /opt/omd/sites/${SITE}/etc/apache/mellon/mellon.cert
        MellonSPPrivateKeyFile /opt/omd/sites/${SITE}/etc/apache/mellon/mellon.key
        MellonEndpointPath "/${SITE}/mellon"
        MellonDefaultLoginPath "/${SITE}/check_mk/"

		Order allow,deny
		Allow from all

		MellonSecureCookie On
		MellonCookieSameSite None

		AuthType Mellon
		MellonEnable auth
		require valid-user

        # Azure-AD-specific:
        # Get Username
        # If your assertion offers the username for Checkmk in an attribute you can set it directly as the remote user (REMOTE_USER):
        MellonUser "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
        RequestHeader set X-Remote-User "%{MELLON_http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name}e" env=MELLON_http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

        # When SAML auth fails, show the login page to the user. This should only happen, if e.g. the mellon cookie is lost/rejected or if the IDP is misconfigured.
        # A failed login at the IDP will not return you here at all.
        ErrorDocument 401 '<html> \
          <head> \
            <meta http-equiv="refresh" content="1; URL=/${SITE}/check_mk/login.py"> \
          </head> \
          <body> \
            SAML authentication failed, redirecting to login page. \
            <a href="/${SITE}/check_mk/login.py">Click here</a>. \
          </body> \
        </html>'

	</If>

	# Azure-AD-specific:
	# This header is also needed after authentication (outside of the If clause)
	RequestHeader set X-Remote-User "%{MELLON_http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name}e" env=MELLON_http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

</Location>

NetIQ Access Manager

NetIQ Access Manager が IdP として機能する場合、設定手順にいくつかの違いがあります。たとえば、ユーザー名は書き換える必要なく直接指定できます。

次の設定例では、LoadModule で始まる行のインストールディレクトリのパスは、使用しているディストリビューションによって異なる場合があることに注意してください。

~/etc/apache/conf.d/auth.conf

# Set this to the Name of your Checkmk site, e.g.# Define SITE mysite
# Define SITE mysite
Define SITE mysite

# ServerName from listen-ports.conf needs to be overwritten here
# and being set to the URL of the real server. auth_mellon uses this to generate the needed URLs in the metadata.

ServerName https://myserver.mydomain.tld

# Load the module.
<IfModule !mod_auth_mellon.c>

	LoadModule auth_mellon_module /usr/lib/apache2/modules/mod_auth_mellon.so

</IfModule>

# Only enable this for debugging purposes
#MellonDiagnosticsFile /opt/omd/sites/${SITE}/tmp/mellon_diagnostics.log
#MellonDiagnosticsEnable On

<Location /${SITE}>

	# Use SAML auth only in case there is no Checkmk authentication
	# Cookie provided by the user and whitelist also some other required URLs.

    <If "! %{HTTP_COOKIE} =~ /^auth_${SITE}/ && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/register_agent.py' && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/run_cron.py' && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/deploy_agent.py' && \
        ! %{REQUEST_URI} = '/${SITE}/check_mk/restapi.py' && \
        ! %{REQUEST_URI} -strmatch '/${SITE}/check_mk/api/*' && \
		! %{REQUEST_URI} = '/${SITE}check_mk/ajax_graph_images.py' && \
        ! %{QUERY_STRING} =~ /(_secret=|auth_|register_agent)/ && \
		! %{REQUEST_URI} =~ m#^/${SITE}/(omd/|check_mk/((images|themes)/.*\.(png|svg)|login\.py|.*\.(css|js)))# ">

        MellonIdPMetadataFile /opt/omd/sites/${SITE}/etc/apache/mellon/idp-metadata.xml
        # NetIQ-specific: Not needed because in metadata:
        #MellonIdPPublicKeyFile /opt/omd/sites/${SITE}/etc/apache/mellon/idp-public-key.pem
        MellonSPCertFile /opt/omd/sites/${SITE}/etc/apache/mellon/mellon.cert
        MellonSPPrivateKeyFile /opt/omd/sites/${SITE}/etc/apache/mellon/mellon.key
        MellonEndpointPath "/${SITE}/mellon"
        MellonDefaultLoginPath "/${SITE}/check_mk/"

		Order allow,deny
		Allow from all

		MellonSecureCookie On
		MellonCookieSameSite None

		AuthType Mellon
		MellonEnable auth
		require valid-user


        # NetIQ-specific:
        # Even though it is set as 'optional' in https://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf
        # a NetIQ Access Manager requires it to be set.
        # Specified in oasis link above - line 396
        MellonOrganizationName "<countrycode>" "<your organisation name>"
        # Specified in oasis link above - line 443 / 452
        MellonOrganizationURL  "<countrycode>" "<your organisation url>"
        # Specified in oasis link above - line 454
        MellonOrganizationDisplayName "<countrycode>" "<your organisation display name>"

        # NetIQ-specific:
        # If your assertion offers the username for Checkmk in an attribute you can set it directly as the remote user (REMOTE_USER)
        MellonUser "myusername"

        # NetIQ-specific:
        # If the assertion does contain the username (and was set to MellonUser) then you can set the header directly.
        RequestHeader set X-Remote-User "expr=%{REMOTE_USER}"

    # When SAML auth fails, show the login page to the user. This should only happen,
    # if e.g. the mellon cookie is lost/rejected or if the IDP is misconfigured.
    # A failed login at the IDP will not return you here at all.
        ErrorDocument 401 '<html> \
          <head> \
            <meta http-equiv="refresh" content="1; URL=/${SITE}/check_mk/login.py"> \
          </head> \
          <body> \
            SAML authentication failed, redirecting to login page. \
            <a href="/${SITE}/check_mk/login.py">Click here</a>. \
          </body> \
        </html>'

# This header is also needed after authentication (outside of the If clause)
RequestHeader set X-Remote-User "expr=%{REMOTE_USER}"

</Location>

5. 既存のユーザーを移行します

SAML を有効にすると、パスワードベースの接続から SAML 接続に既存のユーザーを移行することができます。 これを行うには、Setup > Users > Users のユーザー管理で、目的のアカウントをチェックします。 次に、Migrate selected users から移行を開始します。

List of users marked for migration.

中間ステップとして、任意の属性を削除することができます。

Dialog with user attributes that can be deleted.
このページでは