の検索結果 :

×

会員登録 お問い合わせ

Kerberos シングル サインオン (SSO) のセットアップ ガイド

ケルベロスは 暗号ベースの認証プロトコル アプリケーションへのアクセスを保護します。 このプロトコルは、安全でないネットワーク上で安全な認証を提供するように設計されています。 Kerberos の背後にある重要なアイデアは、パスワードがインターネット経由で送信されるのを防ぎながらユーザーを認証することです。


WordPress 向けの簡単な LDAP/Active Directory 統合 ビデオ.



ケルベロス用語:

ケルベロス: Kerberos は、シングル サインオン (SSO) の概念をサポートする認証プロトコルです。 HTTP の場合、Kerberos のサポートは通常、「SPNEGO」認証メカニズムという用語を使用して提供されます。

ケルベロスレルム: 認証用の管理ドメインは、レルムという用語で示されます。 その目的は、認証サーバーがユーザー、ホスト、またはサービスを認証できる場合の制限を定義することです。 これは、認証を行うためにユーザーとサービスが同じレルムのメンバーである必要があることを意味するものではありません。XNUMX つのオブジェクトが異なるレルムに属しているにもかかわらず、信頼接続を介して接続されている場合でも、認証は行われます。

校長: Kerberos システムでは、Kerberos プリンシパルは、Kerberos が Kerberos 対応サービスにアクセスするためのチケットを発行できる個別の ID を表します。 「/」区切り文字は、プリンシパル名を構成するさまざまなコンポーネントを区切るために使用されます。 「@」文字を使用すると、レルムを名前の最後の要素として識別できます。 レルムが指定されていない場合、プリンシパルは krb5.conf ファイルに設定されているデフォルトのレルムに属していると想定されます。

クライアント/ユーザー: ユーザーに代わってサービスにアクセスするプロセス。レルム内には複数のクライアントまたはユーザーが存在する場合があります。

サービス: ユーザーがアクセスしたいもの。

SSO: シングル サインオンとは、ユーザーが一度ログインするだけで、ユーザー認証を完了した後、さまざまなサービスにアクセスできるようにする手順です。 プライマリ サービスにログインした後、ユーザーが許可を与えたすべてのサービスへの認証が必要になります。 SSO には多くの利点があります。その XNUMX つは、パスワードやその他の認証システムを使用して ID を繰り返し検証する面倒なプロセスを回避できることです。

GSSAPI: プログラムは、アプリケーション プログラミング インターフェイス (API) である Generic Security Service Application Program Interface(GSSAPI) を通じてセキュリティ サービスにアクセスできます。 IETF 標準は GSSAPI です。 それ自体ではセキュリティは提供されません。 代わりに、GSSAPI 実装はセキュリティ サービス プロバイダーによって提供されます。 実装の詳細を上位レベルのアプリケーションから隠す、不透明なメッセージ (トークン) の交換は、GSSAPI アプリケーションの際立った特性です。

スプネゴ: クライアント サーバー ソフトウェアは、「spen-go」と呼ばれることが多い、シンプルで保護された GSSAPI ネゴシエーション メカニズムを使用して、セキュリティ テクノロジの選択をネゴシエートします。 クライアント アプリケーションがリモート サーバーにログインする必要があるが、どちらの側も他方がサポートしている認証プロトコルが不明な場合は、SPNEGO が使用されます。 擬似メカニズムは、プロトコルを使用して利用可能な共通 GSSAPI メカニズムを識別し、XNUMX つを選択し、その後のすべてのセキュリティ アクションをその選択したメカニズムに割り当てます。

KDC: キー配布センターは、チケットと一時セッション キーを提供するネットワーク サービスです。 またはそのサービスのインスタンス、またはそのサービスが実行されるホスト。 KDC は、最初のチケット要求とチケット認可要求の両方を処理します。 初期チケット部分は、認証サーバー (またはサービス) と呼ばれることもあります。 チケット認可チケット部分は、チケット認可サーバー (またはサービス) と呼ばれることもあります。



Active Directory ドメイン上のリソースへのクライアントのアクセスは、Windows NT LAN Manager (NTLM) として知られるチャレンジ/レスポンス認証プロトコルを使用して認証できます。 クライアントがドメイン関連サービスへのアクセスを要求すると、サービスはクライアントにチャレンジを送信し、認証トークンを使用して数学的演算を実行し、その結果をサービスに提供するように指示します。 結果はサービスによって検証されることも、ドメイン コントローラー (DC) によって検証されることもあります。 DC またはサービスがクライアントの応答が正確であることを確認した場合、サービスはクライアントへのアクセスを許可します。
NTLM は、ユーザーがログイン中に基礎となる認証要素を XNUMX 回だけ入力できるため、一種のシングル サインオン (SSO) です。


