Apache Shiroについて

業務外で作っているWebサービスで認証が必要になりました。開発環境はバックエンドがJavaサーブレット。フロントエンドはHTML5というか、JavaScript+HTMLです。最初は特にフレームワークなどは使用せず、自前で実装しようかと思ったのですが、色々なパターンの使い方を考えていくと、フレームワークを使った方がよいように思えてきたので、探してみると、「Apache Shiro」というのを見つけました。
Apache Shiroは、認証と承認という部分を扱ってくれるフレームワークで、比較的簡単に使えるAPIだとの説明です。ただ、今回、問題になってくるのは、ユーザー情報をどのように持つのか?という部分です。というのも、今回のWebサービスはデータベースにMongo DBを使っています。ところがフレームワークが対応しているのはLDAPやJDBCなどのRDB。Mongo DBはNOSQLなDBで、JDBC経由では接続できません。
何か方法がないかと、ドキュメントを読んでいくと、「Application Security With Apache Shiro」というドキュメントに次のような一文を見つけました。
引用元: Application Security With Apache Shiro ( http://www.infoq.com/articles/apache-shiro )

Shiro provides out-of-the-box Realms to connect to a number of security data sources (aka directories) such as LDAP, relational databases (JDBC), text configuration sources like INI and properties files, and more. You can plug-in your own Realm implementations to represent custom data sources if the default Realms do not meet your needs. Listing 4 below is an example of configuring Shiro (via INI) to use an LDAP directory as one of the application’s Realms.

つまり、標準で対応していなければ、カスタムRealmを作ればよい。RealmはApache Shiroにセキュリティ情報を格納しているところからデータを受け渡すためのもの。今回でいえば、Mongo DBのAPIを使って、Mongo DBのコレクションに入っている情報を取得するRealmを作ればよいということのようです。
これで認証処理実装の方向性が見えてきました。
 

関連記事

  1. 執筆ツールとしてWikiServerを使ってみる

  2. VMware Fusion 4 でのLionのインストール方法

  3. 仮想環境と古いXcodeそして古いOS

  4. Confluenceで日報を書く

  5. テレビに付けるデバイスが楽しい

  6. LionサーバーでMySQLサーバーを使用する

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事

  1. 基礎から学ぶ SwiftUI
  2. 基礎から学ぶ SwiftUI