Create: 2014/02/10
LastUpdate: 2015/05/10
LastUpdate: 2015/05/10
OpenAMは、シングルサインオン(以下SSO)を実現するオープンソースソフトウェア(以下OSS)です。
ForgeRock社が開発しています。
ForgeRock社は、Sun MicrosystemsがOracleに買収された後のOpenSSOやOpenDSの開発・サポートを継続するために、それら製品の開発者によって設立されました。Sun Microsystems同様のオープンな開発スタイルをとっており、ソースコードや各種マニュアルも全て公開されているため、安心して利用することができます。
ForgeRock社は、認証、認可、SSOといったアクセス管理を行う「OpenAM」を中心に、ディレクトリサービスを提供する「OpenDJ」、そしてアイデンティティ情報のプロビジョニング、ライフサイクル管理を行う「OpenIDM」なども提供しています。
詳細は、以下の記事が参考になります。
今回、OpenAM、OpenIGを使用してシングルサインオン試してみたので、テスト環境の構築手順と簡単な使用方法を以下に紹介します。
Ⅰ.テスト用WEBサイトを用意する
SSOを試すには、認証で保護するWEBサイトが必要になります。そこで、まず最初に、「テスト用WEBサイト」を構築します。
今回、テスト用に用意するのは、以下の3つのページです。
- ログインページからフォーム認証でログインするページ
- Basic認証でログインするページ
- 認証なしで誰でも参照できるページ
「ユーザ端末」はWindows8+IE11、「テスト用のWEBサイト」はCentOS6+Apache2+PHP5とします。

環境構築と動作確認の手順は、以下のとおり。
Ⅱ.OpenIGの代理認証を試す
「テスト用WEBサイト」にOpenAMでSSOするには、ユーザの代わりに機械的にユーザIDとパスワードを入力してログインする代理認証の仕組みが必要になります。
ここでは、SSOを試す前に、通常は、SSOと連携して使用する代理認証の機能だけを先に試します。
代理認証機能は OpenIGで提供してくれます。OpenIGでリバースプロキシを構築し、リバースプロキシ経由でWEBサイトにアクセスした場合は、自動的にログイン済みの状態になるようにし、ユーザのログイン操作が不要になるようにします。
システム構成のイメージは以下のとおり。
「ユーザ端末」と「WEBサーバ」の間にリバースプロキシが入ります。リバースプロキシは CentIS6.4 + Tomcat6 + OpenIG とします。

環境構築と動作確認の手順は、以下のとおり。
Ⅲ.OpenAMのシングルサインオン(SSO)を試す
いよいよ、OpenAMを使ってSSOを試します。OpenAMにログイン(SSO)することで、「テスト用WEBサイト」も認証済みとなり、ユーザがログイン操作をしなくてもページを参照できるようにようにします。
リバースプロキシサーバには、OpenAMのPolicyAgentを導入して、OpenAMと連携して動くようにします。
PolicyAgentがOpenAMに問い合わせを行い、認証済みであれば、WEBサーバのアクセスを許可し、未認証であれば、OpenAMのログイン画面を表示します。
システム構成のイメージは以下のとおり。
OpenAMサーバは CentIS6.4 + Tomcat6 + OpenAM とします。

環境構築と動作確認の手順は、以下のとおり。
この環境で設定を試した時の手順を紹介します。
Ⅳ.OpenAMのLDAP認証を試す
前述の環境にLDAPサーバ(下図のグリーン部分)を追加して LDAP認証を試しました。
LDAPサーバは OpenDJ を使用しています。

環境構築と動作確認の手順は、以下のとおり。
Ⅴ.OpenAMのActiveDirectory認証を試す
前述の環境にADサーバ(下図のグリーン部分)を追加して ActiveDirectory 認証を試しました。
認証はActiveDirectory を利用しますが、ユーザの属性情報はLDAPサーバから取得します。

環境構築と動作確認の手順は、以下のとおり。
Ⅵ.OpenAMのWindowsDesktopSSOを試す
前述の環境で WindowsDesktopSSO を試しました。
認証はActiveDirectory を利用しますが、ユーザの属性情報はLDAPサーバから取得します。
WindowsDesktopSSOでは、Windows端末へのログインが、OpenAMへのログインも兼ねます。なのでOpenAMログイン画面は不要になります。

環境構築と動作確認の手順は、以下のとおり。
この環境で、クラウドサービスとのSAML連携を試したときの手順を以下に紹介します。
- [CentOS6][OpenAM10] SAML連携 - Salesforce (統合ID) (NameID)
- [CentOS6][OpenAM10] SAML連携 - Salesforce (統合ID) (Attribute)
- [CentOS6][OpenAM10] SAML連携 - GoogleApps (uid)
- [CentOS6][OpenAM10] SAML連携 - GoogleApps (mail)
- [CentOS6][OpenAM10] SAML連携 - Office365
Ⅶ.OpenAMの機能をいろいろ試す
OpenAMの機能をいろいろ試しました。
- [CentOS6][OpenAM10] ロードバランサのLVS(NAT)でOpenAMを負荷分散する
- [CentOS6][OpenAM10] ロードバランサ+OpenAMの環境で PolicyAgent を使う
- [CentOS6][OpenAM10] ロードバランサの背後で PolicyAgent を使う
- [CentOS6][OpenAM10] クライアント証明書で認証する
- [CentOS6][OpenAM10] samba4 の ActiveDirectory(Windows2008互換)でSSOする
- [CentOS6][OpenAM10] AWSコンソールにSSOする