Flash Playerのバージョンをレジストリの値から取得 / 制限ユーザでインストール可能な最新のFlash Playerインストールファイル(MSI)を作る方法 / ActiveDirectoryのKerberos認証を使ってWebサービスにシングルサインオンする環境を構築する
投稿日: 2007年11月29日 更新日: 2017年07月22日
Flash Playerのバージョンをレジストリの値から取得
下記レジストリキーに保存されている。
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion
実際に確認できたバージョンは下記。
8,0,24,0
9,0,24,0
9,0,28,0
9,0,47,0
但し古いバージョンのFlashでは上記レジストリキーが存在しないらしい。
確認したバージョンは下記。(上記レジストリキーが存在しないマシンで、Flash Playerのバージョンテストを行った結果)
7,0,19,0
8,0,22,0
この結果から、どうやら8,0,22,0以前は上記レジストリキーが存在しないらしい。
制限ユーザでインストール可能な最新のFlash Playerインストールファイル(MSI)を作る方法
通常、制限ユーザ(Usersグループのユーザ)でFlash Playerのインストールファイル(install_flash_player_active_x.msi)を実行すると「管理者でインストールしなさい」みたいなエラーが出てインストールできない。
これはMSIの事前チェックが働いているためで、MSIのメタ情報を編集することで回避可能。
具体的には下記を用意する。
- 配布用のFlash Playerインストールファイル(install_flash_player_active_x.msi)
- Orca
Orcaというのは「Microsoft製のMSI編集ツール」で、Platform SDK等に含まれるOrca.msiを使ってインストールできる。
このOrcaを使って下記を削除する。
「LaunchCondition」テーブルの「AdminUser」
これで作業完了。一般ユーザでも起動可能なインストールファイルが出来上がり。
これで例えばActiveDirectoryのグループポリシーオブジェクトのソフトウェア配布を使うことで、制限ユーザにも最新のFlash Playerを配布することが可能となります。
ActiveDirectoryのKerberos認証を使ってWebサービスにシングルサインオンする環境を構築する
目的
- ユーザ名/パスワードを入力することなく、WEBシステムにログインする環境を構築。
技術的には「統合Windows認証」と呼ばれる方式で上記環境が構築可能。
Webサーバ
- ホスト/ドメイン名はwww.example.comとする
- HTTPサーバとしてApacheを使用
- ApacheでKerberos認証を行うため、mod_auth_kerbを使用
- Kerberos認証を行うために時刻同期、DNSを設定
- 先日構築したVMWare上のLinux検証環境上に構築
KDCサーバ
- ホスト/ドメイン名はdc.example.comとする
- Windows Server 2000/2003を使用
- ActiveDirectoryは構築済み
- ActiveDirectoryドメインはdomain.example.co.jpとする
- DNSサーバとして稼働済み
クライアント
- ActiveDirectoryドメインに参加済み
Webサーバに時刻同期を設定
Kerberos認証を行うためには、時刻が同期されていることが必須条件となる。
そのため、まずはNTPクライアントをインストール。
# yum install ntp
また、VMWareと少し前のLinuxとの組み合わせ固有の問題によりNTP同期しても時刻がずれる。下記設定で回避可能なので設定しておく。
/boot/grub/grub.confを編集して「clock=pit nosmp noapic nolapic」を追加する。
kernel /boot/kernel-2.6.14-gentoo-r5 root=/dev/sda3 clock=pit nosmp noapic nolapic
最後にドメインサーバと時刻同期する。
ntpdate dc.example.com
WebサーバにDNSを設定
ドメインコントローラをDNSサーバとして利用する。
/etc/resolve.confにドメインコントローラのIPアドレスを記述。
ドメインコントローラのDNSサーバに、www.example.comのホスト名の正引き、逆引きともに設定する。
WebサーバにApacheのインストール
# cd /usr/local/src
# wget http://www.meisei-u.ac.jp/mirror/apache/dist/httpd/httpd-2.0.61.tar.gz
# tar xvfz httpd-2.0.61.tar.gz
# cd httpd-2.0.61
# ./configure \
--enable-so \
--enable-dav_fs \
--enable-dav \
--enable-rewrite \
--enable-ssl \
--enable-deflate
# make
# make install
起動スクリプトを設置
# cp /usr/local/apache2/bin/apachectl /etc/init.d/apache
起動スクリプト中(2行目以降に)に下記を追記
# chkconfig: 345 85 15
# description: Apache HTTP Server.
起動スクリプトを登録
# chkconfig --add apache
iptablesで80番ポートを開ける。
# system-config-securitylevel-tui
Apacheの起動ユーザ/グループを登録する。
# groupadd -g 80 httpd
# useradd -g httpd -u 80 httpd -s /bin/nologin
設定ファイル(/usr/local/apache2/conf/httpd.conf)に上記ユーザを記述。
User httpd
Group httpd
Apacheを起動する。
# /etc/init.d/apache start
KDCサーバにプリンシパルを登録
OU「Unix Services」を作成し、配下にユーザ「unixhttp」を作成。
- ユーザはパスワードを変更できない
- パスワードを無制限にする
- このアカウントにDES暗号化を使う
ktpass.exe(サポートツールに収録)を使用して、「unixhttp」をサービスプリンシパルとして構成。および、キーテーブルファイルを作成。
C:\Program Files\Support Tools>ktpass -out http.keytab ^
-princ HTTP/www.example.com@DOMAIN.EXAMPLE.COM -pass * ^
-mapuser unixhttp@DOMAIN.EXAMPLE.COM -ptype KRB5_NT_PRINCIPAL ^
-crypto DES-CBC-MD5
生成されたhttp.keytabをWebサーバに設置。
※ この辺、本当はDESじゃなくてより強固な暗号化方式でもいいのかも。未確認。
Webサーバにmod_auth_kerbを導入
Apacheでケルベロス認証を行うためのモジュール(mod_auth_kerb)をインストール。
# wget http://nchc.dl.sourceforge.net/sourceforge/modauthkerb/mod_auth_kerb-5.3.tar.gz
# tar xvfz mod_auth_kerb-5.3.tar.gz
# cd mod_auth_kerb-5.3
# ./configure --with-apache=/usr/local/apache2 --with-krb5=/usr
# make
# make install
/usr/local/apache2/conf/httpd.confに下記を追加
LoadModule auth_kerb_module modules/mod_auth_kerb.so
(snip)
<Location />
AuthType Kerberos
AuthName "Kerberos Login"
KrbServiceName HTTP/www.example.com@DOMAIN.EXAMPLE.COM
Krb5Keytab /etc/http.keytab
KrbAuthRealms DOMAIN.EXAMPLE.COM
Require valid-user
KrbVerifyKDC on
</Location>
クライアントPCに統合認証のための設定
「インターネットオプション」-「セキュリティ」-「ローカルイントラネット」のサイトに「www.example.com」を追加。
www.example.comにアクセスすることができるか確認。
上記設定はActiveDirectory環境であればGPO(グループポリシーオブジェクト)により配布可能。
WebサーバにPHP 5.2.4をインストール
確認用にPHPをインストール。
# ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-zend-multibyte \
--with-zlib \
--with-gettext \
--enable-ftp \
--with-xmlrpc \
--with-ldap \
--with-tidy \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-freetype-dir=/usr \
--with-mysql \
--with-pgsql \
# make
# make install
/usr/local/apache2/conf/httpd.confに下記を追加
AddType application/x-httpd-php .php
/usr/local/apache2/htdocs/phpinfo.phpを作成し下記を記述
<php phpinfo();
http://www.example.com/phpinfo.phpにアクセスし、$_SERVER['REMOTE_USER']にPCのドメインアカウント名が入っていることを確認。
最後に
- DCとサーバ間で時刻同期を忘れない
- クライアント側のチケット有効期限も気にする必要あり?
mod_spnegoの導入
番外編。今回は使用しなかったが、mod_spnegoを使ってもKerberos認証が可能。
# wget http://jaist.dl.sourceforge.net/sourceforge/modgssapache/fbopenssl-0.0.4.tar.gz
# tar xvfz fbopenssl-0.0.4.tar.gz
# cd fbopenssl
# make CFG=release
# cp Linux-release/libfbopenssl.so /usr/local/lib/
/etc/ld.so.confに下記行を追加
/usr/local/lib
変更を反映させるため下記コマンドを実行
# ldconfig
もろもろインストール。
# cd /usr/local/src
# mkdir modgssapache
# cd modgssapache
# wget http://jaist.dl.sourceforge.net/sourceforge/modgssapache/modgssapache-0.0.5.tar.gz
# tar xvfz modgssapache-0.0.5.tar.gz
# cd spnegohelp
# make
# cp libspnegohelp.so /usr/local/lib
# cd /usr/local/src/
# wget http://nchc.dl.sourceforge.net/sourceforge/modgssapache/mod_spnego-0.1.0.tar.gz
# tar xvfz mod_spnego-0.1.0.tar.gz
# cd mod_spnego-0.1.0
# /usr/local/apache2/bin/apxs -c -a -i -I/usr/local/src/fbopenssl/include -lfbopenssl mod_spnego.c
/usr/local/apache2/conf/httpd.confに下記を追加
Krb5AuthEachReq On
<Location />
Krb5KeyTabFile /etc/http.keytab
Krb5ServiceName http/www.example.com@DOMAIN.EXAMPLE.COM
AuthType SPNEGO
Require valid-user
</Location>
名前:宮内 はじめ
Code for Nagoya名誉代表
E2D3名古屋支部長
プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。