NTLM 認証プロトコルのシングル サインオン (SSO) フロー

  • その 交渉_メッセージ クライアントからサーバーに送信される NTLM ネゴシエート メッセージを定義します。 このメッセージにより、クライアントはサポートされている NTLM オプションをサーバーに指定できます。
  • その チャレンジ_メッセージ サーバーからクライアントに送信される NTLM チャレンジ メッセージを定義します。このメッセージは、サーバーがクライアントに自身の身元を証明するようチャレンジするために使用されます。
  • その 認証_メッセージ CHALLENGE_MESSAGE がクライアントによって処理された後に、クライアントからサーバーに送信される NTLM 認証メッセージを定義します。

注意事項とお問い合わせ - Kerberos SSO LDAP ログイン シングル サインオン

注意: Windows 認証では、クライアントとサーバーの構成に応じて、Kerberos 認証プロトコルまたは NTLM 認証プロトコルのいずれかを使用します。



Kerberos と呼ばれるコンピュータ ネットワーク セキュリティ プロトコルは、インターネットなどの信頼できないネットワークを介した XNUMX つ以上の信頼できるホスト間のサービス要求を認証します。

  • メッセージ A: クライアント/ユーザーの秘密キーを使用して暗号化されたクライアント/TGS セッション キー。
  • メッセージ B: Ticket-Granting-TGS の秘密鍵を使用して暗号化されたチケット。
  • メッセージ C: メッセージ B の TGT と要求されたサービスの ID で構成されます。
  • メッセージ D: クライアント/TGS セッション キーを使用して暗号化された認証子。
  • メッセージ E: サービスの秘密キーを使用して暗号化されたクライアントからサーバーへのチケット。
  • メッセージ F: クライアント/サーバー セッション キーはクライアント/TGS セッション キーで暗号化されます。
  • メッセージ G: 新しいオーセンティケータ。クライアント ID、タイムスタンプが含まれ、クライアント/サーバー セッション キーを使用して暗号化されます。
  • メッセージ H: クライアント/サーバー セッション キーを使用して暗号化された、クライアントのオーセンティケーターで見つかったタイムスタンプ。


受験資格:

  1. Active Directory のサービス アカウント/ユーザー アカウント。
  2. アカウントのパスワードは次のように設定されている必要があります。 有効期限が切れていない.

ステップ 1: AD ドメイン コントローラーで Keytab ファイルを作成します。

  • AD ドメイン コントローラーでコマンド プロンプトを管理者モードで開き、次のコマンドを実行して Keytab ファイルを作成します。
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL

注意事項とお問い合わせ - Kerberos SSO LDAP ログイン シングル サインオン

注意: 確保 Example.COM 大文字にする必要があります。 SPN を持つユーザーがすでに存在する場合は、そのユーザーを使用して新しいユーザーを作成します。 Kerberos 原則では大文字と小文字が区別されます。 keytab コマンドを実行する前に、大文字と小文字の違いを確認してください。


  • コマンドのコンポーネントは次のとおりです。
サーバーのホスト名: これは、サーバー上でホストされているサイトのホスト名です。
例.COM: これは、Active Directory ドメイン名です。
ユーザー名: これは、Active Directory のサービス アカウントです。
パスワード: 上記で使用したサービスアカウントのパスワードです。
パス: キータブ ファイルを保存するローカルの場所へのパス。 (C:\Temp\spn.keytab)
注意事項とお問い合わせ - Kerberos SSO LDAP ログイン シングル サインオン

注意: 上記のコマンドは keytab ファイルを作成します。 WordPress サイトがホストされているクライアント サーバーに配置する必要があります。 Apache を実行しているユーザーは、このファイルへの完全なアクセス権を持っている必要があります。 ユーザーには keytab ファイルに対する権限が必要です。


  • [Active Directory ユーザーとコンピュータ] を開き、上部のメニューから [Active Directory ユーザーとコンピュータ] を選択します。 表示 >> 高度な機能.
  • サービスアカウントを開き、属性エディタタブに移動し、 サービスプリンシパル名 SPN エントリを確認します。
  • に移動します 代表団 タブには何も表示されないことに注意してください。
  • 選択する 任意のサービスへの委任に関してこのユーザーを信頼します (Kerberos のみ).
Windows Active Directory の Kerberos サービス SSO 委任

  • 詳しくはこちら Apply.
  • コピー キータブ ファイルを AD ドメイン コントローラーから Apache でホストされている Web サーバーに送信します。
  • Kerberos キータブ ファイルにアクセス許可を与えます。
chmod 644 etc/apache2/spn.keytab

ステップ 2: Web サーバーに Kerberos クライアント ライブラリをインストールします。

  • 端末で次のコマンドを使用して、Kerberos クライアント ライブラリをインストールします。
sudo apt-get install krb5-user

ステップ 3: Apache のモジュールをインストールします。


注意事項とお問い合わせ - Kerberos SSO LDAP ログイン シングル サインオン

