OpenSocial

最終更新時刻: 2008年08月22日

Flash Playerのバージョンをレジストリの値から取得 / 制限ユーザでインストール可能な最新のFlash Playerインストールファイル(MSI)を作る方法 / ActiveDirectoryのKerberos認証を使ってWebサービスにシングルサインオンする環境を構築する

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>
最終更新時刻: 2008年09月30日

WebKit

WebKitはオープンソースのWebブラウザエンジンで、主にSafariで使用されている。(WindowsではSwiftもある)

確かKHTMLからAppleが派生させたオープンソースプロジェクト。

公式サイト:The WebKit Open Source Project

最近ではAdobe AIRでも採用されている。

GIZMO Community : B-Wiki - AIR:デベロッパーFAQ

によると、AIRに搭載されているWebKitもソースが公開されているらしい。

Adobeが行ったWebKitへの修正はどこでダウンロードできますか?

Adobe AIR Alpha 1でWebKitに対して行った変更はこちらでダウンロードできます。

ちなみにここでは文書が古いためAlpha1となっているが、確認したところ最新のBeta2のソースも公開されているように思われる。

余談だが、Adobeがソース公開しているのはライセンスの関係もあるかもしれない。(WebKit自体はBSDライセンスだが、含まれるWebCore、JavaScriptCoreのライセンスがLGPL)

Open Source - Internet & Web - WebKit

WebCore and JavaScriptCore are available under the Lesser GNU Public License. WebKit is available under a BSD-style license.

閑話休題。

実際に「Adobe AIR Alpha 1でWebKitに対して行った変更はこちら」のリンクをたどると下記ページにジャンプする。

Adobe Open Source: Adobe Air

ソースはAdobeの他のオープンソースプロジェクトと同列にPerforceというSCM(バージョン管理システム)上で管理されているらしい。

ソースツリーはWeb上からも閲覧可能。

http://opensource.adobe.com/perforce/

Perforceおよびマニュアル等の入手先は下記に書いてある。(Perforceはプロプライエタリなツールだと思うんだけどなぜかフリーでダウンロード可能らしい)

Adobe Open Source: Obtaining ASL Via Perforce

自分はここから「P4V Installer」をダウンロードした。この中にはクライアントソフトウェア一式(GUI/CUIクライアント、Mergeツール、SCC Plug-in)が含まれる。

P4V Installerをインストールして、GUIクライアントの「P4V」を起動。接続パラメータは下記を参考にした。

amg: Getting Started

p4 -p opensource.adobe.com:10666 -u guest -P AdobeGuest client {nameofclient}

P4V上でWorkspaceを新規作成し、Depot(Subversion/CVSでいうところのリポジトリ?)からCheck Outを行う。

今のところ「webkit/M5」が最新っぽい。

最終更新時刻: 2008年10月28日