社内アプリケーションへのシングルサインオン ~ Liferayとの連携

CodeZine / 2013年1月21日 14時0分

図21:ユーザ一覧画面

 OpenAMは、シングルサインオン(以下SSO)を実現するオープンソースソフトウェア(以下OSS)です。旧Sun Microsystems社により開発された商用製品がベースとなっているため、高品質で多機能です。全世界で多くの導入実績があり、安定性と信頼性の高さが証明されています。本連載では、OpenAMとSSOに関する技術について解説します。また実際にOpenAMをインストールし、社内アプリケーションやクラウドサービスに対してSSOしてみます。

■はじめに

 第3回は、OpenAMを使用してLAN内にあるWebアプリケーションへSSOする手順と、それを実現する仕組みについて解説します。SSO対象のWebアプリケーションには、セットアップが簡単で、かつOpenAMとの連携機能が提供されている「Liferay」を使用します。Liferayには無償で利用できる「Community Edition」があります。

図1:LiferayへのSSO


 LiferayがどのようにOpenAMと連携してSSOを実現するかを理解することで、Liferay以外のWebアプリケーションをSSO対応するためにどのような改造をすればいいかも理解できるかと思います。

■対象読者

SSOとOpenAMについてより理解したい方 OpenAMの導入を検討している方 LiferayへのSSOを検討している方 WebアプリケーションのSSO対応を検討している方 ■Liferayとは

 Liferayは企業ポータルを実現するオープンソースのWebアプリケーションです。ポートレットと呼ばれる機能単位の部品で構成されており、それらを組み合わせて企業のニーズに合ったポータルを構築することができます。ポートレットには、Wiki、カレンダー、ブログ、アンケートなど非常に多くの種類があります。画面から分かるようにポートレットの追加は簡単にできます。

図2:Liferayのポートレットの追加


 Liferayは、日本語はもちろんさまざまな言語に対応しています。Javaで実装されているため、主要なOSの主要なアプリケーションサーバ上で動作します。

表1:Liferayの基本情報
機能 コミュニティ、コンテンツ管理、ニュース、ソーシャルなど サポートするOS マルチプラットフォーム 対応言語 マルチランゲージ(日本語にも対応) 実装言語 Java ライセンス LGPL Webサイトhttp://www.liferay.com■LiferayがSSOを実現する仕組み

 Liferayのセットアップに入る前に、LiferayがどのようにSSOを実現するかについて説明します。

 LiferayはOpenAM(OpenSSO)連携用のサーブレットフィルタを提供しています。Liferayの管理画面でOpenAMによる認証を有効にすると、このフィルタが機能するようになります。フィルタはLiferayに対するすべてのリクエストを監視し、認証済みであるかどうかをOpenAMに問い合わせます。その際に使用されるのが、OpenAMのREST APIです。

 未認証のユーザがLiferayにアクセスした際のシーケンスを以下に示します。

図3:LiferayにSSOするシーケンス


 未認証やセッションタイムアウトである場合、LiferayはユーザをOpenAMのログイン画面にリダイレクトさせます。この際にクエリストリングにgoto=[LiferayのURL]を設定しておくことで、OpenAMがログイン成功後にLiferayへとユーザをリダイレクトさせます。

 その後、LiferayはREST APIでOpenAMからこのユーザの情報(ID、メール、姓、名)を取得してログイン処理を実行します。ユーザがLiferayのDBに存在しなければ、その情報をDBに登録することもできます(デフォルト設定では登録します)。

 実装の詳細に関して知りたい方は、Liferayのソースをダウンロードして、パッケージcom.liferay.portal.servlet.filters.sso.openssoにあるOpenSSOFilter.javaを確認してみてください。

■設定の概要

 設定のおおまかな流れは以下のようになります。

Liferayのセットアップ(Liferayがセットアップされていない場合) 連携用のOpenAMユーザ作成 LiferayのSSO設定  OpenAMのインストールが完了していない方は、「OpenAMのインストール - OpenAMで始めるシングルサインオン(2)」を参照してインストールを行っておいてください。



■関連記事
オープンソースのWeb用コードエディター「Brackets」の拡張機能を作成する
CSS Filter Effectsを編集できるブラウザベースのツール「CSS FilterLab」
社内アプリケーションへのシングルサインオン ~ Liferayとの連携
Spring AMQPの実装と、AMQPを利用したアプリケーションの稼働
RabbitMQの導入と、Spring AMQPを利用したメッセージ送受信

■記事全文へ

CodeZine

トピックスRSS

ランキング