注意: Ubuntu/Debian の最新リリースでは、 mod_auth_kerb は廃止され、次のものに置き換えられました mod_auth_gssapi.


  • Apache モジュールは 2 つありますが、インストールする必要があるのはそのうちの 1 つだけです。

    1. Apache 用の mod-auth-gssapi モジュール。
    2. Apache 用の mod_auth_kerb モジュール。(非推奨)


1. Apache 用の mod-auth-gssapi モジュールをインストールします。

  • 次のコマンドを使用してインストールします libapache2-mod-auth-gssapi Debian ベースのシステム上の Apache 用モジュール:
sudo apt-get -y install libapache2-mod-auth-gssapi

OR


2. Apache 用の mod_auth_kerb モジュールをインストールします (非推奨):

  • 次のコマンドを使用して、Apache の auth_kerb モジュールを debian ベースのシステムにインストールします。
sudo apt-get install libapache2-mod-auth-kerb
  • auth_kerb モジュールをインストールしたら、次のコマンドを使用して有効にする必要があります。
a2enmod auth_kerb
  • 有効にした後、 Apacheを再起動する 有効にします。


手順 4: Kerberos 構成ファイルで Active Directory ドメインを構成します。

  • を開いて編集します krb5.conf ファイルにソフトウェアを指定する必要があります。
    Linuxのkrb5.confファイルへのパスは C:/etc/krb5.conf 他のUNIXベースのシステムでは :/etc/krb5/krb5.conf ファイル
  • 次の設定スニペットを krb5.conf 前述のセクションの下にあるファイル:
[libdefaults]
default_realm = EXAMPLE.COM
# ...
# ...
[realms]
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 置き換える ADドメインコントローラIP/DNSをあなたのIP/DNSに 住所。 Example.COM 大文字にする必要があります。
置き換える Example.COM Active Directory ドメイン名を使用し、このサーバーから AD ドメイン コントローラーのポート 88 にアクセスできることを確認します。


  • ファイルを保存します。

手順 5: サイト ディレクトリの Kerberos SSO を構成します。

  • 以下に保存されている強制された仮想ホスト構成ファイルを編集します。 /etc/apache2/sites-enabled ディレクトリ または、000-default.conf という名前のデフォルトの仮想ホスト ファイル
イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 使用する Apache モジュールに応じて、ディレクトリに次のセクションを追加します。 例えば: 「mod_auth_kerb」 or 「mod_auth_gssapi」.


  • 1.サイトのディレクトリに次のセクションを追加します。 mod_auth_gssapi.
<IfModule !mod_auth_gssapi.c>
    LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>
<Directory "/placeholder">
    AuthType GSSAPI
    AuthName "Kerberos auth"
    GssapiAllowedMech krb5
    GssapiBasicAuth On
    GssapiCredStore keytab:<PATH TO KEYTAB>
    GssapiLocalName On
    BrowserMatch Windows gssapi-no-negotiate
    Require valid-user
</Directory>

OR


  • 2.サイトのディレクトリに次のセクションを追加します。 mod_auth_kerb (非推奨)。
<Directory "/placeholder">
    AuthType Kerberos
    KrbAuthRealms EXAMPLE.COM
    KrbServiceName HTTP/<Server Host Name>
    Krb5Keytab <PATH TO KEYTAB>
    KrbMethodNegotiate on
    KrbMethodK5Passwd on
    require valid-user
</Directory>

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 確保 Example.COM 大文字にする必要があります。
上記の構成のコンポーネントは次のとおりです。


例.COM: これは、krb5.conf で構成されている Active Directory ドメインです。
キータブへのパス: このサーバー上のキータブへのアクセス可能なパス。 (etc/spn.keytab)
  • この構成後、変更を有効にするために Apache を再起動する必要があります。

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 設定が完了したら、 ここをクリック Kerberos SSO 用にブラウザを設定します。
Kerberos/NTLM SSO 構成をテストするには、次のようにします。 ここをクリック.
エラーのトラブルシューティングを行うには、 ここをクリック.


ステップ 1: AD ドメイン コントローラーで Keytab ファイルを作成します。

  • AD ドメイン コントローラーでコマンド プロンプトを管理者モードで開き、次のコマンドを実行して Keytab ファイルを作成します。
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 確保 Example.COM 大文字にする必要があります。 Kerberos 原則では大文字と小文字が区別されます。 keytab コマンドを実行する前に、大文字と小文字の違いを確認してください。


  • コマンドのコンポーネントは次のとおりです。
サーバーのホスト名: これは、サーバー上でホストされているサイトのホスト名です。
例.COM: これは、Active Directory ドメイン名です。
ユーザー名: これは、Active Directory のサービス アカウントです。
パスワード: 上記で使用したサービスアカウントのパスワードです。
パス: キータブ ファイルを保存するローカルの場所へのパス。 (C:\Temp\spn.keytab)
イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 上記のコマンドは、 キータブファイル. WordPress サイトがホストされているクライアント サーバーに配置する必要があります。Apache を実行しているユーザーには、このファイルへのフル アクセス権が必要です。ユーザーには、keytab ファイルへのアクセス許可が必要です。


  • コピー キータブファイル AD ドメイン コントローラから Apache でホストされている Web サーバーへ。
  • Kerberos キータブ ファイルにアクセス許可を与えます。
