windowsログインで認証されたのなら、webサービスへのログインはスルーしてほしいものです。

webサービスごとにログインアカウント/パスワードなんて覚えてられません。面倒以外何物でもない。

ここではSSOをapache webにも適用したいと思います。

webサイトを作る

kickstartを使って自動で最小構成のマシンを作成した
既にドメインに参加済みで krb5.keytab ファイルは下記のようになっている

[root@sso ~]# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 host/sso.sybyl.local@SYBYL.LOCAL (des-cbc-crc)
   2 host/sso.sybyl.local@SYBYL.LOCAL (des-cbc-md5)
   2 host/sso.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 host/sso.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 host/sso.sybyl.local@SYBYL.LOCAL (arcfour-hmac)
   2 host/SSO@SYBYL.LOCAL (des-cbc-crc)
   2 host/SSO@SYBYL.LOCAL (des-cbc-md5)
   2 host/SSO@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 host/SSO@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 host/SSO@SYBYL.LOCAL (arcfour-hmac)
   2 SSO$@SYBYL.LOCAL (des-cbc-crc)
   2 SSO$@SYBYL.LOCAL (des-cbc-md5)
   2 SSO$@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 SSO$@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 SSO$@SYBYL.LOCAL (arcfour-hmac)
[root@sso ~]#

keytabファイル

SSO向けとして、keytabファイルに追加でサービス記述子が「HTTP」のサービスプリンシパルを加えます。
ドメインコントローラにて作業します

[root@c ~]# /opt/samba/bin/samba-tool spn list sso$
sso$
User CN=SSO,CN=Computers,DC=sybyl,DC=local has the following servicePrincipalName:
         HOST/SSO
         HOST/sso.sybyl.local
[root@c ~]#

これに「HTTP」を加える

[root@c ~]# /opt/samba/bin/samba-tool spn add HTTP/sso.sybyl.local sso$
[root@c ~]# /opt/samba/bin/samba-tool spn list sso$
sso$
User CN=SSO,CN=Computers,DC=sybyl,DC=local has the following servicePrincipalName:
         HOST/SSO
         HOST/sso.sybyl.local
         HTTP/sso.sybyl.local
[root@c ~]#

次に、ssoサイトに戻って、既存のkrb5.keytabファイルを除いて、krb5.keytabを新調する

[root@sso ~]# mv /etc/krb5.keytab /etc/krb5.keytab.orig
[root@sso ~]# /usr/bin/net ads keytab create -Uadministrator%<adのパスワード>
[root@sso ~]# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 host/sso.sybyl.local@SYBYL.LOCAL (des-cbc-crc)
   2 host/sso.sybyl.local@SYBYL.LOCAL (des-cbc-md5)
   2 host/sso.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 host/sso.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 host/sso.sybyl.local@SYBYL.LOCAL (arcfour-hmac)
   2 host/SSO@SYBYL.LOCAL (des-cbc-crc)
   2 host/SSO@SYBYL.LOCAL (des-cbc-md5)
   2 host/SSO@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 host/SSO@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 host/SSO@SYBYL.LOCAL (arcfour-hmac)
   2 http/sso.sybyl.local@SYBYL.LOCAL (des-cbc-crc)
   2 http/sso.sybyl.local@SYBYL.LOCAL (des-cbc-md5)
   2 http/sso.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 http/sso.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 http/sso.sybyl.local@SYBYL.LOCAL (arcfour-hmac)
   2 http/SSO@SYBYL.LOCAL (des-cbc-crc)
   2 http/SSO@SYBYL.LOCAL (des-cbc-md5)
   2 http/SSO@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 http/SSO@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 http/SSO@SYBYL.LOCAL (arcfour-hmac)
   2 SSO$@SYBYL.LOCAL (des-cbc-crc)
   2 SSO$@SYBYL.LOCAL (des-cbc-md5)
   2 SSO$@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   2 SSO$@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   2 SSO$@SYBYL.LOCAL (arcfour-hmac)
[root@sso ~]#

これでhttpの入ったサービスプリンシパルが用意できた
*サービス記述子の大文字(HTTP)と小文字(http)の使い分けに注意

apache httpのインストール

apache httpのパッケージの他、kerberos認証のパッケージ(mod_auth_kerb)もインストールします

