第 5 章 クラウドサービス利用企業向け実装ガイド
C.6. Java による SCIM サーバーのスクラッチ実装例
C.6. Java による SCIM サーバーのスクラッチ実装例
SCIMサーバーの利用法
1. eiwg.war ファイルを Tomcatに配備する。(warファイルの配備方法は Tomcat のド
キュメント等を参照)
2. WEB-INF フォルダ直下に、各種設定ファイルが配置される。管理者の情報や、ス
キーマ情報、初期ユーザー情報等を変更する場合は、設定ファイル変更後に Web ア プリケーションを再起動する。
3. BaseURL は 「http://<ご利用のサーバー名>:<ご利用のポート番号>/eiwg/scim」で ある。curl コマンド等の HTTP クライアントを利用して各種エンドポイントへアク セスして利用する。
curlコマンドによるユーザーリソース取得の例
$ curl http://scim.svc.example.net:8080/eiwg/scim/Users -H "Authorization:
Bearer MDNhNTlhN2ItYmE1NC00OWQ3LWFkMzQtODliYjhhN2Q0Mjlh"
C.6.4. プログラム構成
モジュール構成
クラス名 概要
MessageConstants エラーメッセージを定義したクラス
InitFilter サーブレット実行前にパスのチェックを行なうフィルタクラス
InitListener アプリケーション起動時に各種設定ファイルの読み込みを行な
うリスナークラス
Operation 認証や各種リソースに対する操作を実装したクラス
ResourceTypes エンドポイントResourceTypesのサーブレットクラス
Schemas エンドポイントSchemasのサーブレットクラス
ServiceProviderConfigs エンドポイントServiceProviderConfigsのサーブレットクラス
Users エンドポイントServiceProviderConfigsのサーブレットクラス
SCIMUtil フィルター解析,リソース情報検索など部品的な処理を実装した
クラス
SCIMUtilException 上記SCIMUtilの例外クラス
設定ファイル
ファイル名 説明
Admin.json 管理者情報(scimクライアントの認証情報)
ResourceTypes.json エンドポイントResourceTypesのリソース情報
Schemas.json エンドポイントSchemasのリソース情報
ServiceProviderConfigs.json エンドポイントServiceProviderConfigsのリソース情報
Users.json エンドポイントUsersのリソース情報
C.6.5. ポイント
1. InitListenerクラス
ServletContextListener の実装クラス。Web アプリケーション起動時の処理として、各
設定ファイルの読み込みを行ない、読み込んだ情報を各サーブレットで参照するために コンテキスト属性として保持する。
各設定ファイルの JSONデータの読み込みには、JacksonのObjectMapperを利用して いる。
2. InitFilterクラス
Filter の実装クラス。各サーブレットの実行前に、サポートしているエンドポイントに
対するアクセスかどうかのチェックを行なっている。
3. サーブレットクラス
各エンドポイントに対する操作を実際に処理するHttpServletを継承したクラス。
サポートする各メソッド (doGet()、doPost()、doPut()、doDelete()) をオーバーライドし て実際の処理を記述している。
PATCH メソッドを実装する場合は、HttpServlet の標準でサポートされていないため、
自前でメソッドを判定して処理を振り分ける (service メソッドをオーバーライドして実 装する) 必要がある点に注意が必要である。
各メソッドは、大きく分けて以下の3つの処理を行なっている。
認証処理
リクエストに対する処理
レスポンスの生成処理
認証処理はOperationクラスのAuthentication()メソッドとして実装している。
また、各リクエストに対する処理は、
追加処理はOperationクラスのcreateUserInfo()メソッド
検索処理はOperationクラスのsearchUserInfo()メソッド
更新処理はOperationクラスのupdateUserInfo()メソッド
削除処理はOperationクラスのdeleteUserInfo()メソッド として実装している。
詳しくは、ダウンロードしたプログラムソースを参照していただきたい。