chmod 644 etc/httpd/spn.keytab

ステップ 2: Web サーバーに Kerberos クライアント ライブラリをインストールします。

  • 端末で次のコマンドを使用して、Kerberos クライアント ライブラリをインストールします。
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: CentOS の最新リリースでは、 mod_auth_kerb は廃止され、次のものに置き換えられました mod_auth_gssapi.


ステップ 3: Apache のモジュールをインストールします。

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: Ubuntu/Debian の最新リリースでは、 mod_auth_kerb は廃止され、次のものに置き換えられました mod_auth_gssapi.


  • Apache モジュールは 2 つありますが、インストールする必要があるのはそのうちの 1 つだけです。

    1. Apache 用の mod-auth-gssapi モジュール。
    2. Apache 用の mod_auth_kerb モジュール (非推奨)。


1. Apache 用の mod-auth-gssapi モジュールをインストールします。

  • 次のコマンドを使用してインストールします libapache2-mod-auth-gssapi モジュール Debian ベースのシステム上の Apache の場合:
sudo apt-get -y install libapache2-mod-auth-gssapi

OR


2. Apache 用の mod_auth_kerb モジュールをインストールします (非推奨):

  • 次のコマンドを使用してインストールします auth_kerb モジュール Red Hat ベースのシステム上の Apache 用。 (RHEL の最新リリースでは mod-auth-gssapi モジュールを使用します)
yum install mod_auth_kerb

手順 4: Kerberos 構成ファイルで Active Directory ドメインを構成します。

  • を開いて編集します krb5.conf ファイルにソフトウェアを指定する必要があります。
    krb5.conf ファイルへのパス RHEL は C:/etc/krb5.conf です。
  • 次の設定スニペットを krb5.conf 前述のセクションの下にあるファイル:
  • に移動します [libdefaults] セクションに以下を追加します。
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true

  • に移動します [レルム] セクションを作成し、以下を追加します。
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}

  • に移動します [ドメイン_レルム] セクションを作成し、以下を追加します。
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 置き換える 広告ドメインコントローラーのIP/DNS IP/DNS アドレスを入力します。 確実にEXAMPLE.COM 大文字にする必要があります。
置き換える Example.COM Active Directory ドメイン名を使用し、このサーバーから AD ドメイン コントローラーのポート 88 にアクセスできることを確認します。


  • ファイルを保存します。

手順 5: Kerberos 構成ファイルで Active Directory ドメインを構成します。

  • 強制されたホスト構成ファイルを編集する /etc/httpd/conf/httpd.conf
  • サイトのディレクトリに次のセクションを追加します。 mod_auth_gssapi
LoadModule auth_gssapi_module modules/mod_auth_gssapi.so
<Directory "/placeholder">
    AuthType GSSAPI
    AuthName "Kerberos auth"
    GssapiBasicAuth On
    GssapiCredStore keytab:<PATH TO KEYTAB>
    GssapiLocalName On
    Require valid-user
</Directory>

OR


  • サイトのディレクトリに次のセクションを追加します。 mod_auth_kerb (非推奨)。
<Directory "/placeholder">
    AuthType Kerberos
    KrbAuthRealms EXAMPLE.COM
    KrbServiceName HTTP/<Server Host Name>
    Krb5Keytab <PATH TO KEYTAB>
    KrbMethodNegotiate on
    KrbMethodK5Passwd on
    require valid-user
</Directory>

  • 上記の構成のコンポーネントは次のとおりです。
キータブへのパス このサーバー上のキータブへのアクセス可能なパス。 (etc/apache2/spn.keytab)
"/プレースホルダー" ドキュメントルートへのパス
  • この構成後、変更を有効にするために Apache を再起動する必要があります。

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 設定が完了したら、 ここをクリック Kerberos SSO 用にブラウザを設定します。
Kerberos/NTLM SSO 構成をテストするには、次のようにします。 ここをクリック.
エラーのトラブルシューティングを行うには、 ここをクリック.



  • コマンドプロンプトを開く 管理者モード.
  • 追加するには次のコマンドを実行します サービス プリンシパル名 (SPN) サービス アカウント用。
イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: Web サイトが http://machinename および http://machinename.domain.com で応答する必要があるとします。 これらのアドレスをサービス アカウントの SPN 属性で指定する必要があります。


Setspn -S http/<computer-name>.<domain-name> <domain-user-account>

例: C:\Users\Administrator> setspn -S HTTP/machinename.domain.com service_account

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: ここでの「machinename.domain.com」はコンピュータ名です。 AD サービスを実行している Windows サーバー上で解決可能であることを確認してください。


  • 次のコマンドを実行して、これが正しく設定されているかどうかを確認します。
setspn -l domain or service_account

