Fedora 19
 

FreeIPAで認証する
2013/07/15
 
ある特定のページに対してアクセス制限をかけ、認証にはFreeIPAサーバーを使うようにします。 よって、LAN内にFreeIPAサーバーが存在していることが前提です。
[1] まずは、FreeIPAサーバー側で、以下のようにHTTPサービスを登録しておきます。
# 書式 ⇒ ipa host-add (登録したいWebサーバー名)

[root@ipa ~]#
ipa host-add www.srv.world

-----------------------------
Added host "www.srv.world"
-----------------------------
  Host name: www.srv.world
  Principal name: host/www.srv.world@SRV.WORLD
  Password: False
  Keytab: False
  Managed by: www.srv.world

# 書式 ⇒ ipa service-add HTTP/(登録したいWebサーバー名)

[root@ipa ~]#
ipa service-add HTTP/www.srv.world

--------------------------------------------------
Added service "HTTP/www.srv.world@SRV.WORLD"
--------------------------------------------------
  Principal: HTTP/www.srv.world@SRV.WORLD
  Managed by: www.srv.world
[2] Webサーバー側の設定です。 まずはFreeIPAクライアントとしての設定をしておいてください。 その後以下の設定をします。
以下の例ではルートディレクトリ直下の ipa ディレクトリ配下を認証対象とします。アクセスはSSL経由を要求するようにします。
# 必要なモジュールをインストール

[root@www ~]#
yum -y install mod_ldap mod_auth_kerb
[root@www ~]#
kinit admin

Password for admin@SRV.WORLD:
# IPA admin パスワード
# Keytab を生成

[root@www ~]#
ipa-getkeytab -s dlp.srv.world -p HTTP/www.srv.world -k /etc/httpd/conf.d/keytab

Keytab successfully retrieved and stored in: /etc/httpd/conf.d/keytab
[root@www ~]#
chown apache. /etc/httpd/conf.d/keytab
[root@www ~]#
vi /etc/httpd/conf.d/auth_ipa.conf
# 新規作成

<Directory /var/www/html/ipa>
    SSLRequireSSL
    AuthName "IPA Authentication"
    AuthType Kerberos

    KrbServiceName HTTP
    KrbMethodK5Passwd On
    KrbSaveCredentials On
    KrbMethodNegotiate On
    KrbAuthRealms SRV.WORLD
    Krb5KeyTab /etc/httpd/conf.d/keytab

    AuthLDAPUrl ldap://10.0.0.30/dc=server,dc=world?krbPrincipalName
    Require valid-user
</Directory>

[root@www ~]#
systemctl restart httpd.service
[root@www ~]#
vi /var/www/html/ipa/index.html
# テストページ作成

<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Test Page for IPA Server Auth
</div>
</body>
</html>
  Webブラウザからテストページにアクセスしてみます。 すると設定通り認証を求められますので、FreeIPA に登録してあるユーザーで認証します。
  アクセスできました。
 
Tweet