送信属性同意機能の設定(IdPv4対応uApproveJP)

送信属性同意機能の設定(IdPv4対応uApproveJP)

1. はじめに

本メニューでは、IdPをカスタマイズします。
uApproveJP-4をインストールして実現します。
送信属性の設定をオプショナルとしたり、また必須属性と設定するなど組み込み機能と比べ
柔軟な設定が可能となっています。 

 


2. 実習セミナーでは

一般的な手順は「3. 手順書」に記載されています。ただし、本実習セミナー特有の設定内容等を以下に記載しています。
両方を参照しつつ作業を進めてください。

・前提条件

実習セミナーでは、リレーショナルデータベースを用いたものとします。
事前準備として、以下のようにCentOS 7の標準であるMariaDBをインストールし、
起動させておいてください。

# yum install mariadb-server
# systemctl start mariadb

なお、実習では不要ですが実運用の場合は以下を実行してください。
(OS起動時の自動起動および、rootアカウントにパスワードを設定します)

# systemctl enable mariadb
# mysql_secure_installation

なお、手順書中mysqlコマンドはMariaDBのものが使われ、プロンプトが mysql> ではなく mariadb> になりますが問題ありません。

・インストール

uApproveJPのパッケージは、「3.手順書」に記載されていますが、実習セミナーでは
予めダウンロードした「/root/PKG」内の uApproveJP-4.0.0-bin.zip を使います。
以下のコマンドを実行して、手順書の記載に合わせて「/usr/local/src」配下に展開しておきます。

# cd /root/PKG
# unzip -d /usr/local/src uApproveJP-4.0.0-bin.zip

以降、手順書中の $UAPPROVE_INSTALL$ の部分は /usr/local/src/uApproveJP-4.0.0/ と読み替えてください。


・AttributeInMetadataマッチングルール

/opt/shibboleth-idp/conf/attribute-filter.xmlを設定します。

AttributeFilterPolicyGroupタグにuApproveJP用の設定を2箇所に追加します。

<AttributeFilterPolicyGroup id="ShibbolethFilterPolicyForGakuNinTestFed"
xmlns="urn:mace:shibboleth:2.0:afp"
xmlns:uajpmf="http://www.gakunin.jp/ns/uapprove-jp/afp/mf"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd
http://www.gakunin.jp/ns/uapprove-jp/afp/mf http://www.gakunin.jp/schema/idp/gakunin-afp-mf-uapprovejp.xsd">

実習セミナーでは、「sn、givenName、mail、eduPersonAffiliation」をオプショナル属性とします。
以下のように4つの属性を全て変更してください。
例)eduPersonAffiliation属性の設定
<!--
<AttributeRule attributeID="eduPersonAffiliation" permitAny="true" />
-->
<AttributeRule attributeID="eduPersonAffiliation">
   <PermitValueRule xsi:type="uajpmf:AttributeInMetadata"
                               matchIfMetadataSilent="true"
                               onlyIfRequired="false"
                               onlyIfChecked="true" />
</AttributeRule>

・Java11で動作するように切り替え

mysql-connector-javaインストール時にJava8がインストールされ、Java11ではなくJava8に切り替わっている可能性があります。
以下の手順で確認して、Java8が設定されている場合は、再度Java11を利用できるように切り替えます。

# alternatives --config java 

There are 2 programs which provide 'java'.

Selection Command
-----------------------------------------------
1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.7.10-4.el7_8.x86_64/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1[Enter] ← Java11が表示されている「1」を選択

・Jettyの再起動

Jettyを再起動して、更新した設定ファイルを読み込ませます。

# systemctl restart jetty

 


3. 手順書

下記の設定手順書を参照し、作業を行います。
セミナー環境ではShibboleth IdP 4.2.1がインストールされていますので、最新版のuApproveJPバージョン4.0.0をお使いください。
※リンク先のページを開くと、それぞれのバージョンの「インストールおよび設定方法」と記載されたリンクがあるので、
 そのリンクをクリックしてください。
※「1 基本的なデプロイ」から「2.3 ローカライズ」まで行います。ただし「1.6 カスタムテンプレート」および「2.2 テンプレート」は、読み飛ばしてください。
※「1.5 設定のカスタマイズ」では、services-system.xmlとattribute-release-beans.xmlの編集を「Shibboleth IdP 4.1以降では...」の手順で行ってください。
※「3 AttributeInMetadata」については、上記実習セミナーの設定を行います。

※補足:属性選択画面の必須属性とオプショナル属性について
 uApproveJPでは、IdP側の設定(conf/attribute-filter.xmlの<PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="true">)と
 SPメタデータの設定(//md:SPSSODescriptor/md:AttributeConsumingService/md:RequestedAttribute)に基づいて属性を必須かオプショナルにわけられます。(詳細は後述)
 オプショナル属性はチェックボックスによりユーザに属性の送信を委ねます。必須属性はユーザによる属性毎送信拒否の設定が行えません(チェックボックスにチェックが入った状態でグレーアウトしています)。
 また、IdP側の設定にある<PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfChecked="true">以外のルールで、送信が許可された属性は全て
 必須属性となります。ここで「<PermitValueRule ...>以外」とは、onlyIfChecked="false"の場合の他、xsi:type="ANY"等のルールも含まれます。

PermitValueRuleに与える設定と属性選択画面の表示の組み合わせを表にすると、以下のようになります。



 

 

 

SPメタデータ 

<md:AttributeConsumingService>
なし

<md:AttributeConsumingService>
あり

<md:RequestedAttribute>
なし

<md:RequestedAttribute>
あり

isRequired="false"
もしくは指定なし

isRequired="true"

IdP

設定

(attribute-filter)

<PermitValueRule
xsi:type="uajpmf:AttributeInMetadata"
onlyIfChecked="true">

onlyIfRequired="false"
matchIfMetadataSilent="false"

表示しない

表示しない

オプショナル属性

必須属性

onlyIfRequired="false"
matchIfMetadataSilent="true"

オプショナル属性

表示しない

オプショナル属性

必須属性

onlyIfRequired="true"
matchIfMetadataSilent="true"

オプショナル属性

表示しない

表示しない

必須属性

onlyIfRequired="true"
matchIfMetadataSilent="false"

表示しない

表示しない

表示しない

必須属性

<PermitValueRule
xsi:type="uajpmf:AttributeInMetadata"
onlyIfChecked="true"> 以外

必須属性

必須属性

必須属性

必須属性