例: C:\Users\Administrator> setspn -l service_account または C:\Users\Administrator> setspn -l domain_name

Windows IIS サーバーで Kerberos SSO 認証用のサービス プリンシパル名 (SPN) エントリを設定する

  • 結果にはリストが表示されます http/マシン名.ドメイン.com
  • [Active Directory ユーザーとコンピュータ] を開き、上部のメニューから [Active Directory ユーザーとコンピュータ] を選択します。 表示 >> 高度な機能.
  • サービスアカウントを開いて、 属性エディタ タブで、 サービスプリンシパル名 を確認するには SPNエントリ.
  • に移動します 代表団 タブには何も表示されないことに注意してください。
  • 選択する 任意のサービスへの委任に関してこのユーザーを信頼します (Kerberos のみ).
RHEL、CentOS、Ubuntu、Fedora システムの Kerberos シングル サインオンのための Kerberos サービス委任

  • 詳しくはこちら Apply.
  • Video Cloud Studioで IISマネージャ Windows 認証を有効にする Web サイトをクリックします。
  • ダブルクリック 認証.
Kerberos SSO を有効にするためにサイトの Windows 認証設定を構成する Windows IIS マネージャー

  • 認証セクションでは、匿名認証のみがデフォルトで有効になっていることがわかります。IISは常に匿名認証を実行しようとするため、 匿名認証を無効にする の三脚と Windows認証を有効にする.
構成されたアプリケーションで Kerberos SSO の Windows IIS マネージャーから Windows 認証を有効にします。

  • 上の右クリック Windows認証 とをクリックしてください プロバイダ.
インターネット インフォメーション サービス IIS マネージャー Windows 認証プロバイダー リスト

  • 次のウィンドウが表示されます。 "交渉する" プロバイダーリストの一番上に表示されます。
Windows IIS マネージャーにより、Windows 認証プロバイダーが Kerberos プロトコルを使用して SSO をシングル サインオンできるようになります

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: デフォルトでは、Negotiate と NTLM の XNUMX つのプロバイダーが使用可能です。 Negotiate は、最初の認証方法として Kerberos を使用するコンテナーであり、認証が失敗した場合は NTLM が使用されます。 したがって、Negotiate がプロバイダーのリストの最初に来る必要があります。


  • ソフトウェアの制限をクリック Ok ウィンドウを閉じます。
  • 作成したSPNアカウントからIISアプリケーションプールを起動するように構成するには、 アプリケーションプール アプリケーション プール ウィンドウを開きます。
  • ドメインを右クリックし、リストから 詳細設定.
Kerberos SSO を有効にするための Windows インターネット インフォメーション サービス (IIS) マネージャー アプリケーション プール サイトの詳細設定

  • 「プロセスモデル」の「詳細設定」ウィンドウで、 アイデンティティ.
Windows IIS マネージャー アプリケーション プールの詳細設定から ID を構成して Kerberos SSO を有効にする

  • アプリケーションプールIDで、 カスタムアカウント とをクリックしてください セッションに アイデンティティを設定するボタン。
  • からそれを変更します アプリケーションプールID 〜へ \.

例: ドメイン.com\サービス_アカウント

Windows 上の Kerberos SSO は、IIS マネージャーのアプリケーション プール ID 設定からカスタム アカウントを構成します

  • に行きます 構成エディター.
Windows IIS マネージャー構成エディターに移動して、Web サイトで Kerberos / NTLM 認証を有効にします。

  • ドロップダウンから、選択します system.webServer > セキュリティ > 認証 > windowsAuthentication.
useAppPoolCredentials を構成して Windows IIS サーバーの Kerberos 認証を構成します

  • 前日比 useAppPoolCredentials を True に設定する。 と useKernelMode を False に設定する.
イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: useAppPoolCredentials を True に設定すると、IIS がドメイン アカウントを使用してクライアントからの Kerberos チケットを復号化できるようになります。


  • 詳しくはこちら Apply.
  • IISサーバーを再起動します。
  • Fiddler を使用して HTTP トラフィックを監視することで、Web サイトで Kerberos 認証が使用されていることを確認できます。

フィドラーを起動し、ブラウザを起動して目的の Web サイトにアクセスします。 ウィンドウの左側にある Web サイトへのアクセスの行を見つけます。 ウィンドウの右側から「検査」タブを選択します。 「認可ヘッダー (ネゴシエート) には Kerberos チケットが含まれているようです。」という行から、IIS Web サイトでの認証に Kerberos が使用されていることは明らかです。

Kerberos チケットは、Kerberos SSO プロセス中の認証ヘッダーに含まれます

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 設定が完了したら、 ここをクリック Kerberos SSO 用にブラウザを設定します。
Kerberos/NTLM SSO 構成をテストするには、次のようにします。 ここをクリック.
エラーのトラブルシューティングを行うには、 ここをクリック.



  • コマンドプロンプトを開く 管理者モード.
  • 追加するには次のコマンドを実行します サービス プリンシパル名 (SPN) サービス アカウント用。
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>

