...
IdPのプラグイン機能を利用することにより、IdP側において、ユーザの属性情報に基づいた特定SPへのアクセス制御を実現することが可能です。 任意の条件を持つプラグインが作成可能ですが、ここでは、簡易な条件判定機能を持つものとしてFPSP(Filter Per SP)プラグインを紹介します。
お知らせ
- 本ページに掲載している最新版(201303版)では、エラーページをJSPファイルとして設定できるようになりました。Shibboleth標準のerror.jspをハードコードしておりますが、このファイル名を変更すれば独自のページを表示させることも可能です。
- 名称をFPSPに変更しました。
...
FPSPプラグインの概要
FPSPプラグインは、設定ファイルに記述されているSP毎に特定の属性値を持つユーザーについてのみアサーション(認証結果・属性情報)を送信するためのIdPプラグインです。 一つのSPに対して、送信を許可する複数の属性値が設定可能です。
...
FPSPプラグインのインストール手順
- 設定ファイルの解析に commons-configuration-1.3 を使用しているため、下記URLより commons-configuration-1.3.zip を入手して、解凍したJARファイル commons-configuration-1.3.jar を /opt/shibboleth-idp/lib/ および ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/ に配置する。
http://commons.apache.org/configuration/
なお、commons-configuration-1.4.zip 以降はShibboleth IdPに付属する commons-lang-2.1.jar より新しいJARファイルを要求するために動作しない。
SampleFilterPerSP.java をコンパイルする。
パネル borderColor #cccccc bgColor #eeeeee borderStyle solid $ for jar in ${CATALINA_HOME}/lib/servlet-api.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/opensaml-*.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/openws-*.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/shibboleth-common-*.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/shibboleth-identityprovider-*.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/commons-collections-*.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/commons-lang-*.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/commons-logging-*.jar \ ${CATALINA_HOME}/webapps/idp/WEB-INF/lib/commons-configuration-*.jar > do > export CLASSPATH=${CLASSPATH:+${CLASSPATH}:}$jar > done $ javac -encoding shift_jis -Xlint:unchecked SampleFilterPerSP.java
コンパイルされた SampleFilterPerSP.classを ${CATALINA_HOME}/webapps/idp/WEB-INF/classes/ 以下に配置する。
パネル borderColor #cccccc bgColor #eeeeee borderStyle solid $ mkdir -p ${CATALINA_HOME}/webapps/idp/WEB-INF/classes/plugin/idp $ cp -p SampleFilterPerSP.class ${CATALINA_HOME}/webapps/idp/WEB-INF/classes/plugin/idp/
※ Shibboleth IdPをアップデートする場合には配置したファイルが失われる可能性があるので注意すること。
...
...
FPSPプラグインの設定手順
${CATALINA_HOME}/webapps/idp/WEB-INF/web.xml に下記を追記する。パラメータ名 Config の値は後述する FPSP の設定ファイルのパスとなる。
パネル borderColor #cccccc bgColor #eeeeee borderStyle solid <!-- SampleFilterPerSP --> <filter> <filter-name>SampleFilterPerSP</filter-name> <filter-class>plugin.idp.SampleFilterPerSP</filter-class> <init-param> <param-name>Config</param-name> <param-value> /opt/shibboleth-idp/conf/SampleFilterPerSP_allow.xml </param-value> </init-param> </filter> <filter-mapping> <filter-name>SampleFilterPerSP</filter-name> <url-pattern>/profile/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
※ すでに uApprove.jp がインストールされているIdPにインストールする場合は、uApprove.jp の filter および filter-mapping よりも上に挿入してください。
- 上記1のパラメータ名 Config で設定したファイル(SampleFilterPerSP_allow.xml)を /opt/shibboleth-idp/conf/ に配置する。
- Shibbolet IdPを再起動する。
# /sbin/service tomcat6 restart
...