web-dev-qa-db-ja.com

複数のWindowsドメイン用のLinuxSSO

Apacheサーバーと同じADドメインのWindowsユーザー向けにApacheにSSOを正常に実装しました:ADドメイン= example.comLinuxサーバー= linux.example.com KDC = ad.example.com

ユーザーがログインしているアプリケーションではユーザー名の@ example.com部分を削除する必要があるため、httpd.confでKrbLocalUserMappingをONに設定しました。

ここで、ブランチオフィスのユーザーもアプリケーションにログインできるようにしたいのですが、ユーザーは別のドメイン= branchs.example.comから来ています。両方のドメインは信頼できる関係にあります。

Branchs.example.comのユーザーがログインしようとすると、「内部サーバーエラー」が表示され、Apacheエラーログに「Krb5_aname_to_localname()がプリンシパル[email protected]のマッピングが見つかりませんでした」と表示されます。

私の推測では、サブドメインbranchs.example.comからのユーザーは、ユーザー名のドメイン部分が削除されていません。

何をどこで変更する必要がありますか(おそらくkrb5.conf?)。ブランチサブドメイン用に個別のキータブを生成する必要がありますか?

また、任意に再起動できない本番サーバーなので、krb5.confの内容を変更した後、どのサービスを再起動する必要がありますか?

3

私はあなたと同じ問題にぶつかりました、そして このスレッド のおかげで、私は答えを見つけました!

_mod_auth_kerb_設定で2番目の(信頼できる)レルムをオンにし、適切なものをキータブに配置した後、2番目のドメインのユーザーでサインオンしようとすると、httpdログに次のようなエラーが表示されていました。

_[auth_kerb:notice] [pid 1234] [client X.X.X.X:12345] krb5_aname_to_localname() found no mapping for principal [email protected]
_

良いニュースは、私はそれを解決したということです!以下の詳細...


まず、Apache HTTPD構成で、次のようなものが必要です。

_# Use this one for both Examples and Branches together
KrbAuthRealms EXAMPLE.COM BRANCHES.EXAMPLE.COM

# Strip the realm from the username
KrbLocalUserMapping On
_

これにより、_mod_auth_kerb_は、メインドメインレルムまたはブランチレルムのいずれかからユーザーを受け入れ、ユーザー名からレルムを削除するように指示されます。つまり、_[email protected]_はadminに移動し、_[email protected]_はguestに移動します

次に、MIT kerberosと仮定して、_/etc/krb5.conf_ファイルを編集し、プリンシパルをユーザー名にマップする方法を指示する必要があります。さまざまな歴史的な理由から、これはlibdefaultsセクションは、ご想像のとおりです。レルムごとのセクションでも実行されないため、私は気になりました。代わりに、_auth_to_local_セクションの_[realm]_エントリで実行されます。デフォルトのレルム。

デフォルトでは、krb5_aname_to_localname() libkrb5関数は、デフォルトのレルムからレルムを削除し、それ以外の場合はそのままにします。したがって、ブランチレルムからレルムを削除するように指示するエントリを追加する必要があります。 (より複雑なルールも可能です。詳細については、_krb5.conf_のマニュアルページを参照してください)

したがって、構成は次のようになります。

_[libdefaults]
  default_realm = EXAMPLE.COM

[realms]
   EXAMPLE.COM = {
     kdc = dc.example.com
     admin_server = dc.example.com
     auth_to_local = RULE:[1:$1@$0](^.*@BRANCHES\.EXAMPLE\.COM)s/@.*//
     auth_to_local = DEFAULT
   }
   BRANCHES.EXAMPLE.COM = {
     kdc = dc.branches.example.com
     admin_server = dc.branches.example.com
   }
_

_BRANCHES.EXAMPLE.COM_マッピングルールがそのレルムではなく、デフォルトのレルムであるメインの_EXAMPLE.COM_レルムに存在することに注意してください。


また、任意に再起動できない本番サーバーなので、krb5.confの内容を変更した後、どのサービスを再起動する必要がありますか?

変更後にApacheHTTPDサービスのみを再起動する必要があります

1
Gagravarr