例: C:\Users\Administrator> setspn -S HTTP/マシン名.ドメイン.com サービスアカウント


イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意:ここでの「machinename.domain.com」はコンピュータ名です。 AD サービスを実行している Windows サーバー上で解決可能であることを確認してください。


  • 次のコマンドを実行して、これが正しく設定されているかどうかを確認します。
setspn -l domain\service_account
  • 結果にはリストが表示されます http/マシン名.ドメイン.com
  • [Active Directory ユーザーとコンピュータ] を開き、上部のメニューから [Active Directory ユーザーとコンピュータ] を選択します。 表示 >> 高度な機能.
  • サービスアカウントを開いて、 属性エディタ タブで、 サービスプリンシパル名 を確認するには SPNエントリ.
  • に移動します 代表団 タブには何も表示されないことに注意してください。
  • 選択する 任意のサービスへの委任に関してこのユーザーを信頼します (Kerberos のみ).
IISサーバーでのWindows認証用のKerberos

  • 詳しくはこちら Apply.
  • 詳細 apache モジュールをダウンロードします。
  • コピー mod_authnz_sspi.so from Apache24 > モジュール フォルダーを作成し、モジュール (C:\xampp\apache\modules) ディレクトリに配置します。
  • コピー ssipkgs.exe からのファイル Apache24 -> bin フォルダーを作成し、Web サーバー上の Xampp Apache フォルダー (....\xampp\apache\bin) の bin フォルダーに配置します。
  • httpd.conf (....\xampp\apache\conf) を開き、次のコード行を LoadModule セクションに配置します。
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so
  • 次のモジュールのコメントが解除されていることを確認してください。
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so

  • また、 LDAP拡張機能を有効にする.
  • (.....\xampp\apache\conf\httpd.conf) から httpd.conf ファイルを開きます。
    に移動し、#Require all Grants の後に以下の行を貼り付けます。
<Directory "...../xampp/htdocs">
......
......
#Require all granted
AllowOverride None Options None
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
Require valid-user
</Directory>

  • 再起動する Apacheサーバー.

イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: 設定が完了したら、 ここをクリック Kerberos SSO 用にブラウザを設定します。
Kerberos/NTLM SSO 構成をテストするには、次のようにします。 ここをクリック.
エラーのトラブルシューティングを行うには、 ここをクリック.




イントラネット サイトの LDAP ログイン - Kerberos SSO シングル サインオン

注意: クライアント側の構成により、それぞれのブラウザーが SPNEGO を使用してブラウザーの Kerberos 認証をネゴシエートできるようになります。 エンド ユーザーのシステム上のブラウザが Kerberos 認証をサポートするように構成されていることを確認する必要があります。



すべてのブラウザの一般的な Kerberos SSO 構成:

  • 「コントロールパネル」に移動し、「 ネットワークとインターネット >> インターネット オプション.
  • これにより、「インターネットのプロパティ」ウィンドウが開きます。 クリック セキュリティ >> ローカル イントラネット >> サイト.
インターネット オプション設定を使用してブラウザを Kerberos 認証用に構成する

  • その後、をクリックします 詳細ボタン.
Chrome および Internet Explorer のインターネット オプションから Kerberos SSO の詳細設定を構成する

  • この Web サイトをゾーンに追加します セクションに、SSO でログインする Web サイトの URL を追加します。
Kerberos SSO のインターネット オプションからイントラネット ゾーンの Web サイトを構成する

  • 詳しくはこちら [ツール] > [インターネット オプション] > [セキュリティ] > [ローカル イントラネット] > [カスタム レベル].
  • 「ユーザー認証」オプションまで下にスクロールし、選択します。 イントラネットゾーンでのみ自動ログオン.
Kerberos 認証プロトコルを使用したイントラネット ゾーンへの自動ログオン

  • ソフトウェアの制限をクリック Ok ボタンをクリックしてブラウザを再起動します。


上記の設定を完了すると、Internet Explorer、Google Chrome、Apple Safari のブラウザ設定を行う必要はありません。

Internet Explorer:

デフォルトでは、一般的なブラウザ構成設定が適用され、Internet Explorer にはそれ以上の追加設定は必要ありません。

Google Chromeの:

デフォルトでは、一般的なブラウザ構成設定が適用され、Google Chrome にはそれ以上の追加設定は必要ありません。

Mozilla Firefoxの:

  • Mozilla Firefox ブラウザを開いて次のように入力します。 約:設定 アドレスバーに。
  • 検索する network.negotiate-auth.trusted-uris 設定名を入力し、 をクリックします。 編集。 Kerberos HTTP SPNEGO によって保護されている Web サーバーのホスト名またはドメインを入力します。 複数のドメインとホスト名をカンマで区切って指定します。
