本格派エンジニアの工具箱

第20回 Javaアプリケーション向けの認証フレームワーク「Apache Shiro」

この記事を読むのに必要な時間:およそ 3 分

使いやすい認証機構を実現する「Apache Shiro」

今回取り上げるApache Shiroは,Javaアプリケーション向けに開発された認証と承認のためのオープンソースのフレームワークです。Shiroを使うことで,ログインなどの認証の仕組みや,アクセス管理,セッション管理などといった機構を,容易にアプリケーションに付け加えることができるようになります。

JDKにはJAAS(Java Authentication and Authorization Service)という認証・承認サービスが用意されていますが,JAASで提供されるAPIはあまり使い勝手が良くなく,わかりにくいという意見が大多数を占めていました。ShiroはJAASよりも理解しやすく,簡単に利用できる認証・承認の仕組みを提供する目的で開発されました。Shiroを利用するメリットとしては次のようなものが挙げられています。

  • 理解しやすい簡潔なAPI
  • 認証・承認に必要な一通りの機能を包括的にカバー
  • さまざまな環境に対応するフレキシビリティ
  • Webアプリケーションへの組込みとが可能
  • 他のフレームワークやアプリケーションとの統合が容易
  • 依存関係が少ない
  • 設定が容易

Shiroでは,大きく分けて以下の4種類の機能が用意されています。

  • 本人認証(Authentication)
  • リソースのアクセス権管理(Authorization)
  • セッション管理(Session Management)
  • キャッシュ管理(Cache Management)

それぞれ後述するセキュリティマネージャを通して利用できるようになっており,複雑な認証機構はセキュリティマネージャによって隠蔽されている点が大きな特徴です。

Apache Shiroのアーキテクチャ

Apache Shiroは大別すると次の3つのパートから構成されます。

サブジェクト(Subject)
アプリケーションからShiroのセキュリティ機構にアクセスするための"ビュー"となるオブジェクト
セキュリティマネージャ(SecurityManager)
セキュリティのためのさまざまなコンポーネントを提供・管理する
認証レルム(Realm)
さまざまなセキュリティ・データと橋渡しの役目をもつコネクタ

図1 Apache Shiroは3つのパートから成る

図1 Apache Shiroは3つのパートから成る

出典:http://shiro.apache.org/architecture.html

前述の4つの機能はコンポーネント化されてセキュリティマネージャによって管理されます。認証レルムはセキュリティ・データの種類ごとに用意されます。JDBC用のレルム,LDAP用のレルム,Active Directory用のレルム,といった具合です。それぞれのレルムは共通のインターフェースを持つため,任意に入れ替えて使用できるようになっています。つまり,使用する認証レルムを変えれば,共通の方法で異なるセキュリティデータにアクセスできるということです。

図2 Apache Shiroのアーキテクチャ

図2 Apache Shiroのアーキテクチャ

出典:http://shiro.apache.org/architecture.html

著者プロフィール

杉山貴章(すぎやまたかあき)

ONGS Inc.所属のプログラマ兼テクニカルライター。雑誌,書籍,Webメディアで多数の著作をもつ。

著書

コメント

コメントの記入