[root@sso ~]# yum install httpd mod_auth_kerb

mod_auth_kerbの設定ファイル(auth_kerb.conf)を作って、webサイトの一部分をsso部分にしてみます。

[root@sso ~]# vi /etc/httpd/conf.d/auth_kerb.conf
<Directory /var/www/html/private>
#  SSLRequireSSL
  AuthType Kerberos
  AuthName "Kerberos Login"
 
  KrbMethodNegotiate On
  KrbMethodK5Passwd Off
 
  KrbAuthRealms SYBYL.LOCAL
  KrbServiceName http/sso.sybyl.local
  Krb5KeyTab /etc/krb5.keytab
  require valid-user
</Directory>
[root@sso ~]#

keytabファイルはapache稼働ユーザが参照できるようにパーミッションを変更する
ACLで変更した

[root@sso ~]# cd /etc
[root@sso etc]# getfacl krb5.keytab
# file: krb5.keytab
# owner: root
# group: root
user::rw-
group::---
other::---
 
[root@sso etc]#
[root@sso etc]# setfacl -m u:apache:r krb5.keytab
[root@sso etc]# getfacl krb5.keytab
# file: krb5.keytab
# owner: root
# group: root
user::rw-
user:apache:r--
group::---
mask::r--
other::---
 
[root@sso etc]#

そして、稼働させます。

[root@sso ~]# systemctl start httpd
[root@sso ~]# systemctl enable httpd

*journalctl -u httpdにて動作確認をします

コンテンツ作成とテスト

極めて簡単なコンテンツを用意してテストしてみます。

[root@sso ~]# echo "It's work." > /var/www/html/index.html
[root@sso ~]# mkdir /var/www/html/private
[root@sso ~]# echo "now kerberos authentication work" > /var/www/html/private/index.html

Firefox

ブラウザ依存で動かないときがある。特にFirefoxの場合。
ブラウザで「about:config」を開き、SSOサイトのURLを登録する必要があります。
登録する箇所は

のどちらかに。
下図のような感じで、「値」にアクセスしようとしているURLをカンマ(,)区切りで複数指定します。
ここでは「sso.sybyl.local」と「sso」でアクセスしえるので「http://sso,http://sso.sybyl.local」としている。
2017y08m11d_155717730.png

アクセス制限

SSOで既にユーザに対するアクセス制限があるようなものであるが、
特定のサイトからのみアクセスを許可する制限も加えてみたいとする
単に

<Directory /var/www/html/private>
  AuthType Kerberos
  AuthName "Kerberos Login"
 
  KrbMethodNegotiate On
  KrbMethodK5Passwd Off
 
  KrbAuthRealms SYBYL.LOCAL
  KrbServiceName http/sso.sybyl.local
  Krb5KeyTab /etc/krb5.keytab
  require valid-user
 
  require ip 192.168.0.0/24
  require all denied
</Directory>

とすると、認証が掛からない。192.168.0.0/24のマシンでアクセスなら全て許可されてしまう。
そのため $_SERVER['PHP_AUTH_USER']  の値も取れません。

っでどうするかになるのだが、一応Allow/Denyで対応できた

<Directory /var/www/html/private>
 (略)
  require valid-user
 
  Order Deny,Allow
  Allow from 192.168.0.
  Deny from all
  Satisfy all
</Directory>

エラー

krb5_get_init_creds_password() failed: Client not found in Kerberos database

最新の60件
2025-02-17 2025-02-15 2025-02-14 2025-02-12 2025-02-03 2025-02-02 2025-02-01 2025-01-27 2025-01-26 2025-01-25 2025-01-24 2025-01-23 2025-01-20 2025-01-13 2025-01-12 2025-01-08 2024-12-30 2024-12-29 2024-12-22 2024-12-20 2024-12-17 2024-12-15 2024-12-14 2024-12-12 2024-12-11 2024-12-10 2024-12-09 2024-12-08 2024-11-28 2024-11-22 2024-11-15 2024-11-14 2024-11-12 2024-11-06 2024-11-05 2024-11-04 2024-11-02 2024-11-01 2024-10-28 2024-10-27 2024-10-23 2024-10-18 2024-10-17 2024-10-15 2024-10-14

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-05-30 (水) 00:13:09