Mozilla Firefox を Kerberos SSO (シングル サインオン) 用に構成する

  • 検索する network.automatic-ntlm-auth.trusted-uris 設定名を入力し、「編集」をクリックします。 Kerberos HTTP SPNEGO によって保護される Web サーバーのホスト名またはドメインを入力します。 複数のドメインとホスト名をカンマで区切って指定します。
Mozilla Firefox の Kerberos 認証設定を構成する

  • 詳しくはこちら OK そしてブラウザを再起動してください。

Apple Safari:

Windows 上の Safari は、追加の設定を行わなくても SPNEGO をサポートします。 SPENGO のサブメカニズムとしてケルベロスと NTLM の両方をサポートします。



時間同期:

Kerberos プロトコルでは、クライアントとサーバーの時間が一致している必要があります。クライアントのシステム クロックがサーバーのシステム クロックと一致しない場合、認証は失敗します。 システム クロックを同期する最も簡単な方法は、ネットワーク タイム プロトコル (NTP) サーバーを使用することです。



コマンドで検証:

keytab と Kerberos の構成を確認するには、次のコマンドを実行します。

  1. クリスト: klist コマンドは、Kerberos 資格情報キャッシュまたはキー テーブルの内容を表示します。 このコマンドを使用すると、有効なチケットを取得したかどうかを確認できます。
  2. klist -t -k etc/apache2/spn.keytab: etc/apache2/spn.keytab キーテーブル内のすべてのエントリをタイムスタンプとともにリストします。
  3. klist -ek /etc/apache2/spn.keytab: セッションキーとチケットの暗号化タイプを表示し、キーテーブル内のエントリをリストします。
  4. kinit -V -kt /etc/apache2/spn.keytab -p HTTPS/ webserver.yourdomain.com @YOURDOMAIN.COM: keytab ファイルを使用して Kerberos 認証を検証します。
  5. kdestroy -A: Linux でこのコマンドを使用すると、ローカル マシン上の Kerberos トークンをリセットできます。 このコマンドは、以前の Kerberos チケットを破棄します。
  6. klist パージ: Windows でこのコマンドを使用すると、ローカル マシン上の Kerberos トークンをリセットできます。 このコマンドは、以前の Kerberos チケットを破棄します。
  7. KRB5_TRACE=/dev/stdout kinit -kt /etc/krb5.keytab HTTP/≶サーバーホスト名>: Linux Web サーバーでこのコマンドを使用すると、キータブ ファイルを使用して Kerberos チケットを取得し、Kerberos トレースを有効にして Kerberos 認証プロセスのデバッグに関する詳細情報を取得できます。


テスト構成:

  • SSO設定をテストするには、 test.php WordPress ルート ディレクトリ内のファイル。
  • 以下の行を入力します。
<?php
var_dump($_SERVER);
?>
  • ファイルを保存し、Web ブラウザでアクセスします。 が表示されます。 $_SERVERコンテンツ.
  • 検索する "REMOTE_USER」であり、現在ログインしているユーザー名が含まれている必要があります。
イントラネット サイトの LDAP ログイン Kerberos SSO

注意: 削除してください test.php 設定を確認した後、ファイルを確認してください。このファイルには貴重な情報が含まれています。


  • 各ドメインに個別のキータブを作成し、それらを ktutil ツールとマージします。
ktutil
ktutil: read_kt <keytab_filename_1>
ktutil: read_kt <keytab_filename_2>
ktutil: read_kt <keytab_filename_3>
ktutil: write_kt spn.keytab
ktutil: quit
  • 以下のコマンドでマージを確認します。
klist -k spn.keytab
  • krb5.conf を構成します。

krb5.conf ファイルには、5 つ以上の Kerberos レルムの KDC および管理サーバー、現在のレルムのデフォルト値、Kerberos レルムへのホスト名のマッピングなどの Kerberos 構成情報が含まれています。 複数のドメインの場合、認証が機能するためには、krbXNUMX.conf ファイルをさまざまなドメイン/ドメイン レルムに関する情報で更新する必要があります。



