比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

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

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

1.2 前提条件

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

1.3 インストール

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

 

パネル

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

ライブラリファイルと設定ファイルをコピーしてください:
  • idp.example.org
    • Identity Provider の DNS 名
  • /opt/uApprove
    • uApprove.jp をインストールするディレクトリ
  • /opt/uApprove/conf
    • uApprove.jp の設定ファイルのディレクトリ
  • /opt/shibboleth-identityprovider-2.x
    • Shibboleth IdP のインストール時にZIPファイルを展開したディレクトリ (install.sh が存在するディレクトリ)
  • /opt/shibboleth-idp
    • Shibboleth IdP のインストール先
  • ${CATALINA_HOME}
    • Tomcat のインストール先 (例えば、/usr/java/tomcat)

1.2 前提条件

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

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

1.3 インストール

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

 

パネル

wget https://meatwiki.nii.ac.jp/confluence/download/attachments/13501031/uApprove.jp

 

パネル

cd /opt/uApprove
mkdir conf logs war
unzip idp-plugin-2.2.1c-bin.zip
cp idp-plugin?api=v2
unzip uApprove.jp-2.2.1c/conf-template/* conf/
cp idp-plugin--bin.zip -d /opt/
ln -s /opt/uApprove.jp-2.2.1c /opt/uApprove

 

1.3.1 IdP-Plugin

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

 

パネル

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/

 

...

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

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

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

ファイルベース

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

...

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

 

パネル
termsOfUse=/opt/uApprove/conf/terms-of-use.xml
注意

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

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

 

パネル

sharedSecret=QErDXYZEAoS6jooPvdBhQg==

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

パネル
openssl rand -base64 16 2>/dev/null

 

...

パネル

...
<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"
        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 classpath:/schema/shibboleth-2.0-afp.xsd
                                    urn:mace:shibboleth:2.0:afp:mf:basic classpath:/schema/shibboleth-2.0-afp-mf-basic.xsd
                                    urn:mace:shibboleth:2.0:afp:mf:saml classpath:/schema/shibboleth-2.0-afp-mf-saml.xsd
                                    http://www.gakunin.jp/ns/uapprove-jp/afp/mf classpath:/schema/shibboleth-2.0-afp-mf-uapprovejp.xsd">

 

 

警告

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

 

ルールの定義

>

 

 

警告

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ルールを拡張します:

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

    • このルールは下記のオプショナルな属性を持つ <afp:PermitValueRule xsi:type="uajpmf:AttributeUapprove"/> 要素と <afp:DenyValueRule xsi:type="uajpmf:AttributeUapprove"/> 要素両方によって定義されます。

      • isApproved (オプショナル)

        • ユーザによってSPへ送信を許可された属性を示すブーリアン値です。
          デフォルト値: true
          しかし、もし SPのメタデータ内の<AttributeConsumingService> 要素内の <RequestedAtrribute> 要素で isRequired="true" となっている属性は、必須属性として扱われ、常にSPに送信されます。

      • requestedOnly (オプショナル)

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

xsi:type="uajpmf:AttributeUapprove" を持たない許可された属性は必須属性として扱われます。uApprove.jpはPolicy RequirementルールとAttribute RulesのPermit/Deny Valueルールを拡張します:

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

...

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

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

In-flow モード

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

...

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

1.6.1 ログ出力

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

パネル
...
<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 のコンパイルターゲットを指定するものです:

パネル
<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 リファレンス

...

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> 要素の例を下記に示します:

パネル

<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

...

xml:lang="en">Our

...

SP

...

uses

...

the

...

displayName

...

attribute

...

in

...

order

...

to

...

display

...

your

...

name

...

to

...

our

...

web

...

page</Description>

...


          <Description

...

xml:lang="ja">SPはウェブページに名前を表示するためにdisplayName属性を使用します</Description>

...


        </RequestedAttributeExtension>
        ...
      </md:Extensions>

...


      ...

...



      <md:AttributeConsumingService

...

index="1">

...


          <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"

...


                           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>