Java Identity API は Java アプリケーションの ID 属性を表現し,操作するためのフレームワークを提供する API である。その基本となる JSR 351 の仕様リーダである Ron Monzillo 氏が,先週の JavaOne 2011 Conference で講演を行った。氏はそこで JSR の提案範囲,現在の状況,そして仕様の将来的計画について論じている。
氏の選んだ話題は,エンタープライズ Java アプリケーションにおけるアイデンティティの現状に関してだ。Java プラットフォームに適切なインターフェースがないことから,アプリケーション開発者は非標準のインターフェースに頼らざるを得ない。その結果として一貫性がなく,統合性に乏しく,ネットワークアイデンティティのサポートも十分ではない。
JSR 351 は ID 属性を表現し操作する,均一でドメインモデルに依存しない Java フレームワークを提供しようというもので,主な目標は以下の3つである。
- Java のID 表現の標準化: 属性の名称,多値,メタデータ修飾を行う属性インターフェースの標準化など。発行者,発行時間,有効期限,適用制約などのメタデータが標準化の対象となる。Java Security Model 内で使用されている ID 表現と互換性を持つ形式を採用したモデルにより,相互運用性の要件である Java システム間でのアイデンティティの伝搬が実現される。
- 属性サービスの促進: 属性サービスはアプリケーション参照のためのローカルポイントであり,多種多様なリポジトリのプロトコルや位置を隠蔽する。これはソース,妥当性,および関連するメタデータの権限を表現したもので,アプリケーションによる ID 属性の利用を承認および監査することによって,アイデンティティ・ガバナンスモデルへの準拠を支援する。
- 宣言型プログラミングスタイルの標準化: ID 属性の参照,生成,伝搬,統制を行うクライアント側 Java フレームワークなど。依存性注入の原理に基づいてソースの仮想化を管理する。AccessControlContext がユースケースに関連するアクタを表現している。
Java 開発者が使用するようなID属性の固定セット(特定のドメインモデルなど) については標準化の対象とはしていない。これについては所定のコミュニティ,あるいはアプリケーションアーキテクトが責任を負うべきだろう。
インターフェースアーキテクチャには次の3つのレイヤがある。
- レイヤ1: 表示と JRE 統合
- レイヤ2: サービス
- レイヤ3: アプリケーション開発
仕様で動作対象として想定しているのは,バージョン6.0 以降の Java SE と Java EE プラットフォームである。承認投票はすでに完了して,次のステップは専門家グループの形成と,仕様のリファレンス実装 (RI) の開発だ。リファレンス実装は Java.net のオープンソースプロジェクトとして開発され,Apache ライセンス 2.0 で公開される予定である。
仕様の提案タイムラインによると初期ドラフトが 2012 年 3 月,公開レビューが 2012 年 7 月,最終リリース公開が 2013 年始めの予定だ。JSR に関する詳しい情報は 仕様 と TCK,あるいは 専門家グループ のボランティア成果を参照してほしい。
Srini Penchikala 氏は現在,セキュリティアーキテクトとして活動している。氏はソフトウェア開発管理において 17 年の経験を持つ。