最も一般的なエラー メッセージは次のとおりです。


  • kinit: Pre-authentication failed: Invalid argument while getting initial credentials
    or
    GSS ERROR gss_accept_sec_context(): [Unspecified GSS failure. Minor code may provide more information (Request ticket server HTTP/<Server Host Name>@EXAMPLE.COM kvno x enctype rc4-hmac found in keytab but cannot decrypt ticket)]
    rc4 暗号化タイプは、AD 環境では依然として頻繁に使用されていますが、RHEL-8.3 ではすでにデフォルトで無効になっています。 以下の例を参照して、キータブ ファイルに暗号化タイプを追加できます。
    例: ktutil
    addent -password -p HTTP/<Server Host Name>@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
    wkt spn.keytab.

    ことを確認してください Kerberos AES 256 ビット暗号化 ユーザーにサポートされている 「アカウント」 設定を行います。

    Kerberos krbtgt プロパティ


  • Unspecified GSS failure. Minor code may provide more information (Clock skew too great)
    or
    kinit: krb5_get_init_creds: Too large time skew
    ケルベロスは時間に非常に敏感です。 Active Directory と Web サーバーのホスト上のクロックが同一であることを確認します。 ドメイン コントローラーの XNUMX つを、クライアント コンピューターの NTP サーバーとして機能するように設定します。

  • gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied) /etc/apache2/spn.keytab に対するファイル システムのアクセス許可が間違っています。つまり、Web サーバーの Linux ユーザーが読み取ることができません。
    ファイルシステムの権限を変更するには、chmod 644 /etc/apache2/spn.keytab を使用します。

  • gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found). /etc/apache2/spn.keytab にサービス プリンシパル (HTTP/webserver.yourdomain.com @YOURDOMAIN.COM の可能性があります) がありません。

  • Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration. gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error) Web サイトが IE の「ローカル イントラネット」ゾーンに存在しないか、IE が正しく構成されていません。「認証で Kerberos の代わりに NTLM が使用される」を参照してください。

  • gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ). etc/apache2/spn.keytab の kvno またはマシンのパスワードが間違っています。 正しい情報を使用してキータブを再作成します。
    ワークステーション上のローカル Kerberos チケット キャッシュに問題があります。Kerbtray.exe を使用してチケット キャッシュを削除し、IE で Web サイトを再度開きます。

  • kinit: KDC has no support for encryption type while getting initial credentials /etc/apache2/krb5.conf ファイルの libdefaults セクションでデフォルトの暗号化タイプを変更します。 default_tgs_enctypes とdefault_tkt_enctypes を構成に追加します。

  • [libdefaults]
    default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
    default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
    kinit: krb5_get_init_creds: Error from KDC: CLIENT EXPIRED
    or
    kinit: Client's entry in database has expired while getting initial credentials
    Kerberos アカウントはもうアクティブではありません。 アカウントの資格情報を更新する必要があります。

  • kinit: krb5_cc_get_principal: No credentials cache file found
    or
    kinit: krb5_get_init_creds: Error from KDC: CLIENT_NOT_FOUND
    kinit コマンドの実行時に、間違ったドメインがターゲットになりました。 ドメイン名を確認してください。大文字である必要があります。EXAMPLE.COM

  • kinit : Cannot find KDC for requested realm while getting initial credentials /etc/apache2/krb5.conf ファイルには、Active Directory ドメイン名 (.EXAMPLE.COM) が含まれていません。

  • kinit: Preauthentication failed while getting initial credentials Kerberos パスワードを誤って入力したことが原因です。もう一度お試しください。または、システムの時計が原因です。date コマンドが 5 分以内の正確な時刻を返すことを確認してください。

  • kinit: Client not found in Kerberos database while getting initial credentials Kerberos プリンシパルは、ローカル システム上のユーザー名と異なる場合があります。

  • kinit: Client's entry in database has expired Kerberos パスワードを変更する必要があります。


その他のよくある質問➔

はい、既存の LDAP ユーザーを Kerberos サービス プリンシパルとして使用できます。 ただし、このユーザーのパスワードは無期限に設定されている必要があります。 アプリケーションはこのアカウントを Kerberos サービス プリンシパルおよび対応するキータブとして使用して Kerberos チケットを取得するため、このアカウントがどのユーザーにも使用されていないことを確認してください。

Kerberos におけるすべての認証は、クライアントとサーバーの間で行われます。 したがって、Kerberos サービスのサービス チケットを受け取るエンティティは、Kerberos 用語では「Kerberos クライアント」と呼ばれます。 ユーザーは多くの場合クライアントとみなされますが、どのプリンシパルもクライアントになる可能性があります。
キー配布センター (略して KDC) は、通常「Kerberos サーバー」と呼ばれます。 認証サービス (AS) とチケット認可サービス (TGS) は両方とも KDC によって実装されます。 すべてのプリンシパルに接続されているすべてのパスワードは KDC に保存されます。 このため、KDC は可能な限り安全であることが不可欠です。
「アプリケーション サーバー」という語句は、多くの場合、クライアントが Kerberos チケットを使用した認証中に対話するために使用する Kerberos ソフトウェアを指します。 アプリケーション サーバーの例としては、Kerberos Telnet デーモンがあります。

これは、認証に Kerberos ではなく NTLM プロトコルが使用されている場合に発生します。
これは、次のような複数の理由で発生する可能性があります。

  • ドメインに参加しているマシンを使用して Web サイトにアクセスしているかどうかを確認してください。
  • LDAP サーバーと Web サーバーの間で時間が同期されていることを確認してください。
  • ブラウザの設定とインターネット オプションが Kerberos SSO 用に構成されているかどうかを確認します。
  • それでもこの問題が解決しない場合は、お気軽にお問い合わせください。




 ご返答ありがとうございます。 すぐにご連絡させていただきます。

何か問題が発生しました。 もう一度質問を送信してください

できるだけ早くご連絡いたします!


ADFS_sso ×
こんにちは!

助けが必要? 私たちはここにいます!

対応