開発Blog

intra-mart Advent Calendar 2013 第10日:認可サブジェクトの拡張方法

投稿日:

この記事は、intra-mart Advent Calendar 2013 第10日の記事です。

今回は「認可サブジェクトの拡張方法」をご紹介したいと思います。

intra-mart Accel Platform 2013 Spring より、以下の認可サブジェクトが追加されました。

  • テナント管理 / IPv4 アドレス(im_authz_ipv4)

    • アクセス元の IPv4 アドレスを使用した認可設定ができるようになりました。
  • テナント管理 / 認証 (im_authz_meta_subject)

    • ゲストユーザ や 認証済みユーザを対象者として追加可能となりました。

画面で言うと、これです。

この認可サブジェクト、実は、開発者が独自に追加可能なんです!

intra-mart Accel Platform で標準的にサブジェクトとして設定可能なものは「ロール」や「組織」といった情報のみですが、
独自のサブジェクトを追加することにより、アプリケーション独自のユーザ情報を使った認可設定を行うことができるようになります。

intra-mart Accel Platform では標準的に以下のようなサブジェクトを提供しています。

  • 認証状態
  • ロール
  • ユーザ
  • 組織、役職
  • パブリックグループ、役割
  • IPアドレス

これによって特定の組織に所属するユーザに対して権限を与えるといったことが可能になっています。
上記以外の解釈でユーザを分類して権限管理をしたい場合にはサブジェクトの拡張機能を作成することで、認可機構に追加して利用できるようになります。

おおまかな流れは、以下の通りです。

  1. サブジェクトの定義
  2. 認可機構へのプラグイン実装
  3. ポリシー部分編集設定の編集

1. サブジェクトの定義

サブジェクトの定義 を行います。

サブジェクトの特徴を表現するためにサブジェクトの定義を行います。
すでにあるマスタデータなどを連携したい場合は、単純にそのデータを表すもの(キー情報など)で良いでしょう。
そうでない場合、サブジェクトを表すのに必要な要素を定義します。
この時に、ユーザに対して自明なサブジェクトか、そうでないかを明確にしておきます。

  • ユーザに対して自明 → ログイン時に判断可能。
  • ユーザに対して自明ではない → 認可要求時でなければ判断できない。

2. 認可機構へのプラグイン実装

認可機構へのプラグイン実装を追加します。
最大で以下の4種の実装が必要です。

  1. SubjectType ( 図中 1 )

    • サブジェクトのモデルと認可のサブジェクト情報の相互変換、シリアライズを担当します。
  2. SubjectResolver ( 図中 2-a 及び 2-b )

    • ユーザが何者であるかを判断する処理です。これも新たに追加するサブジェクトモデルの情報を取り扱うための実装を追加します。
    • 取り扱う情報の特性によって2種の実装の内どちらか ( 図中 2-a 及び 2-b ) を選択します。
  3. 認可サブジェクトコンテキストのデコレータ ( 図中 3 )

    • 認可サブジェクトコンテキストはユーザが何者であるかをコンテキストとして保持していますが、このコンテキストに新たに追加するサブジェクトモデルの情報を取り扱うためのデコレータを追加します。
    • SubjectResolver の実装で 2-b を選択している場合はこれは必要ありません。
  4. 検索画面 ( 図中 4 )

    • 認可設定画面でユーザがサブジェクトとして選択できるようにするための画面拡張を追加します。

3. ポリシー部分編集設定の編集

ポリシー部分編集設定 を編集してリソースグループセット(特定のルート配下のリソースツリー)毎に利用するサブジェクトタイプを設定します。

以上を実施すると、独自のサブジェクトを追加することが可能となります。
詳細は、「認可 拡張プログラミングガイド」の「 サブジェクト拡張ガイド 」をご参照ください。

「認可 拡張プログラミングガイド」では、サンプルとして
「ユーザの勤続月数(ユーザのプロファイルの有効期間)」と「データの所有者(リソースオーナー)」という情報をサブジェクトとして扱う方法を解説しています。

サンプルをご活用いただき、アプリケーションにマッチしたサブジェクトの拡張をご検討いただければと思います。

-開発Blog
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Formaの画面遷移を制御するには

今回のブログ記事では、スクリプトを利用してFormaの画面遷移を制御する方法を紹介します。 目次 条件に応じて遷移先を変更する フォーム遷移設定 サンプルコード サンプルアプリケーション 処理後の遷移 …

no image

スタートパックVer7.1でのタイムゾーン対応について

明日、リリース予定のイントラネット・スタートパック Ver7.1での一番の機能追加内容である、 「タイムゾーン対応」について、以下のスライドでまとめましたので、公開いたします。 ISP710 タイムゾ …

no image

ロードバランス環境の構築方法

Webサーバと intra-mart Accel Platform 間でロードバランスを行いながら連携を行う設定例を紹介します。 以下の手順を参考として、各種要件・ご利用の環境に合わせて環境構築を行っ …

intra-mart Developer Site

Developer Siteのデザインを一部変更しました。

日頃より、intra-mart Developer Siteをご利用いただき、誠にありがとうございます。 ホームページのデザインを一部リニューアルをいたしました。 主な変更点は下記の通りです。 画面上 …

no image

iPhone/iPad用アプリケーション im-scheduler リリース!!

先日、10月22日に弊社イベント Enterprise Web Solution 2010に多数の方がご参加頂き、 ありがとうございました。 実は、そのイベントの裏で、ひっそりと、 iPhone/iP …

RSSRSSRSSRSS