Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

目次

Table of Contents
maxLevel2
exclude目次

1. Shibboleth Identity Provider のための uApprove.jp のインストールおよび設定方法

1.1 はじめに

uApprove.jp (uApproveを機能拡張しました)は、 エンドユーザに利用するサービスに送信する属性の表示の選択を提供するアプリケーションです。

本ガイドでは Shibboleth Identity Provider (IdP)のための uApprove.jp のインストールおよび設定方法を説明します。
IdP プラグインおよび uApprove.jp viewer のインストール方法と、 ストレージとしてファイルもしくは SQL データベースを用いた設定方法を示します。

このガイドでは例として以下の設定値を使用します。

...

  • Identity Provider の DNS 名

...

  • uApprove.jp をインストールするディレクトリ

...

  • uApprove.jp の設定ファイルのディレクトリ

...

  • Shibboleth IdP のインストール時にZIPファイルを展開したディレクトリ (install.sh が存在するディレクトリ)

この文書にはuApprove Jet Pack (以下、「uApprove JP」) のインストールガイドと総合マニュアルが記されています。

uApprove JPはShibboleth Identity Provider 2.xを拡張するプラグインです。オリジナルのuApproveに独自の改修を施しています。これを利用することにより、利用者はIdentity Providerで認証する際に利用条件(ToU)を承諾するとともに、属性を選択的に送信することができます。 uApprove JPのコンセプトに関するより詳細な情報はこちらを参照してください。

本ガイドに関する注意事項:

  • このガイドでは、uApprove JPはLinuxシステムにインストールされると仮定しています。Windows等の他のオペレーティングシステムにインストールすることも可能です。その場合は、いくつかのパスやコマンドを適切なものに置き換えてください。
  • このガイドでは、パスやコマンドは $IDP_INSTALL$$IDP_HOME$$UAPPROVE_INSTALL$といった変数で示されます。明示的に置き換えが不要と書かれていない限りは、これらの変数は実際のパスに置き換えてください。

...

目次

Table of Contents
maxLevel2

想定

  • Shibboleth Identity Provider は、 $IDP_INSTALL$ (例: /usr/local/src/shibboleth-identity-provider-#version#) に展開されているものとします。
  • Shibboleth Identity Provider は、 $IDP_HOME$ (例: /opt/shibboleth-idp
    • Shibboleth IdP のインストール先
    ${CATALINA_HOME}Tomcat のインストール先 (例えば、) にインストールされているものとします。
  • Tomcatは、 $CATALINA_HOME$ (例: /usr/java/tomcat) にインストールされているものとします。
  • uApprove JP は、 $UAPPROVE_INSTALL$ (例: /usr/local/src/uApproveJP-#version#) にダウンロード、展開されているものとします。

1 インストール

1.

...

1 前提条件

uApprove.jp のインストールと設定の前に、以下の前提条件が揃っていることを確認してください。

Note

MySQL 以外の SQL サーバを使用する場合は上記の値を使用する SQL サーバに合わせる必要があります。
JDBC ドライバをライブラリフォルダに配置するのを忘れないでください。
必要であれば、SQL コマンドは /opt/uApprove/conf/custom-sql.commands で再定義できます。

 

共通設定

使用条件のテキストをユーザに表示するためのオプション TermsOfUseManager があります。 TermsOfUseManager を有効にしたい場合は、/opt/uApprove/conf/common.properties で定義します:

Panel
termsOfUse=/opt/uApprove/conf/terms-of-use.xml

 

 

Note
含まれている terms-of-use.xml は空のファイルですので、独自の使用条件のバージョンと本文を記述できます。
実例として SWITCHaai VHO terms of use (doc/terms-of-use-SWITCH.xml) がありますので、参照してください。

IdP プラグインおよび viewer アプリケーションは機密情報を交換するため、 /opt/uApprove/conf/common.properties で定義される共通秘密鍵(128bit, 16バイト)により暗号化と復号を行います。

 

Panel

sharedSecret=QErDXYZEAoS6jooPvdBhQg==

簡単に 16 バイトの乱数を生成するためには、以下コマンドを利用できます:

Panel

openssl rand -base64 16 2>/dev/null

 

1.4.2 IdP プラグインの設定

Shibboleth IdP の調整

IdP プラグインは Shibboleth IdP web アプリケーション /opt/shibboleth-identityprovider-2.x/src/main/webapp/WEB-INF/web.xml で有効にする必要があります:

 

...

  • Shibboleth Identity Provider 2.34.
    • 正しく配備した Shibboleth Identity Provider が必要です。
      Java と Tomcat が動作することも含みます。
  • SQL Database
    • ストレージとして SQL データベースを使用する場合は SQL サーバが必要です。
      uApprove.jp は既に MySQL 用の設定が行われていますが、他の SQL サーバも使用できます。

1.3 インストール

uApprve.jp をダウンロードして unzip してください:

 

Panel

wget https://meatwiki.nii.ac.jp/confluence/download/attachments/13501031/uApprove.jp-2.2.1c-bin.zip?api=v2
unzip uApprove.jp-2.2.1c-bin.zip -d /opt/
ln -s /opt/uApprove.jp-2.2.1c /opt/uApprove

 

1.3.1 IdP-Plugin

ライブラリファイルと設定ファイルをコピーしてください:

 

Panel

cd /opt/uApprove
mkdir conf logs war
unzip idp-plugin-2.2.1c-bin.zip
cp idp-plugin-2.2.1c/conf-template/* conf/
cp idp-plugin-2.2.1c/lib/* /opt/shibboleth-identityprovider-2.x/lib/

 

1.3.2 Viewer

ライブラリファイルと設定ファイルをコピーしてください:

Panel

cd /opt/uApprove
unzip viewer-2.2.1c-bin.zip
cp viewer-2.2.1c/conf-template/* conf/

 

1.4 設定

uApprove.jp は二つのソフトウェアから成り立っています。 IdP コンテクストの中で動作する IdP プラグインと IdP コンテクストから独立した uApprove.jp viewer アプリケーションです。
どちらも共通のデータストレージとその操作のためのライブラリを使用します。

1.4.1 uApprove.jp 共通: ストレージ等

ストレージは、主に下記のデータを保管します。
  • ユーザ名
  • ユーザが同意した Term of use の最終バージョン
  • Shibboleth SP にリリースされた暗号化された属性のリスト
  • Shibboleth SP の Entity ID

最初にどちらのストレージを使用するか決めなければなりません:

  • ファイルベース
    • 少人数の構成で利用することを推奨します。(100 ユーザ未満)
  • SQL データベース
    • MySQL データベースを完全にサポートしています。JDBC コネクタを持つデータベースでも動くでしょう。もしかしたら 動かすために高等な設定が必要になるかもしれません。

ファイルベース

ファイルベースストレージの設定は /opt/uApprove/conf/common.properties で行います:

...

Note
uApprove-log.xml が置かれるディレクトリが Tomcat から読み書きできることを確認してください。
Warning
uApprove-log.xml は uApprove.jp が生成しますので、事前に作成しないでください。

 

データベース

最初にデータベースとユーザを作成します:

Panel

mysql -u root -p
mysql>
CREATE DATABASE uApprove;
CREATE USER 'uApprove'@'localhost' IDENTIFIED BY 'uApprove';
GRANT USAGE ON *.* TO 'uApprove'@'localhost';
GRANT SELECT , INSERT , UPDATE , DELETE ON `uApprove`.* TO 'uApprove'@'localhost';
ALTER DATABASE uApprove DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

次に、テーブルを作成します:

...

Note

以下のテーブルはuApprove.jp-2.2.1で追加しました。

  • CheckAlways

以下のテーブルはuApprove.jp-2.2.1cで追加しました。

  • BackChannelAccess
  • NamesOfApprovedService

簡単にデータベースの設定が正しいかを確認するためには、下記コマンドを利用できます:

Panel

echo 'SHOW TABLES' | mysql -u uApprove -p -h localhost uApprove
Enter password:
ArpUser
AttrReleaseApproval
BackChannelAccess
CheckAlways
NamesOfApprovedService
ProviderAccess
ShibProvider

データベースを利用する設定は /opt/uApprove/conf/common.properties で行います:

...

Note

uApprove.jp は BoneCP ライブラリにより提供される JDBC コネクションプーリングサービスをサポートしています。

コンテナー管理コネクションもアプリケーション管理コネクションも設定可能です。

データベース固有の設定すべては /opt/uApprove/conf/database.properties で行います:

...

  • 0 以降がインストールされている必要があります。
  • MySQL 5.1 以降がインストールされている必要があります。

1.2 ライブラリのインストール

ライブラリを IdP のライブラリディレクトリにコピーします:

No Format
# cp $UAPPROVE_INSTALL$/lib/*.jar $IDP_INSTALL$/lib
# cp $UAPPROVE_INSTALL$/lib/jdbc/*.jar $IDP_INSTALL$/lib

JDBC コネクタを IdP の classpath に配置します。提供されているMySQLまたはHSQLのJDBCコネクタのいずれかを使えます:

No Format
# cp $UAPPROVE_INSTALL$/lib/jdbc/optional/#jdbc-connector#.jar $IDP_INSTALL$/lib
Note

$IDP_INSTALL$/libにはそれぞれのライブラリの単一のバージョンのみが存在するようにしてください。

1.3 設定テンプレート

設定テンプレートを IdP の設定ディレクトリにコピーします:

No Format
# cp $UAPPROVE_INSTALL$/manual/configuration/uApprove.properties $IDP_HOME$/conf
# cp $UAPPROVE_INSTALL$/manual/configuration/uApprove.xml $IDP_HOME$/conf

1.4 Webapp ファイル

JSP や CSS といった web アプリケーションファイルおよび画像ファイルを IdP の webapp ディレクトリにコピーします:

No Format
# mkdir $IDP_INSTALL$/src/main/webapp/uApprove
# cp $UAPPROVE_INSTALL$/webapp/* $IDP_INSTALL$/src/main/webapp/uApprove

1.5 データベースの準備

Note

以下のデータベースパラメータは一例です。実際の値は必要に応じて変更してください。特にパスワードは安全なものを用意してください。

  • “uApprove” という名前のデータベースを作成します。
  • ユーザ名 “uApprove” およびパスワード “secret” でデータベースのユーザを作成します。
  • INSERT, SELECT, UPDATE, DELETE の各権限を作成したユーザに付与します。
  • 以下のスキーマを用いて初期テーブル構造を作成します:
    • $UAPPROVE_INSTALL$/manual/storage/terms-of-use-schema.sql
    • $UAPPROVE_INSTALL$/manual/storage/attribute-release-schema.sql
    • $UAPPROVE_INSTALL$/manual/storage/service-access-data-schema.sql

2 基本的なデプロイ

2.1 Web アプリケーションデプロイメントデスクリプタ

IdP の Web アプリケーションデプロイメントデスクリプタ  ($IDP_INSTALL$/src/main/webapp/WEB-INF/web.xml)  を修正します。以下に示すように、実際のファイルを反映してください。

  • contextConfigLocation コンテキストパラメータに $IDP_HOME$/conf/uApprove.xml を追加します。 $IDP_HOME$ の部分は変更せずにこのまま記述してください。後で行いますIdPの再デプロイの際に自動的に置き換えられます。
  • 以下に示す必要となるフィルタおよびサーブレットを追加します。
Code Block
languagexml
<web-app ...>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>$IDP_HOME$/conf/internal.xml; $IDP_HOME$/conf/service.xml; $IDP_HOME$/conf/uApprove.xml;</param-value>
    </context-param>

    <!-- IdP Listeners, Filters and Servlets -->
    <!-- ...                                 -->
    
    <!-- uApprove Filter and Servlets -->

    <filter>
        <filter-name>uApprove</filter-name>
        <filter-class>ch.SWITCH.aai.uApprove.Intercepter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>uApprove</filter-name>
        <url-pattern>/profile/Shibboleth/SSO</url-pattern>
        <url-pattern>/profile/SAML1/SOAP/AttributeQuery</url-pattern>
        <url-pattern>/profile/SAML1/SOAP/ArtifactResolution</url-pattern>
        <url-pattern>/profile/SAML2/POST/SSO</url-pattern>
        <url-pattern>/profile/SAML2/POST-SimpleSign/SSO</url-pattern>
        <url-pattern>/profile/SAML2/Redirect/SSO</url-pattern>
        <url-pattern>/profile/SAML2/Unsolicited/SSO</url-pattern>
        <url-pattern>/Authn/UserPassword</url-pattern>
    </filter-mapping>

    <servlet>
        <servlet-name>uApprove - Terms Of Use</servlet-name>
        <servlet-class>ch.SWITCH.aai.uApprove.
idpplugin
tou.
Plugin<
ToUServlet</
filter-class>
    <init-param>
      <param-name>Config</param-name>
      <param-value>
        /opt/uApprove/conf/idp-plugin.properties;
        /opt/uApprove/conf/common.properties;
      </param-value>
    </init-param>
  </filter>
 
  <filter-mapping>
    <filter-name>uApprove.jp IdP plugin</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>
</web-app>

 

 

Note
uApprove.jp の filter および filter-mapping の定義は web.xml の他の filter および filter-mapping より後に記述しなければなりません。

Shibboleth IdP を再デプロイします:

...

idp.warファイルを${CATALINA_HOME}/webappsにコピーします:

Panel
cp /opt/shibboleth-idp/war/idp.war ${CATALINA_HOME}/webapps/

 

 

SP ブラックリスト

SP ブラックリストはユーザの同意対象から除外するリソースを定義します。
SP ブラックリストはオプションで設定は /opt/uApprove/conf/idp-plugin.properties で行います:

Panel
spBlacklist=/opt/uApprove/conf/sp-blacklist

sp-blacklist 中の各行ではブラックリスト対象のリソースを表す正規表現の定義を行います:

Panel
# 例 1: 特定のリソース
https://sp\.example\.org/shibboleth

# 例 2: SP に存在するすべてのアプリケーション
https://sp\.example\.org/.*

# 例 3: 特定ドメインにあるすべての SP
https://.*\.example\.org/.*

 

属性の順序とブラックリストの作成

uApprove.jp は目的のリソースに当該のユーザのために送信されるすべての属性を表示します。

属性リストの順序を定義できます。さらに、必要ならば属性の隠蔽もできます。属性リストの設定はオプションで、 /opt/uApprove/conf/idp-plugin.properties で行います:

Panel
attributeList=/opt/uApprove/conf/attribute-list
attribute-list は下記のようになります:

 

Panel
# 属性の順序を定義
surname
givenName
postalAddress
...

# 隠す属性
!persistentId
!transientId
Note
attribute-list の属性名は /opt/shibboleth-idp/conf/attribute-resolver.xml の 属性 id に従わなければいけません。

 

その他の設定

データベースを使用する場合は各プロバイダのアクセスに対して記録を残すことが可能で、 これはすべての属性の送信がデータベースに保存されていることを意味します。
IdP プラグイン は monitoring only mode で実行することも可能で、 これはすべてのプロバイダのアクセスを記録しますが、ユーザの同意のためのやりとりは行いません。
viewer web アプリケーションを使用する場合、 IdP プラグインは viewer web アプリケーションのデプロイ先を知っている必要があります。
IdP プラグインに、isPassiveリクエストに関して考慮の必要があることを伝えることができます。
設定は /opt/uApprove/conf/idp-plugin.properties で行います:

Panel

logProviderAccess=false
monitoringOnly=false
uApproveViewer=https://idp.example.org/uApprove/Controller
isPassiveSupport=false

 

 

1.4.3 Viewer 設定

uApprove.jp webapp のための tomcat のデプロイの記述を ${CATALINA_HOME}/conf/Catalina/localhost/uApprove.xml で定義します:

Panel
<Context docBase="/opt/uApprove/war/uApprove.war" privileged="true" antiResourceLocking="false" antiJARLocking="false" unpackWAR="false" />
servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>uApprove - Terms Of Use</servlet-name>
        <url-pattern>/uApprove/TermsOfUse</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>uApprove - Attribute Release</servlet-name>
        <servlet-class>ch.SWITCH.aai.uApprove.ar.AttributeReleaseServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>uApprove - Attribute Release</servlet-name>
        <url-pattern>/uApprove/AttributeRelease</url-pattern>
    </servlet-mapping>

</web-app>

2.2 設定のカスタマイズ

$IDP_HOME$/conf/internal.xml にて以下の変更を行います。 id="shibboleth.OpensamlConfig" の Bean 定義の <constructor-arg> に、 id="uajpMetadataExtensions" の Bean 定義を追加してください:

Code Block
languagexml
<bean id="shibboleth.OpensamlConfig" class="edu.internet2.middleware.shibboleth.common.config.OpensamlConfigBean"
         depends-on="shibboleth.LogbackLogging">
    ...
    <constructor-arg>
        <list>
            <bean id="shibMetadataExtensions" class="org.opensaml.util.resource.ClasspathResource">
                <constructor-arg value="/shibboleth-saml-ext-config.xml"/>
            </bean>
            <bean id="uajpMetadataExtensions" class="org.opensaml.util.resource.ClasspathResource">
                <constructor-arg value="/uApprove-jp-metadata-config.xml"/>
            </bean>
        </list>
    </constructor-arg>
    <property name="parserPool" ref="shibboleth.ParserPool"/>
    ...

$IDP_HOME$/conf/uApprove.xml にて以下の変更を行います:

変更前:

Code Block
languagexml
<context:property-placeholder location="classpath:/configuration/uApprove.properties" />

変更後:

Code Block
languagexml
<context:property-placeholder location="file:$IDP_HOME$/conf/uApprove.properties" />

$IDP_HOME$ は実際のパス (例: /opt/shibboleth-idp) にしてください(その結果、値全体は file:/opt/shibboleth-idp/conf/uApprove.properties のようになります)。

 

正しいIdPのメタデータを$IDP_HOME$/metadata/idp-metadata.xmlに配置してください。そのうえで$IDP_HOME$/metadata/idp-metadata.xmlを読み込むように$IDP_HOME$/conf/relying-party.xmlを編集します:

Code Block
languagexml
    <!-- ========================================== -->
    <!--      Metadata Configuration                -->
    <!-- ========================================== -->
    <!-- MetadataProvider the combining other MetadataProviders -->
    <metadata:MetadataProvider id="ShibbolethMetadata" xsi:type="metadata:ChainingMetadataProvider">
    
        <!-- Load the IdP's own metadata.  This is necessary for artifact support. -->
        <metadata:MetadataProvider id="IdPMD" xsi:type="metadata:FilesystemMetadataProvider"
                                   metadataFile="$IDP_HOME$/metadata/idp-metadata.xml"
                                   maxRefreshDelay="P1D" />

 

データベースおよび必要な機能に応じて $IDP_HOME$/conf/uApprove.properties をカスタマイズします。設定オプションについては uApprove.properties のインライン文書を参照してください。

"Terms of Use" モジュールを有効にする場合(デフォルトで有効になっています)、所属組織に適した文書を設定する必要があります。

"Terms of Use" の HTML ファイルは、 $UAPPROVE_INSTALL$/manual/examples/terms-of-use.html に例があります。

  • $UAPPROVE_INSTALL$/manual/examples/terms-of-use.html$IDP_HOME$/conf/terms-of-use.html にコピーします:

    No Format
    # cp $UAPPROVE_INSTALL$/manual/examples/terms-of-use.html $IDP_HOME$/conf/terms-of-use.html
  • $IDP_HOME$/conf/terms-of-use.html を適切に修正します。
  • それに従って、 $IDP_HOME$/conf/uApprove.properties の中の tou.resource を適切に修正します:

    No Format
    tou.resource = file:$IDP_HOME$/conf/terms-of-use.html

2.3 カスタムテンプレート

テンプレートをカスタマイズしたい場合は、 テンプレートのカスタマイズ を参照してください。

少なくとも、所属機関のロゴを $IDP_INSTALL$/src/main/webapp/uApprove/logo.png にコピーする必要があります。デフォルトではこのファイルはプレースホルダのロゴになっています。
さらに、フェデレーションのロゴを $IDP_INSTALL$/src/main/webapp/uApprove/federation-logo.png にコピーすることもできます(デフォルトでは空のプレースホルダのロゴになっています)。

Tip
  • SWITCHaai フェデレーションの場合は、ロゴは http://www.switch.ch/aai/design/images/switchaai-logo.png から入手できます。

  • 学認の場合は、ロゴは https://www.gakunin.jp/info/logo/ から入手できます。
    大きなサイズのロゴしかないので、 $IDP_INSTALL$/src/main/webapp/uApprove/ にコピーした attribute-release.jsp および attribute-check.jsp の <img> に height, width を指定して表示する大きさを調整してください。

    Code Block
    languagexml
    <img src="<%= request.getContextPath()%>/uApprove/federation-logo.png" alt="" class="federation_logo" height="32" width="162">

2.4 デプロイ

IdP で uApprove JP を有効にするには IdP を再デプロイする必要があります:

No Format
# cd $IDP_INSTALL$
# ./install.sh

idp.war を $CATALINA_HOME$/webapps にコピーします:

No Format
# cp $IDP_HOME$/war/idp.war $CATALINA_HOME$/webapps/

Tomcat を再起動します:

Code Block
# service tomcat6 restart

3 アップグレード

3.1 uApprove.jp 2.2.1 からのアップグレード

本節では、すでに uApprove.jp 2.2.1 / 2.2.1a / 2.2.1b / 2.2.1c をインストール・運用しているIdPにおいて、uApprove JP 2.5.0 にアップグレードする手順を示します。

Note

古いバージョンを完全に消去してからクリーンインストールを実施する必要があります。

インストール方法は 1 インストール を参照してください。

  • デプロイされている uApprove.jp-2.2.1 を削除します。

  • 設定ファイルは新しい設定ファイルを使用し、カスタマイズします。

    Tip

    新しいToUはカスタマイズ可能なHTMLファイルであり、uApprove.jp 2.2.1 の ToU XML からプレーンな HTML ファイルにコピーするだけで使用できます。

  • uajpmf:AttributeUapprove マッチングルールは使用できません。
    uajpmf:AttributeInMetadata を使用したルールに書き換えてください。4.7 AttributeInMetadataマッチングルールを参照してください。

    Expand
    title書き換えのヒント...
    Tip
    1. メタデータに <RequstedAttribute> として宣言されている属性は isRequired 属性に従い、 true の場合は必須、 false の場合はオプショナルに、<RequstedAttribute> として宣言されてない属性およびそもそもメタデータに <AttributeConsumingService> がない場合は非表示とするルールは下記の通り書き換えできます。

      uApprove.jp 2.2.1 uApprove JP 2.5.0
      <PermitValueRule xsi:type="uajpmf:AttributeUapprove"
                      isApproved="true" requestedOnly="true" />
      <PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="true"
                       onlyIfRequired="false" matchIfMetadataSilent="false" />
    2. メタデータに <RequstedAttribute> として宣言されている属性は isRequired 属性に従い、 true の場合は必須、 false の場合はオプショナルに、メタデータに <AttributeConsumingService> がない場合もオプショナルとするルールは下記の通り書き換えできます。ただし、メタデータに <AttributeConsumingService> があるがその中で <RequstedAttribute> として宣言されていない属性は、 uajpmf:AttributeUapprove ではオプショナルとなりますが uajpmf:AttributeInMetadata では非表示となります。

      uApprove.jp 2.2.1 uApprove JP 2.5.0
      <PermitValueRule xsi:type="uajpmf:AttributeUapprove"
                       isApproved="true" requestedOnly="false" />
      <PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="true"
                       onlyIfRequired="false" matchIfMetadataSilent="true" />
    3. メタデータに <AttributeConsumingService> が含まれる場合に適用するポリシーは一対一の書き換えができないため、 <PolicyRequirementRule><basic:ANY> として、各ルールでは <AttributeConsumingService> が含まれない場合の挙動も考慮し matchIfMetadataSilent に反映させてください。

      uApprove.jp 2.2.1 uApprove JP 2.5.0

      <PolicyRequirementRule xsi:type="uajpmf:AttributeUapprove" />

      <PolicyRequirementRule xsi:type="basic:ANY" />

      <PermitValueRule xsi:type="uajpmf:AttributeUapprove"
                       isApproved="true" requestedOnly="false" />
      かつ他のルールで <AttributeConsumingService> が含まれない場合に非表示としている場合
      <PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="true"
                       onlyIfRequired="false" matchIfMetadataSilent="false" />
      ※ただし2.の場合と同じく、<AttributeConsumingService>が存在しかつ同要素中に<RequstedAttribute>として宣言されていない属性に対する挙動が変化する(オプショナル→非表示)ことにご注意ください。
      <PermitValueRule xsi:type="uajpmf:AttributeUapprove"
                      isApproved="true" requestedOnly="true" />
      かつ他のルールで <AttributeConsumingService> が含まれない場合に非表示としている場合
      <PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="true"
                       onlyIfRequired="false" matchIfMetadataSilent="false" />
      <PermitValueRule xsi:type="uajpmf:AttributeUapprove"
                      isApproved="true" requestedOnly="true" />
      かつ他のルールで <AttributeConsumingService> が含まれない場合にオプショナルとしている場合
      <PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="true"
                       onlyIfRequired="false" matchIfMetadataSilent="true" />
      <PermitValueRule xsi:type="uajpmf:AttributeUapprove"
                      isApproved="true" requestedOnly="true" />
      かつ他のルールで <AttributeConsumingService> が含まれない場合に必須としている場合
      <PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="false"
                       onlyIfRequired="false" matchIfMetadataSilent="true" />
      ※ただしisRequired="false"の属性に対する挙動が変化する(オプショナル→必須)ことにご注意ください。
      ※上記の場合の挙動を非表示にするには onlyIfRequied="true" としてください。
    Info

    上記表の斜体の属性はデフォルト値であるため実際の設定では記載していないことが多い。

  • JSP は新しい JSP ファイルを使用します。
    4.1 属性送信の同意のリセットの機能を使用している場合は、 login.jsp を修正します。
  • データベースのマイグレーションはできません。

4 高度なデプロイ

この節では高度な設定についてのトピックを取り上げます。

4.1 属性送信の同意のリセット

利用者がログインのフローの際に属性送信の同意をクリア 1 できる機能を提供する場合は、 $IDP_INSTALL$/src/main/webapp/login.jsp にチェックボックスを追加します:

Code Block
languagexml
<form action="<%=request.getAttribute("actionUrl")%>" method="post">
  ...
  <input id="uApprove.consent-revocation" type="checkbox" name="uApprove.consent-revocation" value="true"/>
  <label for="uApprove.consent-revocation">Clear my attribute release consent</label>
  ...
</form>
Tip

Shibboleth IdP 2.4.0 以降のデフォルトのログインページではCSSでラベルを非表示としています。そのため、<label>でstyle属性を変更する必要があります:

Code Block
languagexml
<form action="<%=request.getAttribute("actionUrl")%>" method="post">
  ...
  <section>
    <input id="uApprove.consent-revocation" type="checkbox" name="uApprove.consent-revocation" value="true"/>
    <label for="uApprove.consent-revocation" style="position: relative; left: 0px;">Clear my attribute release consent</label>
  </section>
  ...
</form>

 

1 クリアとは、アクセスして来たRelying Partyの属性送信の同意のすべての削除が行われた際に一般的な合意も削除することを意味します。

4.2 ストレージ

ファイルのみのストレージ

シンプルなデプロイのために、ファイルのみのデータベースを使うことができます。HSQL はそのようなオプションを提供します。
uApprove.properties にデータベースプロパティを定義します。

Code Block
database.driver             = org.hsqldb.jdbcDriver
database.url        

...

        = jdbc:hsqldb:file:/var/opt/uApprove/

...

Panel
<web-app> ... <context-param>
hsql.db
database.username           = SA
database.password        
<param-name>Config</param-name>
   = 
<param-value> /opt/uApprove/conf/viewer.properties; /opt/uApprove/conf/common.properties; </param-value> </context-param> ... <web-app>

必要であれば、ロゴやナビゲーションメニューを変更します。 ロゴは/opt/uApprove/viewer-2.2.1c/webapp/images以下のイメージファイルやURLを 使うことができます。

設定は/opt/uApprove/viewer-2.2.1c/webapp/header.jspで行います:

Panel
<body class="switchaai">
<div class="box-aai" style="width: 650px;">
  <img src="images/GakuNin_logo.png" alt="GakuNin-logo" class="switchaai" height="32" width="162">
<br>
<span class="switchaai"><a href="http://www.gakunin.jp/" class="switchaai">About GakuNin</a></span>

uApprove webapp をデプロイします:

Panel
cd /opt/uApprove/viewer-2.2.1c/
ant deploy -Duapprove.deployment=/opt/uApprove/war

 

ローカライズ

viewer web アプリケーションは属性名や説明といった静的なテキストと動的なテキストに対して多言語対応です。
静的なテキストは次の言語が対応しています: 英語(en), ドイツ語(de), フランス語(fr), イタリア語(it), ポルトガル語(pt), 日本語(ja)
ローカライズされた属性名と説明は /opt/shibboleth-idp/conf/attribute-resolver.xml (Shibboleth IdP resolver) から取得します。ローカライズされた属性名や説明は変更や追加ができます:

...

 

提供されているスキーマを用いてデータベースを初期化します:

Code Block
echo "SHUTDOWN;" > /tmp/shutdown
java -jar $HSQLDB_HOME$/lib/sqltool.jar \
  --inlineRC=url=jdbc:hsqldb:file:/var/opt/uApprove/hsql.db,user=SA,password= \
  $UAPPROVE_INSTALL$/manual/storage/terms-of-use-schema.sql /tmp/shutdown
java -jar $HSQLDB_HOME$/lib/sqltool.jar \
  --inlineRC=url=jdbc:hsqldb:file:/var/opt/uApprove/hsql.db,user=SA,password= \
  $UAPPROVE_INSTALL$/manual/storage/attribute-relase-schema.sql /tmp/shutdown
java -jar $HSQLDB_HOME$/lib/sqltool.jar \
  --inlineRC=url=jdbc:hsqldb:file:/var/opt/uApprove/hsql.db,user=SA,password= \
  $UAPPROVE_INSTALL$/manual/storage/service-access-data-schema.sql /tmp/shutdown
Note
$HSQLDB_HOME$ は、ダウンロードしたHSQL ディストリビューションを展開した場所を定義します。
Note
ユーザが実行しているコンテナ (例えば Jetty) がdbディレクトリへの書き込み許可を持っていることを確認してください。

SQL文のカスタマイズ

  1. $UAPPROVE_INSTALL$/manual/storage/sql-statements.properties$IDP_HOME$/conf/uApprove.sql-statements.properties にコピーします。
  2. $IDP_HOME$/conf/uApprove.sql-statements.properties をカスタマイズします。
  3. カスタマイズした sql-statements.properties$IDP_HOME/conf/uApprove.xml で有効化します:

    Code Block
    languagexml
    <bean id="uApprove.touModule" class="ch.SWITCH.aai.uApprove.tou.ToUModule" ...>
        <!-- ... -->
        <property name="storage">
            <bean class="ch.SWITCH.aai.uApprove.tou.storage.JDBCStorage" ...
                p:sqlStatements="file:/$IDP_HOME$/conf/uApprove.sql-statements.properties" ... />
        </property>
    </bean>
    
    <!-- ... -->
    
    <bean id="uApprove.attributeReleaseModule" class="ch.SWITCH.aai.uApprove.ar.AttributeReleaseModule" ...>
        <!-- ... -->
        <property name="storage">
            <bean class="ch.SWITCH.aai.uApprove.ar.storage.JDBCStorage" ...
                p:sqlStatements="file:/$IDP_HOME$/conf/uApprove.sql-statements.properties" ... />
        </property>
    </bean>

JDBCコネクションの緩やかな扱い

JDBC ストレージは、データベースの一時的な問題(接続できない等)の場合に緩やかに扱うように設定することができます。通常は、例外を許さずエラーページを表示し、継続的な動作は行われません。
以前の ToU の承諾や属性送信の同意に関わらず、利用者は再度承諾/同意を行わなければならない(既に行っていた場合)か、次回のログインの際に行わなければなりません(最初の場合)。

Note

checkoutTimeout の値は適切な小さな値に設定する必要があります。そうでなければ利用者は長い間待つことになります。

この設定は、 $IDP_HOME$/conf/uApprove.xml の中で定義されています:

Code Block
languagexml
<bean id="uApprove.touModule" class="ch.SWITCH.aai.uApprove.tou.ToUModule" ...>
    <!-- ... -->
    <property name="storage">
        <bean class="ch.SWITCH.aai.uApprove.tou.storage.JDBCStorage" ...
            p:graceful="true" ... />
    </property>
</bean>

<!-- ... -->

<bean id="uApprove.attributeReleaseModule" class="ch.SWITCH.aai.uApprove.ar.AttributeReleaseModule" ...>
    <!-- ... -->
    <property name="storage">
        <bean class="ch.SWITCH.aai.uApprove.ar.storage.JDBCStorage" ...
           p:graceful="true" ... />
    </property>
</bean>

JDBCコネクションプールのチューニング

Info

詳細な設定オプションについては c3p0 configuration を参照してください。

この設定は、 $IDP_HOME$/conf/uApprove.xml の中で定義されています:

Code Block
languagexml
<bean id="uApprove.dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" ...
    

...

.

...

.

...

.

...


    p:idleConnectionTestPeriod="

...

300" 

...

... />
Info

SWITCHaai 属性については doc/attribute-descriptions.xml で次の各言語を用意しています: 英語(en), ドイツ語(de), フランス語(fr), イタリア語(it), 日本語(ja)
学認の属性については、同じファイルで次の各言語を用意しています: 英語(en), 日本語(ja)

viewer はユーザのブラウザが要求する言語で表示します。その言語が利用できない場合はデフォルトのロケールである en を使用します。
特定の言語を強制することもできます。設定は /opt/uApprove/conf/viewer.properties で行います:

 

Panel
useLocale=en_US

 

包括的な同意

ユーザが包括的な属性送信同意を与えることができます。これはユーザが二度と uApprove から送信する属性を問われないということです。 ユーザが異なるリソースのアクセスに対してそれぞれ同意を行うようにするためには /opt/uApprove/conf/viewer.properties に より機能を無効にできます:

Panel
globalConsentPossible=true

 

ログ出力

viewer web アプリケーションは Shibboleth IdP のように LogBack (1.7 リファレンス)を使用します。
logback の設定ファイルは /opt/uApprove/conf/viewer.properties で定義します:

Panel
loggingConfig=/opt/uApprove/conf/logging.xml

ログファイルは logging.xml で設定します。 Tomcat から書き込みできることを確認してください:

Panel
<configuration>
  ...
  <appender class="ch.qos.logback.core.FileAppender" name="RootFileAppender">
    <file>/opt/uApprove/logs/uApprove.log</file>
    ...
  </appender>
  ...
</configuration>

 

Tomcat のフロントエンドとしての Apache

Apache HTTPd を tomcat のフロントエンドに使用している場合は、viewer web アプリケーション にプロキシーする設定を /etc/httpd/conf.d/ssl.conf で行います:

Panel
<VirtualHost idp.example.org:443>
  ...
  <Location /uApprove>
    Allow from all
    ProxyPass ajp://localhost:8009/uApprove
  </Location>
  ...
</VirtualHost>

Apache HTTPd を再起動してください:

Panel
/sbin/service httpd restart

 

1.4.4 Shibboleth IdP の profile handler

uApprove.jpはAttribute QueryのSAML応答メッセージの属性のリストをユーザーの同意内容に応じて生成します。

ネームスペースの定義

プロファイルハンドラファイル(例えば、/opt/shibboleth-idp/conf/handler.xml)内に このプラグインのためにネームスペース宣言を追加する必要があります。以下のように行います:

  1. <ProfileHandlerGroup> ルート要素のxmlns:xsi 属性の前に xmlns:uajpph="http://www.gakunin.jp/ns/uapprove-jp/profile-handler" 属性を追加
  2. xsi:schemaLocation 属性の値のリストの最後に下記を追加
    http://www.gakunin.jp/ns/uapprove-jp/profile-handler classpath:/schema/shibboleth-2.0-idp-profile-handler-uapprovejp.xsd
Panel

...
<ph:ProfileHandlerGroup
        xmlns:ph="urn:mace:shibboleth:2.0:idp:profile-handler"
        xmlns:uajpph="http://www.gakunin.jp/ns/uapprove-jp/profile-handler"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:mace:shibboleth:2.0:idp:profile-handler classpath:/schema/shibboleth-2.0-idp-profile-handler.xsd
                            http://www.gakunin.jp/ns/uapprove-jp/profile-handler classpath:/schema/shibboleth-2.0-idp-profile-handler-uapprovejp.xsd">
...

 

Attribute Queryプロファイルハンドラの変更

Attribute Queryプロファイルハンドラを変更する必要があります。以下のように行います:

  1. xsi:type 属性の値を ph:SAML1AttributeQuery から uajpph:SAML1AttributeQueryUApprove に変更
  2. xsi:type 属性の値を ph:SAML2AttributeQuery から uajpph:SAML2AttributeQueryUApprove に変更

 

Panel

...
    <ph:ProfileHandler xsi:type="uajpph:SAML1AttributeQueryUApprove" inboundBinding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding"
                       outboundBindingEnumeration="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding">
        <ph:RequestPath>/SAML1/SOAP/AttributeQuery</ph:RequestPath>
    </ph:ProfileHandler>
...
    <ph:ProfileHandler xsi:type="uajpph:SAML2AttributeQueryUApprove" inboundBinding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
                       outboundBindingEnumeration="urn:oasis:names:tc:SAML:2.0:bindings:SOAP">
        <ph:RequestPath>/SAML2/SOAP/AttributeQuery</ph:RequestPath>
    </ph:ProfileHandler>
...

 

 

1.4.5 Shibboleth IdP の attribute filter

uApprove.jpはSPのメタデータ内の <RequestedAttribute> 要素 (2. Shibboleth Service Providerの設定を参照ください)と IdP の属性フィルターポリシーファイル内の<AttributeFilterPolicy> 要素を 理解することで、属性が必須であるかオプショナルであるかを決定します。

ネームスペースの定義

属性フィルターポリシーファイル(例えば、/opt/shibboleth-idp/conf/attribute-filter.xml)内に このプラグインのためにネームスペース宣言を追加する必要があります。以下のように行います:

  1. <AttributeFilterPolicyGroup> ルート要素のxmlns:xsi 属性の前に xmlns:uajpmf="http://www.gakunin.jp/ns/uapprove-jp/afp/mf" 属性を追加
  2. xsi:schemaLocation 属性の値のリストの最後に下記を追加
    http://www.gakunin.jp/ns/uapprove-jp/afp/mf classpath:/schema/shibboleth-2.0-afp-mf-uapprovejp.xsd

 

...
<afp:AttributeFilterPolicyGroup id="ShibbolethFilterPolicy"
        xmlns:afp="urn:mace:shibboleth:2.0:afp"
        xmlns:basic="urn:mace:shibboleth:2.0:afp:mf:basic"
        xmlns:saml="urn:mace:shibboleth:2.0:afp:mf:saml"
       
Panel
Tip

他の JDBC コネクションプールライブラリ(例えば、 BoneCP )を使用することも可能です。 bean の設定で正しいデータソースのクラス名を定義し、必要なライブラリを classpath に配置します。

4.3 テンプレート

テンプレートのカスタマイズ

$DP_INSTALL$/src/main/webapp/uApprove/ にある JSP 、 CSS や画像ファイルは自由にカスタマイズすることができます。 JSTL を用いているので容易にカスタマイズ出来るようになっています。

JSTL については JSTL reference を参照してください。

4.4 ローカライズ

カスタムメッセージ

$UAPPROVE_INSTALL$/manual/examples/messages に用意されているリソースバンドルは環境に合わせたり、修正することができます。修正後のファイルを IdP の classpath(例えば $IDP_INSTALL$/src/main/webapp/WEB-INF/classes/uApprove/messages)にコピーすることで利用可能となります。
バンドルのベースを $IDP_HOME$/conf/uApprove.xml で以下のように定義します:

Code Block
languagexml
<bean id="uApprove.viewHelper" class="ch.SWITCH.aai.uApprove.ViewHelper" ...
    p:messagesBase="uApprove.messages" />

日本語のメッセージを修正する場合は、文字コードが UTF-8 のファイル #view#_ja-UTF8.properties を編集してください。編集したファイルを native2ascii コマンドで変換したうえで$IDP_INSTALL$/src/main/webapp/WEB-INF/classes/uApprove/messages にコピーしてください。 

attribute-release.jsp のメッセージを修正する手順は以下のようになります:

No Format
# cd $UAPPROVE_INSTALL$/manual/examples/messages
(attribute-release_ja-UTF8.properties を編集する)
# native2ascii attribute-release_ja-UTF8.properties attribute-release_ja.properties
# cp attribute-release_ja.properties $IDP_INSTALL$/src/main/webapp/WEB-INF/classes/uApprove/messages/

属性の名前と説明

ローカライズされた属性名および説明の設定方法については、 $UAPPROVE_INSTALL$/manual/examples/attribute-descriptions.xml を参照してください。

Relying Partyの名前と説明

現状では、ローカライズされた Relying Party の名前と説明を取得する際には、メタデータのうち <AttributeConsumingService> 要素および <mdui:UIInfo> 要素がサポートされています。

この名前と説明を使用する場合は、SPのメタデータを以下のように記述します:

Code Block
languagexml
<EntityDescriptor entityID="https://sp.example.org/shibboleth">
    <!-- ... -->
    <SPSSODescriptor>
        <Extensions>
            <mdui:UIInfo xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
                <mdui:DisplayName xml:lang="en">Example SP</mdui:DisplayName>
                <!-- Service names in other languages -->
                <mdui:Description xml:lang="en">Some description of Example SP</mdui:Description>
                <!-- Service descriptions in other languages -->
            </mdui:UIInfo>
        </Extensions>
        <!-- ... -->
        <AttributeConsumingService index="1">
            <ServiceName xml:lang="en">Example SP</ServiceName>
            <!-- Service names in other languages -->
            <ServiceDescription xml:lang="en">Some description of Example SP</ServiceDescription>
            <!-- Service descriptions in other languages -->
        </AttributeConsumingService>
    </SPSSODescriptor>
</EntityDescriptor>
Tip

両方記載されている場合には <mdui:UIInfo> 要素が優先されます。

SWITCHaaiフェデレーションのメタデータにはこの情報が含まれています。学認のSPについても海外SPの一部を除いてこの情報が含まれています。

4.5 厳密な比較

利用条件の内容の比較

デフォルトの設定では、利用者がToUを承諾したかどうかは ToU のバージョンの比較のみで行われます。 ToU の内容の比較を有効にしたい場合は、 $IDP_HOME$/conf/uApprove.xml にて以下のように設定します:

Code Block
languagexml
<bean id="uApprove.touModule" ... p:compareContent="true" ... />

4.6 監査ロギング

uApprove JP は、(IdP の監査ロギング機能を使用して) $IDP_HOME$/logs/idp-audit.log への監査ロギングを行うことができます。

利用条件の監査ロギングの有効化

ToU の監査ロギングを有効にしたい場合は、 $IDP_HOME$/conf/uApprove.xml にて以下のように設定します:

Code Block
languagexml
<bean id="uApprove.touModule" ... p:auditLogEnabled="true" ... />

ログ出力例:

No Format
20120101T010000Z|ch.SWITCH.aai.uApprove|||tou.acceptance|null|null|null|student1||1.0,5b2ee897c08c79a09cd57e8602d605bf8c52db17de9793677c36b5c78644b2b3,|

属性の送信の監査ロギングの有効化

属性の送信の監査ロギングを有効にしたい場合は、 $IDP_HOME$/conf/uApprove.xml にて以下のように設定します:

Code Block
languagexml
<bean id="uApprove.attributeReleaseModule" ... p:auditLogEnabled="true" ... />

ログ出力例:

No Format
20120101T010000Z|ch.SWITCH.aai.uApprove||https://sp.example.org/shibboleth|ar.consent|null|null|null|student1||uid,surname,givenName,|
20120101T010000Z|ch.SWITCH.aai.uApprove||https://sp.example.org/shibboleth|ar.clearConsent|null|null|null|student1|||
20120101T010000Z|ch.SWITCH.aai.uApprove|||ar.generalConsent|null|null|null|student1|||

4.7 AttributeInMetadataマッチングルール

AttributeInMetadataマッチングルールの設定

このルールは、SP がその属性を必要とした場合に、そのメタデータにより属性の送信を許可します。属性は <SPSSODescriptor> 中の <AttributeConsumingService> によって示されます。 <RequestedAttribute> で isRequired="true" を記述した属性は必須とマークされ、 isRequired="false" を記述した属性はオプションとマークされます。詳細は SAML メタデータを参照してください。

Note

以下の点に注意してください:

  • このフィルタの利用には属性の要求者のメタデータがロードされ利用可能である必要があります。
  • 要求者のメタデータは <SPSSODescriptor> ロールを持っている必要があります。このロールがリストされた属性を持っているためです。
  • AttributeInMetadataマッチングルールは値のルールとしてのみ働き、<PermitValueRule> の場合のみ意味をなします。

名前空間の定義

属性フィルタのポリシーにおいて、このプラグイン用に名前空間の定義を加える必要があります。以下のように行います:

...

...

...

ルールの定義

このルールは <PermitValueRule xsi:type="uajpmf:AttributeInMetadata"> のように記述します。以下のオプショナルな属性を使用できます: 

onlyIfRequired

...

Attribute RuleのPermit/Deny Value Rule

...

必須とマークされた属性のみ送信を許可し、オプションとマークされたものは送信しないブーリアンフラグです。

Warning

uApprove.jp-2.2.1a 以降はネームスペースの URI が変更になりました。

  • uApprove.jp-2.2.1
    http://www.gakunin.jp/ns/uapprove-jp
  • uApprove.jp-2.2.1a 以降
    http://www.gakunin.jp/ns/uapprove-jp/afp/mf

 

ルールの定義

uApprove.jpはPolicy RequirementルールとAttribute RulesのPermit/Deny Valueルールを拡張します:

...

  • このルールは<afp:PolicyRequirementRule xsi:type="uajpmf:AttributeUapprove"> 要素によって定義されます。 そして、SPのメタデータ内に<AttributeConsumingService> 要素が存在する場合に適用されます。

デフォルト値は true です。

matchIfMetadataSilent

メタデータに <AttributeConsumingService> がない場合にオプションとマークするかどうかを決定するブーリアンフラグです。

デフォルト値は false です。

onlyIfChecked

オプションとマークされた属性の送信を利用者が許可/拒否できるかどうかを示すブーリアンフラグです。
false の時の動作は Shibboleth IdP 2.4.0 以降の saml:AttributeInMetadata と同一になり、オプションとマークされた属性も必須とマークされた属性と同様にチェックボックスなしで表示されます

デフォルト値は false です。 

AttributeInMetadata マッチファンクションを使用した <PermitValueRule> の書き方は下記のようになります:

Code Block
languagexml
<PermitValueRule xsi:type="uajpmf:

...

isApproved (オプショナル)

...

AttributeInMetadata" onlyIfRequired="false"
                 onlyIfChecked="true"

...

requestedOnly (オプショナル)

  • SPのメタデータで定義された属性のみを表示するか否かを示すブーリアン値です。
    デフォルト値: false

xsi:type="uajpmf:AttributeUapprove" を持たない許可された属性は必須属性として扱われます。

uajpmf:AttributeUapprove Matchファンクションを用いたPermit Valueルールの例を示します:

>

オプションとマークされた属性をチェックボックスつきで表示します。チェックボックスをチェックしたときだけ送信します。

AttributeInMetadata マッチファンクションを使用した <PermitValueRule> の設定例を示します:

Code Block
languagexml
<!--    ==================================================================================
case 1: メタデータ内にmail AttributeConsumingService属性、eduPersonPrincipalName 要素を持つSPにマッチします。属性、eduPersonAffiliation 属性を、メタデータの
       eduPersonPrincipalName 属性はオプショナル属性で、ユーザは送信するか否かを選択できます。 定義と照合するルールです。

        メタデータで isRequired="true" が指定されている属性は、すべて必須情報になり常に
        送信されます。

        メタデータで isRequired="false" が指定されている属性は以下の通りです。
        * mail 属性は必須情報となり常に送信されます。
        * eduPersonPrincipalName 属性はオプション情報となります。属性選択画面ではチェック
          ボックスつきで表示されます。利用者がチェックボックスをチェックした場合に限り送信
          されます。
        * eduPersonAffiliation 属性は必須属性で、常に送信されます。属性は送信されません。

        メタデータに AttributeConsumingService をもたない SP の場合はどの属性も送信しません。
        ================================================================================== -->
<afp:AttributeFilterPolicy id="PolicyforSPwithAttributeConsumingService">
    <afp:PolicyRequirementRule xsi:type="uajpmfbasic:AttributeUapproveANY" />

    <afp:AttributeRule attributeID="eduPersonPrincipalNamemail">
        <afp:PermitValueRule xsi:type="uajpmf:AttributeUapprove" AttributeInMetadata"
                             onlyIfRequired="false" />
    </afp:AttributeRule>

    <afp:AttributeRule attributeID="eduPersonAffiliationeduPersonPrincipalName">
        <afp:PermitValueRule xsi:type="basicuajpmf:ANY" AttributeInMetadata"
                             onlyIfRequired="false"
                             onlyIfChecked="true" />
    </afp:AttributeRule>

    ...
<afp:AttributeRule attributeID="eduPersonAffiliation">
        <afp:PermitValueRule xsi:type="uajpmf:AttributeInMetadata" />
    </afp:AttributeRule>

</afp:AttributeFilterPolicy>

<!--    ==================================================================================
case 2: メタデータ内にメタデータに AttributeConsumingService 要素を持たないSPにマッチします。がない SP に対するルールを追加したルール
      eduPersonPrincipalName 属性 および eduPersonAffiliation 属性共に必須属性です。  です。

        AttributeConsumingService 要素を持たない SP の場合は以下の通りです。
        * mail 属性は必須情報となり常に送信されます。
        * eduPersonPrincipalName 属性はオプション情報となります。属性選択画面ではチェック
          ボックスつきで表示されます。利用者がチェックボックスをチェックした場合に限り送信
          されます。
        * eduPersonAffiliation 属性は送信されません。

        AttributeConsumingService 要素を持つ SP の場合は case 1 と同じです。
        ================================================================================== -->
<afp:AttributeFilterPolicy id="PolicyforSPwithoutAttributeConsumingService">
    <afp:PolicyRequirementRule xsi:type="basic:NOTANY" />

    <afp:AttributeRule attributeID="mail">
 <basic:Rule       <afp:PermitValueRule xsi:type="uajpmf:AttributeUapproveAttributeInMetadata"/>
    </afp:PolicyRequirementRule>      <afp:AttributeRule attributeID="eduPersonPrincipalName">                   matchIfMetadataSilent="true"
        <afp:PermitValueRule xsi:type="basic:ANY                     onlyIfRequired="false" />
    </afp:AttributeRule>

    <afp:AttributeRule attributeID="eduPersonAffiliationeduPersonPrincipalName">
        <afp:PermitValueRule xsi:type="basicuajpmf:ANYAttributeInMetadata"
/>     </afp:AttributeRule>      ... </afp:AttributeFilterPolicy>  <!--    ==================================================================================
case 3: 全てのSPにマッチします。           matchIfMetadataSilent="true"
           eduPersonPrincipalName 属性 および eduPersonAffiliation 属性はオプショナル属性です。         ================================================================================== --> <afp:AttributeFilterPolicy id   onlyIfRequired="PolicyforAnyonefalse">
    <afp:PolicyRequirementRule xsi:type="basic:ANY" />      <afp:AttributeRule attributeID="eduPersonPrincipalName">         <afp:PermitValueRule xsi:type="uajpmf:AttributeUapprove       onlyIfChecked="true" />
    </afp:AttributeRule>

    <afp:AttributeRule attributeID="eduPersonAffiliation">
        <afp:PermitValueRule xsi:type="uajpmf:AttributeUapproveAttributeInMetadata" />
    </afp:AttributeRule>

    ...
</afp:AttributeFilterPolicy>

 

1.4.6 Reset-approvals 設定

Warning

list-approvalsアプリケーションを使用する場合は設定しないでください。

オプションである reset-approvals は以下の二通りの方法で操作可能です:

  • In-flow モード
    • ユーザがログイン手続きにおいてリセット可能であることを意味します。 たとえばログインフォームのチェックボックスを使用するといった方法です。
  • Standalone モード
    • JSP などを直接呼ぶ操作です。

In-flow モード

In-Flow の reset-approvals アプリケーションを有効にするには、Shibboleth の UsernamePassword ログインフォーム ${CATALINA_HOME}/webapps/idp/login.jsp にチェックボックスの追加で対応可能です。

Warning

in-flow の reset-approvals アプリケーションの設定は提供されている JAAS UsernamePassword ログインハンドラのためのものです。 他のログインハンドラ(例えば RemoteUser)を使用している場合は GET パラメータが IdP プラグインに送信されることを確かめてください。

 

 

Panel

...
<form ...>
  <table>
  ...
    <tr>
      <td colspan="2">
        <input type="checkbox" name="resetuserconsent" value="true" />
        Reset my attribute release approvals
      </td>
    </tr>
  </table>
</form>
...

 

 

Standalone モード

Standalone モードのためには、JSP はコンテナ管理による認証、もしくは REMOTE_USER を提供する Shibboleth Service Provider のどちらかで JSP が保護されている必要があります。

Info

Shibboleth Service Provider で JSP を保護する設定方法については次節の 1.4.7 List-approvals 設定 をご参照ください。IdP から uid を送信する設定についても記載されています。

standalone JSP は下記のように呼ばれます。この際パラメータ standalone-next-url が設定される必要があります。

https://idp.example.org/uApprove/reset-approvals.jsp?standalone-next-url=http://go.here.org/after/reset

1.4.7 List-approvals 設定

Warning

reset-approvalsアプリケーションを使用する場合は設定しないでください。 以前のバージョンでreset-approvalsアプリケーションを使用するように設定している場合は、その設定を削除してから以下の設定を行ってください。

オプションである list-approvals はStandalone モードで使用します。 REMOTE_USER を提供するShibboleth Service Provider で JSP が保護されている必要があります。

SPの設定

...

/etc/shibboleth/shibboleth2.xmlで uid を REMOTE_USERに設定します。

...

4.8 AttributeQuery プロファイルハンドラの変更

uApprove JP は Attribute Query の SAML 応答メッセージの属性のリストを利用者の同意内容に応じて生成します。

プロファイルハンドラの設定

名前空間の定義

プロファイルハンドラファイル(例えば、$IDP_HOME$/conf/handler.xml) 内にこのプラグインの名前空間の定義を追加する必要があります。以下のように行います:

  1. <ProfileHandlerGroup> ルートの xmlns:xsi 属性の前に xmlns:uajpph="http://www.gakunin.jp/ns/uapprove-jp/profile-handler" 属性を追加
  2. xsi:schemaLocation 属性の値のリストの最後に下記を追加
    http://www.gakunin.jp/ns/uapprove-jp/profile-handler classpath:/schema/shibboleth-2.0-idp-profile-handler-uapprovejp.xsd
Code Block
languagexml
...
<ph:ProfileHandlerGroup
        xmlns:ph="urn:mace:shibboleth:2.0:idp:profile-handler"
        xmlns:uajpph="http://www.gakunin.jp/ns/uapprove-jp/profile-handler"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:mace:shibboleth:2.0:idp:profile-handler classpath:/schema/shibboleth-2.0-idp-profile-handler.xsd
                            http://www.gakunin.jp/ns/uapprove-jp/profile-handler classpath:/schema/shibboleth-2.0-idp-profile-handler-uapprovejp.xsd">
... 

プロファイルハンドラ定義の変更

Attribute Query プロファイルハンドラを変更する必要があります。以下のように行います:

  1. xsi:type 属性の値を ph:SAML1AttributeQuery から uajpph:SAML1AttributeQueryUApprove に変更
  2. xsi:type 属性の値を ph:SAML2AttributeQuery から uajpph:SAML2AttributeQueryUApprove に変更
Code Block
languagexml
...
    <ph:ProfileHandler xsi:type="uajpph:SAML1AttributeQueryUApprove" inboundBinding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding"
                       outboundBindingEnumeration="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding">
        <ph:RequestPath>/SAML1/SOAP/AttributeQuery</ph:RequestPath>
    </ph:ProfileHandler>
...
    <ph:ProfileHandler xsi:type="uajpph:SAML2AttributeQueryUApprove" inboundBinding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"
                       outboundBindingEnumeration="urn:oasis:names:tc:SAML:2.0:bindings:SOAP">
        <ph:RequestPath>/SAML2/SOAP/AttributeQuery</ph:RequestPath>
    </ph:ProfileHandler>
... 

SPがブラックリストに登録されている場合の挙動について

uApprove.properitesservices.blacklistプロパティが true の場合、services プロパティは SP のブラックリストになります。services プロパティに正規表現を記述すると、エンティティIDがマッチした SP には uApprove を使用せずに接続します。このとき、属性の送信情報はストレージに保存しません。

uApprove JP の AttribureQuery プロファイルハンドラを設定すると、ブラックリストに登録されている SP からの AttribureQuery には、属性情報を応答しません。ただし、SP がブラックリストに登録される前に属性の送信に同意していた場合は、「今回は情報を送信することに同意します。次のログイン時に再度チェックします」で同 意した場合をのぞき、同意済みの情報を応答します。

Note

uApprove JP の AttribureQuery プロファイルハンドラを設定した環境では、SAML1 SP をブラックリストに登録しないでください。登録すると、IdP はSAML1 SP に属性情報を送信できなくなります。

 

4.9 属性送信済み SP の一覧

Shibboleth SPのインストールと設定

属性送信済み SP の一覧のWebページは REMOTE_USER を提供する Shibboleth SP  で保護されている必要があります。

IdP サーバに Shibboleth SP をインストールし、以下の設定をしてください。

Info

以下はインストールしたShibboleth SPをIdPと連携させるための設定(および対向となるShibboleth IdPの設定)の一例です。すでにShibboleth SPを稼働させている場合は従来の挙動を壊さないように配慮してください。
また、学認の技術ガイドに従ってShibboleth SPをインストールした場合は、学認メタデータを読み込まないようにすること、DSの設定を削除することに特にご注意ください。

 

REMOTE_USER の設定

/etc/shibboleth/shibboleth2.xml で uidREMOTE_USER に設定します:

Code Block
languagexml
...
    <!-- The ApplicationDefaults element is where most of Shibboleth's SAML bits are defined. -->
    <ApplicationDefaults entityID="https://idp.example.ac.jp/shibboleth-sp"
                         REMOTE_USER="uid

...

">
...

SSO の設定

同じマシン上の IdP に接続するため、 /etc/shibboleth/shibboleth2.xmlSSO から DS の設定を削除します:

Code Block
languagexml
...
            <SSO entityID="https://idp.example.ac.jp/idp/shibboleth">
              SAML2 SAML1
            </SSO>
...

IdP のメタデータ設定

/etc/shibboleth/shibboleth2.xml で同じマシン上の IdP のメタデータの読み込むための設定を追加します:

Code Block
languagexml
...
        <!-- Example of locally maintained metadata. -->
        <MetadataProvider type="XML" file="$IDP_HOME$/metadata/idp-metadata.xml" />
...

uid の受信設定

/etc/shibboleth/attribute-map.

...

xml IdP から uid

...

を受け取る設定を追加します:

...

Code Block
languagexml
...
    <Attribute name="urn:mace:dir:attribute-def:uid" id="uid"/>
    <Attribute name="urn:oid:0.9.2342.19200300.100.1.1" id="uid"/>

...

IdPの設定

  • /opt/shibboleth-idp/conf/attribute-resolver.xmlにuidを設定します。
  • /opt/shibboleth-idp/conf/attribute-filter.xmlでuidのみを送出するように設定します。

JSPの設定

/etc/httpd/conf.d/ssl.conf で以下のように設定します。

...



</Attributes>

shibd を再起動してください。(なお、httpd の再起動は本節の最後でまとめて行います)

IdP の設定

SP のメタデータ設定

$IDP_HOME$/conf/relying-party.xml 同一マシンの SP のメタデータを読み込むための設定を追加します:

Code Block
languagexml
...

...

        <!-- Load the local SP's metadata. -->
        <metadata:MetadataProvider id="LocalSPMD" xsi:type="metadata:FilesystemMetadataProvider"
                                   metadataFile="$IDP_HOME$/metadata/sp-metadata.xml"
                                   maxRefreshDelay="P1D" />
...

...

Tip

...

SP のメタデータの雛形を以下のURLから入手できます:

下記のように実行します。

https://idp.example.

...

1.5 実行

Tomcat を再起動してください:

 

Panel
/sbin/service tomcat6 stop && sleep 10 && /sbin/service tomcat6 start
Note
もしも Tomcat マネージャ(http://idp.example.org:8080/manager/html/)がインストールされている場合、web アプリケーションは Tomcat とは独立に容易に再起動できます。
Note
ログをチェックして、IdP と uApprove web アプリケーションの起動が成功しているかどうか確認してください。
もし成功している場合はあなたの Identity Provider を用いて適当な Service Provider へのアクセスを試みてください。

 

1.6 トラブルシューティング

1.6.1 ログ出力

IdP プラグインは Shibboleth IdP web アプリケーション中で動作するため IdP logger を使用します。IdP logger の設定は /opt/shibboleth-idp/conf/logging.xml で行います:

Panel
...
<logger name="ch.SWITCH.aai" level="DEBUG">
<appender-ref ref="IDP_PROCESS"/>
</logger>
<logger name="jp.gakunin.shibboleth" level="DEBUG">
<appender-ref ref="IDP_PROCESS"/>
</logger> ...

uApprove.jp viewer のログは 1.4.3 で説明したように設定します。log level を DEBUG に変更します。

1.6.2 Tomcat, Jasper JSP compiling for 1.5 target

uApprove.jp は JDK1.5 を対象に提供されています。あなたの Tomcat がバージョン 1.5 以上の JDK で実行していたとしても Jasper エンジンは実行中の JSP を別ターゲット(例 1.3)向けにコンパイルしている可能性があります。 以下の ${CATALINA_HOME}/conf/web.xml の設定は JSP のコンパイルターゲットを指定するものです:

Panel
<servlet>
  ...
  <init-param>
    <param-name>compilerSourceVM</param-name>
    <param-value>1.5</param-value>
  </init-param>
  <init-param>
    <param-name>compilerTargetVM</param-name>
    <param-value>1.5</param-value>
  </init-param>
  ...
</servlet>

 

1.7 リファレンス

2. Shibboleth Service Providerの設定

2.1 Metadata

SPは <SPSSODescriptor> 要素内の <AttributeConsumingService> 要素内の <RequestedAttribute> 要素を用いて SP が必須とする、もしくは希望する属性を定義できます。 <RequestedAttribute> 要素は下記の属性を持ちます:

  • isRequired (optional)
    • SPによって必須である、もしくは希望する属性を示すブーリアン値。
      デフォルト値: false (希望する)。

2.1.1 属性の説明

<RequestedAttribute>要素に以下の属性を記述して、属性の説明文を定義できます。定義した説明文は、uApprove.jp の viewer アプリケーションによって表示されます。

  • uajpmd:description (optional)
    • 属性の説明文。

<uajpmd:RequestedAttributeExtension> 要素を用いると、複数の言語で説明文を定義することができます。 <uajpmd:RequestedAttributeExtension> 要素の定義は uajpmd:description属性の定義に優先します。 <uajpmd:RequestedAttributeExtension> 要素は <SPSSODescriptor> 要素の子要素 <Extensions> に記述します。

<uajpmd:RequestedAttributeExtension> 要素には以下の属性が必要です。

  • uajpmd:FriendlyName
    • 関連づけたい <RequestedAttribute> 要素のFriendlyName 属性の値と同じ値を記述します。

説明文は <uajpmd:Description> 要素に記述します。<uajpmd:RequestedAttributeExtension> 要素は一つ以上の <uajpmd:Description> 要素をもつことができます。

<uajpmd:Description> 要素には以下の属性が必要です。

  • uajpmd:FriendlyName
    • 関連づけたい <RequestedAttribute> 要素のFriendlyName 属性の値と同じ値を記述します。

<AttributeConsumingService> 要素の例を下記に示します:

Panel
<md:EntitiesDescriptor

ac.jp/Shibboleth.sso/Metadata

attribute-resolver.xml の設定

$IDP_HOME$/conf/attribute-resolver.xml に uid の定義を追加します:

Code Block
languagexml
<resolver:AttributeDefinition xsi:type="ad:Simple" id="uid" sourceAttributeID="uid">
    <resolver:Dependency ref="myLDAP" />
    <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:uid" />
    <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" />
</resolver:AttributeDefinition>

attribute-filter.xml の設定

$IDP_HOME$/conf/attribute-filter.xml で uid のみを送出するように設定します:

Code Block
languagexml
<afp:AttributeFilterPolicy id="PolicyforLocalSP">
    <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString"
                               value="https://idp.example.ac.jp/shibboleth-sp" />
    <afp:AttributeRule attributeID="uid">
        <afp:PermitValueRule xsi:type="basic:ANY"/>
    </afp:AttributeRule>
</afp:AttributeFilterPolicy>
Info

id属性には他と重複しない文字列を設定してください。

uApprove.properies の設定

IdP 上で動作する SP なので、uApprove JPによる同意をスキップするために以下の設定を推奨します。

  • services にエンティティ ID の正規表現を追加します。
  • services.blacklist は true を設定します。
Code Block
services                    = ^https://idp\.example\.ac\.jp/shibboleth-sp$
services.blacklist          = true

 

Web アプリケーションデプロイメントデスクリプタ に ListApprovalsServlet サーブレットについての設定を追加します:

Code Block
languagexml
<web-app ...>

    ...
    <servlet>
        <servlet-name>ListConsentedSP - List of consented SP</servlet-name>
        <servlet-class>jp.gakunin.uApprovejp.lcsp.ListApprovalsServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ListConsentedSP - List of consented SP</servlet-name>
        <url-pattern>/uApprove/ListConsentedSP</url-pattern>
    </servlet-mapping>

</web-app>

IdP の再デプロイが必要です。2.4 デプロイを参照してください。

httpd の設定

/etc/httpd/conf.d/ssl.conf で以下のように設定します:

Code Block
languagetext
...
<Location /idp/uApprove/ListConsentedSP>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  require valid-user
</Location>
...

httpd を再起動してください。

属性送信済み SP の一覧の URL

属性送信済み SP の一覧のURLは以下のようになります:

https://idp.example.ac.jp/idp/uApprove/ListConsentedSP

終了ページの設定

終了ボタンを押すと、https://idp.example.ac.jp/idp/uApprove/list-approvals-exit.html に移動します。移動先は uApprove.propertieslcsp.returnURL に URL を記述して変更できます。

設定例:

No Format
lcsp.returnURL = https://idp.exmaple.ac.jp/your-made-page.html

5 トラブルシューティング

5.1 トラブルシューティング

  • ERROR ないし WARN メッセージについては、 $IDP_HOME$/logs/idp-process.log をチェックしてください。
  • $CATALINA_HOME$/logs にある Tomcat のログファイルにエラーメッセージがないかチェックしてください。

5.2 詳細なログ設定

DEBUG ないし TRACE ログレベルを有効にしたい場合は、 $IDP_HOME$/conf/logging.xml にて以下のように設定します:

Code Block
languagexml
<logger name="ch.SWITCH.aai.uApprove" level="DEBUG"/>
<logger name="jp.gakunin.shibboleth" level="DEBUG"/>
<logger name="jp.gakunin.uApprovejp" level="DEBUG"/>

A SPでの属性使用用途通知

SP 管理者は SP のメタデータに属性の使用用途を記述することで、SP の利用者に属性の使用用途 (例えば、プロファイルの初期値として使用) を uApprove JP 内で通知することができます。

A.1 設定

属性使用用途通知機能は、 <RequestedAttribute>uajpmd:description 属性を追加する、または、 <SPSSODescriptor><Extensions><uajpmd:RequestedAttributeExtension> を追加することで利用できます。

<uajpmd:RequestedAttributeExtension> は多言語に対応しています。また、一つの属性に両方が設定されている場合は、 <uajpmd:RequestedAttributeExtension> が優先されます。

uajpmd:description

この属性は <ResquestedAttribute> にて定義します:

uajpmd:description

属性の使用用途の文字列です。

uajpmd:descrption を使用した <RequestedAttribute> の設定例:

Code Block
languagexml
<md:RequestedAttribute FriendlyName="mail"
        Name="urn:oid:0.9.2342.19200300.100.1.3"
        NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
        uajpmd:description="The mail attribute is used as the initial value of the mail address field of the registration form."/>

<uajpmd:RequestedAttributeExtension>

<uajpmd:RequestedAttributeExtension> は以下の必須属性と一つ以上の <uajpmd:Description> と共に設定します:

uajpmd:FriendlyName関連づけたい <RequestedAttribute> の FriendlyName 属性の値です。

<uajpmd:Description> には属性の使用用途を記述します。<uajpmd:RequestedAttributeExtension> は以下の必須属性と共に設定します:

xml:lang

属性の使用用途の言語です。

<uajpmd:RequestedAttributeExtension> の設定例:

Code Block
languagexml
<md:EntitiesDescriptor Name="uapprovejp-dev-metadata.xml"

                   

                    xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"

                   

                    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"

                   

                    xmlns:shibmd="urn:mace:shibboleth:metadata:1.0"

                   

                    xmlns:uajpmd="http://www.gakunin.jp/ns/uapprove-jp/metadata"

                   

                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 

  ...

 

  <md:EntityDescriptor entityID="...">

   

    <md:SPSSODescriptor>

     

      ...

     


      <md:Extensions>

        ...
        <RequestedAttributeExtension
          xmlns="http://www.gakunin.jp/ns/uapprove-jp/metadata"
          FriendlyName="displayName">
          <Description

        ...
        <uajpmd:RequestedAttributeExtension FriendlyName="mail">
          <uajpmd:Description xml:lang="en"
>Our SP uses the displayName attribute in order to display your name to our web page</Description>
          <Description
>The mail attribute is used as the initial value of the mail address field of the registration form.</uajpmd:Description>
          <uajpmd:Description xml:lang="ja"
>SPはウェブページに名前を表示するためにdisplayName属性を使用します<
>mail 属性を登録ページのメールアドレス欄の初期値として使用します</
Description>
       
uajpmd:Description>
        </
RequestedAttributeExtension>
       
uajpmd:RequestedAttributeExtension>
        ...

     

      </md:Extensions>

     

      ...

     


      <md:AttributeConsumingService index="1">

          <md

      	<md:ServiceName xml:lang="en">Sample Service</md:ServiceName>

          <md:ServiceDescription xml:lang="en">
              An example service that requires a human-readable identifier and optional name and e-mail address.
          </md:ServiceDescription>
        <md:RequestedAttribute FriendlyName="eduPersonPrincipalName"
                          


        <md:RequestedAttribute FriendlyName="eduPersonPrincipalName"
                               Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6"

                          

                               NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"

                          

                               isRequired="true"/>

       

        <md:RequestedAttribute FriendlyName="mail"

                          

                               Name="urn:oid:0.9.2342.19200300.100.1.3"

                          

                               NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"

                           uajpmd:description="Our SP uses the mail attribute in order to fill the registration form with your mail address."/>
        <md:RequestedAttribute FriendlyName="displayName"
                           Name="urn:oid:2.16.840.1.113730.3.1.241"
                           NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"/>
     
/>
      </md:AttributeConsumingService>

     

      ...

 

    </md:SPSSODescriptor>

3 アップデート

2.2.1bから2.2.1cへのアップデートについては、基本的には1.3 インストールおよび1.4 設定に記述しているように Shibboleth IdP および Viewer を再デプロイしていただきますが、特に注意いただきたい手順を以下に挙げます。

3.1 テーブルの追加

2.2.1cでは以下のテーブルを追加する必要があります。

  • BackChannelAccess
    バックチャネルアクセスの記録用
  • NamesOfApprovedService
    同意済みSPのサービス名

...

 

3.2 mysql.commandsの更新

SQLを定義したmysql.commandsファイルを2.2.1c付属のファイルに差し換えます。

Panel

cd /opt/uApprove
unzip viewer-2.2.1c-bin.zip
cp viewer-2.2.1c/conf-template/mysql.commands conf/

 

3.3 古いjarファイルの削除

以下のディレクトリに2.2.1bのjarファイル(common-2.2.1b.jar, idp-plugin-2.2.1b.jar)が残っている場合は、Shibboleth IdP および Viewer をデプロイする前に削除します。

  • /opt/shibboleth-identityprovider-2.x/lib/
  • $CATALINA_HOME/work/Catalina/localhost/idp/WEB-INF/lib/
  • $CATALINA_HOME/work/Catalina/localhost/uApprove/WEB-INF/lib/

3.4 web.xmlの確認

  • /opt/shibboleth-identityprovider-2.x/src/main/webapp/WEB-INF/web.xml

に追加した設定が 1.4.2 IdP プラグインの設定 の通りになっているか確認してください。
特にuApprove.jpの以前のバージョンでは以下の要素が無かったようですので、この部分に特にご注意ください。

Code Block
languagexml
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher> 

    ...
  </md:EntityDescriptor>
  ...
</md:EntitiesDescriptor>