IdP 構築・運用手順書（Ver1.2）

１．概要
本書は IdP の構築手順、および運用方法を説明したものです。
［１］IdP の機能
まず、IdP の動作について簡単に説明します。

図１

IdP の機能ブロック

図１ IdP の機能ブロックは、IdP の機能を単純化したブロックで示しています。IdP は SP
からの要求を受けて、以下の２つの動作を行います。
・ ユーザを認証する
・ ユーザの属性を安全に SP に送信する■ 認証
ユーザが SP にアクセスすると、SP は IdP にリダイレクトを行います。IdP はこれを受けてユーザの認証を行います。認証方式としては、ID／パスワード認証や、クライアン
ト証明書による認証等の認証方式が設定可能です。
また、IdP はユーザの Cookie を確認して、既に認証済みである場合は、２回目以降のユーザに対する認証は行わず、シングルサインオン機能を実現します。
■ 属性の安全な送信
SP が要求する属性を、LDAP もしくは DB から取得して、SP に送信します。この際、下記を行います。
・ LDAP に格納されている情報を元にして、SP が要求する属性とするために、名称の変更や、ドメインの追加といった変換を行います（図１の変換機能）
・ SP に送信して良いかどうか、ポリシーを確認します。各属性が送信可能である場合、SAML2.0 に準拠して安全に属性を送信します（図１のリリース機能）
以下の章では、IdP の構築手順を示すとともに、上記機能の設定方法、および、これらの機能を用いて IdP を運用するための方法について説明します。

［２］構築方式について
IdP の構築にあたっては、以下の２つの方式のいずれかを採択することができます。
■VMWare イメージを利用した構築
NII が提供する

OS から shibboleth(IdP)までインストールされた システムを利用する方式です。貴学では、貴学のサーバに VMWareServer をインストールし、その上にこのシステムイメージを稼動することで利用できます。
■自分で IdP をインストールする場合の構築手順
貴学にて、貴学のサーバに OS から shibboleth(IdP)までインストール・設定を行い、構築する方式です。
本書では、上記２方式の手順を明記するとともに、構築後の基本的な設定方法や運用方法も記載しています。

２．VMWare イメージを利用した構築手順［１］前提条件（１）NII で動作検証した環境・ホスト OS：CentOS5.1※VMware コンソールを使用するので、Xwindow System をインストールしてください。
・VMwareServer：VMware-server-1.0.4-56528.i386.rpm（２）配布する VM イメージの初期情報■VMwareServer での設定
・ゲスト OS：「LINUX」−「Other Linux 2.6.x kernel」
・ネットワーク接続：ブリッジ
・ディスクサイズ：４GB・メモリサイズ：２５６MB■(ゲスト)OS での設定
・(ゲスト)OS：CentOS 5.2（Apache HTTP Server 2.2.3-11）
・root パスワード：passwd
・ホスト名：upkishib11.nii.ac.jp
・ｉｐアドレス：192.168.0.1
・インストールソフトウェア：
開発

開発ツール
(オプションパッケージは全て無し)
開発ライブラリ(オプションパッケージは全て無し)

サーバ

Web サーバー(オプションパッケージは HTTP のみ)
ネットワークサーバー(オプションパッケージは ldap Server のみ)

ベースシステム

ベースのみチェック(オプションはデフォルト)

X Window

なし

・追加インストール
SUN JDK 1.6、Apache Tomcat 6.0、openldap-2.3.27-8
・Firewall Configuration：
Security Level

Disabled

SELinux

Disabled・認証設定：デフォルト(MD5,Shaddow)
・サービス設定： ip6tables, iptables 停止。その他はデフォルト。
■LDAP の初期設定
・suffix： o= test_o, dc=ac, c=JP
・rootdn： cn= olmgr, o= test_o, dc=ac, c=JP
・rootpw： csildap
・初期構成
uid

userPass

eduPersonPrincipalName

ou

word

eduPerson
Affiliation

testuid1

testpw1

test_eppn_1

sciencefaculty

testuid2

testpw2

test_eppn_2

economic

staff

testuid3

testpw3

test_eppn_3

technology

student■shibboleth インストールディレクトリ
/opt/shibboleth-idp-2.0.0［２］VMwareServer をインストールする■ダウンロード URL
http://www.vmware.com/jp/products/server/■ダウンロードプロダクト※NII での動作検証環境では、以下のプロダクトをダウンロードし、インストールしました。
・VMware Server for Linux （VMware Server 本体）
・Management Interface（VMware 管理インタフェース）・VMware Server Linux client package （VMware の仮想マシンコンソール）

■インストール手順
http://www.vmware.com/jp/pdf/server_admin_manual.pdf※貴学の環境によっては、gcc、kernel-devel、kernel-headers、libXtst の追加
インストールが必要となる場合があります。
※インストールにはシリアルナンバーの入力を要します。
シリアルナンバーの取得は、以下の URL でアカウント登録をしてください。
http://register.vmware.com/content/registration.html［３］VM イメージをダウンロードする■ダウンロード URL
以下の UPKI イニシアティブのサイトの「SSO 実証実験のリポジトリ」からダウンロードしてください。
https://upki‑portal.nii.ac.jp/SSO/Repository※サイトへのアクセスには、UPKＩイニシアティブ会員への登録が必要となります。

［４］VMwareServer に VM イメージを登録し、起動する。
①当該サーバのホスト OS 上の「/var/lib/vmware/Virtual Machines」配下でダウンロードした VM イメージを格納し、解凍します。
#cd /var/lib/vmware/”Virtual Machines”#ls
upkishibIdPv1.0.tar.gz#tar –zxvf upkishibIdPv1.0.tar.gz②upkishibIdP ディレクトリが作成され、その配下には以下の５つのファイルが作成されたことを確認します。
#ls /var/lib/vmware/”Virtual Machines”
upkishibIdPv1.0.tar.gz

upkishibIdPv1.0# ls /var/lib/vmware/”Virtual Machines”/upkishibIdPv1.0
upkishibIdP.vmx

upkishibIdP.vmdk

upkishibIdP.flat.vmdk

upkishibIdP.vmsd

nvram

③upkishibIdP.vmx の権限を変更します。
# chmod 754 /var/lib/vmware/”Virtual Machines”/upkishibIdPv1.0/upkishibIdP.vmx④ホスト OS の X Window から「VMwareServer Console」を起動し、menu バーより「File」−「Open」を選択し「/var/lib/vmware/”Virtual Machines”/upkishibIdPv1.0/upkishibIdP.vmx」を指定します。
⑤「Power on this Virtul machine」をクリックします。
⑥次のようなダイアログが表示されるので、「Create」を選択します。

※仮想マシンを移動またはコピーした後に初めて仮想マシンをパワーオンすると、新しい UUID を生成するか聞いています。
「Create」を選択することにより、MAC ア
ドレスが新たに生成されます。
⑥IdP がインストールされたゲスト OS（CentOS5.2）が起動します。

［５］ゲスト OS にログインする■root の初期パスワードは passwd です。
■ログイン後、パスワードを変更してください。
#passwd［６］ip アドレス、ホスト名を変更する■配布時は以下のように初期設定されていますので、貴学の環境に基づき変更してください。
・ip アドレス：192.168.0.1
・ホスト名：upkishib11.nii.ac.jp■変更箇所は以下の通りです。
①/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.0.1 ←ip アドレス
NETMASK=255.255.255.0←サブネットマスク

GATEWAY=192.168.0.254←ゲートウェイNETWORK=192.168.0.0 ←ネットワークアドレス（中略）②/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=upkishib11.nii.ac.jp ←ホスト名

③/etc/resolv.conf
search nii.ac.jp ←ローカルドメイン名
nameserver 192.168.0.2←ネームサーバ④/etc/httpd/conf/httpd.conf（中略）ServerName upkishib11.nii.ac.jp:80 ←ホスト名（中略）⑤/etc/httpd/conf.d/ssl.conf（中略）ServerName upkishib11.nii.ac.jp:443 ←ホスト名（中略）<VirtualHost _default_:443>（中略）ProxyPass /idp/ ajp://localhost:8009/idp/（中略）</VirtualHost>←記述されているか確認⑥/opt/shibboleth-idp-2.0.0/metadata/idp-metadata.xml（中略）<EntityDescriptor entityID="https://upkishib11.nii.ac.jp/idp/shibboleth">←ホスト名<IDPSSODescriptor protocolSupportEnumeration="urn:mace:shibboleth:1.0
urn:oasis:names:tc:SAML:2.0:protocol"><KeyDescriptor><ds:KeyInfo><ds:X509Data><ds:X509Certificate>
MIIDOzCCAiOgAwIBAgIUdTJ6oiEccCjrtDyDaeBXTlRpfPcwDQYJKoZIhvcNAQEF
BQAwHzEdMBsGA1UEAxMUdXBraXNoaWIxMS5uaWkuYWMuanAwHhcNMDgwNzA4MTAz
NTQwWhcNMjgwNzA4MTAzNTQwWjAfMR0wGwYDVQQDExR1cGtpc2hpYjExLm5paS5h
Yy5qcDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJlkO5kZI2Tz7tPg
1HVHwv7g7bCYNL7Zx11IeNwDyd1ZluRAfmSzTNP67YPSMPLaA4upkYM51JmHgskZ
GvbjNqfma+imNVo/R7J0LL6ucSgL++ax25XKJmViCspQpgYPiFsavoF6JwciRdwk
zeUkhJo0zZWZ1rSxeAevAuWJf9hDwelCyry5u2ZNljDNLFl6uzpPETv3DSMxwevs
tHggaq9917DSnH4ZhiBhXL3pd+g0qyw0ouuew9wtizZ6KpTtTIl3InuTM6KiCG5M
Iyv7HVc9KtwkVAooF/LMPP9ofkZeuqzpc8T6Wg+zaUUsIKhEDhon4Zb/rt9tS3vB
JFpYBS8CAwEAAaNvMG0wTAYDVR0RBEUwQ4IUdXBraXNoaWIxMS5uaWkuYWMuanCG
K2h0dHBzOi8vdXBraXNoaWIxMS5uaWkuYWMuanAvaWRwL3NoaWJib2xldGgwHQYD
VR0OBBYEFCoPX1gOojzXlCTZT7l73KcHkJSHMA0GCSqGSIb3DQEBBQUAA4IBAQAW
GnudDV3eqTNLZPGH8zJWHCT8Az7CtG40aINRJzirbZI+r4X7Zuq5ZLv+n9EJ6rbd
xRWh6bIx9YTLKcLvzXx0ZM4fy6RFyJ+8qCDTXig0qDgVpng66xfJBi7ahjGIJgn6
xXwdYFE50zLC3qwrZ9kykXCy2ELLHfb3Z/g1o9fZZy7gjn77m1tDfWcs4M3NFCfLzKbGNi+5a05w/wLkxpEaP8NPTHkbN3E+EXQDik7QQOqGJ0+JEUYLAPO6HTGGCs5i
YU+cTQ5QSgjfsSwcZQt6ljQUzlyhKOAWnazbrRGVfCVlwoYl0hkpmGMSb4Jjxo6E
61psWSAHlehx6L2F9Eat</ds:X509Certificate></ds:X509Data></ds:KeyInfo></KeyDescriptor><NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat><NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat><SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"
Location="https://upkishib11.nii.ac.jp/idp/profile/Shibboleth/SSO" />←ホスト名

<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://upkishib11.nii.ac.jp/idp/profile/SAML2/POST/SSO" />←ホスト名<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://upkishib11.nii.ac.jp/idp/profile/SAML2/Redirect/SSO" />←ホスト名</IDPSSODescriptor><Organization><OrganizationName xml:lang="en">Test IdP</OrganizationName>←組織名<OrganizationDisplayName xml:lang="en">Test IdP</OrganizationDisplayName><OrganizationURL xml:lang="en">http://YourHomePage/</OrganizationURL>←組織表示名←組織 URL</Organization><ContactPerson contactType="technical"><GivenName>YourGivenName</GivenName><SurName>YourSurName</SurName>←管理者名<EmailAddress>YourEmailAddress</EmailAddress>←管理者の e-mail アドレス</ContactPerson></EntityDescriptor>（中略）⑧/opt/shibboleth-idp-2.0.0/conf/relying-party.xml（中略）<AnonymousRelyingParty provider="https://upkishib11.nii.ac.jp/idp/shibboleth" /> ←ホスト名<DefaultRelyingParty provider="https://upkishib11.nii.ac.jp/idp/shibboleth" ←ホスト名
defaultSigningCredentialRef="IdPCredential">（中略）■新しいホスト名とｉｐアドレスを DNS に登録してください。
■変更後のホスト名をヘルプデスク（upki-sso-help@nii.ac.jp）へ通知してください。
ヘルプデスクでは、SP・DS に貴学の IdP を登録し、これにより接続テストが可能となります。

［７］時刻同期を設定、確認する■ntp サービスを用い、貴学環境の ntp サーバと時刻同期をしてください。
※Shibboleth では、通信するサーバ間の時刻のずれが約５分を越えるとエラーになります。
■VMwareServer のゲスト OS では、システムクロックが著しくずれますが、ハード
ウェアクロックのずれは少ないので、NII での検証では、以下の設定を施し安定稼動させています。
【設定例】# crontab -l*/3 * * * * /sbin/clock –hctosys ←３分毎に clock コマンドでシステムクロックをハードウェアクロックに合わせる
10 0-23/1 * * * ntpdate (ntp サーバ) && /sbin/clock -w ←毎時 10 分に ntpdate コマンドで ntp サーバと同期し、ハードウェアクロックも合わせる［８］セキュリティを設定、確認する
貴学のセキュリティポリシーに準拠し、サーバのセキュリティの設定・確認をしてください。
［９］サーバをリブートする#reboot※お使いの環境によっては、極稀にサーバ起動時に tomcat サービスで”failed”が表示される場合があります。これは依存するサービスの起動に待ちが発生するためで、”failed”が表示されてもリトライされて正常起動するケースが高いです。
”failed”でも以降の［１０］を実施し、それでもエラーとなる場合はヘルプデスク（upki-sso-help@nii.ac.jp）へ連絡してください。

［１０］テストアカウントで接続確認する①SP にアクセスする
現段階で用意されている SP は、以下の Plone サイトがあります。
https://upkishib1.nii.ac.jp/②Plone 画面が表示されたら、画面右端の「ログイン」をクリックし、「Shibboleth log
in」の「UPKI IdP_01」を選択、Shibboleth Identity Provider Login 画面から以下のアカウントでログインします。
idpassword

testuid1

testpw1

testuid2

testpw2

testuid3

testpw3［１１］サーバ証明書を申請、登録する①「７．シングルサインオン実証実験用 サーバ証明書の取得方法について」を参考に、
サーバ証明書を申請します。
証明書の交付までには数日を要するので、お早めに申請してください。

②入手したサーバ証明書をもとに、以下のファイルに設定してください。
■/etc/httpd/conf.d/ssl.conf（中略）SSLCertificateFile /etc/pki/tls/certs/server.crt←サーバ証明書の格納先（中略）

SSLCertificateKeyFile /etc/pki/tls/private/server.key←秘密鍵の格納先（中略）#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt ←コメントアウト
SSLCACertificatePath /opt/shibboleth-idp-2.0.0/credentials/CA ←中間 CA 証明書の格納先/opt/shibboleth-idp-2.0.0/credentials/CA ディレクトリが無い場合は作成してください。このディレクトリには、ファイル名をハッシュ値とした中間 CA 証明書を配置します。
詳しくは UPKI「サーバ証明書プロジェクト」https://upki-portal.nii.ac.jp/cerpj を参照してください。

■/opt/shibboleth-idp-2.0.0/conf/relying-party.xml（中略）<security:Credential id="IdPCredential" xsi:type="security:X509Filesystem"><security:PrivateKey>/opt/shibboleth-idp-2.0.0/credentials/server.key ←ssl.confと同一のものを</security:PrivateKey><security:Certificate>/opt/shibboleth-idp-2.0.0/credentials/server.crt</security:Certificate>

左記のパスにも格納←ssl.confと同一のものを
左記のパスにも格納</security:Credential>（中略）③以下の UPKI イニシアティブのサイトの「SSO 実証実験のリポジトリ」から IdP 用
メタデータテンプレートをダウンロードし、必要な項目を変更します。
https://upki-portal.nii.ac.jp/SSO/Repository※サイトへのアクセスには、UPKＩイニシアティブ会員への登録が必要となります。

ダウンロードしたメタデータテンプレートを下記のように変更してください。
（中略）<EntityDescriptor entityID="https://upkishib11.nii.ac.jp/idp/shibboleth">←ホスト名<IDPSSODescriptor protocolSupportEnumeration="urn:mace:shibboleth:1.0
urn:oasis:names:tc:SAML:2.0:protocol"><KeyDescriptor><ds:KeyInfo><ds:X509Data><ds:X509Certificate>
MIIDOzCCAiOgAwIBAgIUdTJ6oiEccCjrtDyDaeBXTlRpfPcwDQYJKoZIhvcNAQEF
BQAwHzEdMBsGA1UEAxMUdXBraXNoaWIxMS5uaWkuYWMuanAwHhcNMDgwNzA4MTAz
NTQwWhcNMjgwNzA4MTAzNTQwWjAfMR0wGwYDVQQDExR1cGtpc2hpYjExLm5paS5h
Yy5qcDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJlkO5kZI2Tz7tPg
1HVHwv7g7bCYNL7Zx11IeNwDyd1ZluRAfmSzTNP67YPSMPLaA4upkYM51JmHgskZ
GvbjNqfma+imNVo/R7J0LL6ucSgL++ax25XKJmViCspQpgYPiFsavoF6JwciRdwk
zeUkhJo0zZWZ1rSxeAevAuWJf9hDwelCyry5u2ZNljDNLFl6uzpPETv3DSMxwevs
tHggaq9917DSnH4ZhiBhXL3pd+g0qyw0ouuew9wtizZ6KpTtTIl3InuTM6KiCG5M
Iyv7HVc9KtwkVAooF/LMPP9ofkZeuqzpc8T6Wg+zaUUsIKhEDhon4Zb/rt9tS3vB

入手した証明書に変更

JFpYBS8CAwEAAaNvMG0wTAYDVR0RBEUwQ4IUdXBraXNoaWIxMS5uaWkuYWMuanCG
K2h0dHBzOi8vdXBraXNoaWIxMS5uaWkuYWMuanAvaWRwL3NoaWJib2xldGgwHQYD
VR0OBBYEFCoPX1gOojzXlCTZT7l73KcHkJSHMA0GCSqGSIb3DQEBBQUAA4IBAQAW
GnudDV3eqTNLZPGH8zJWHCT8Az7CtG40aINRJzirbZI+r4X7Zuq5ZLv+n9EJ6rbd
xRWh6bIx9YTLKcLvzXx0ZM4fy6RFyJ+8qCDTXig0qDgVpng66xfJBi7ahjGIJgn6
xXwdYFE50zLC3qwrZ9kykXCy2ELLHfb3Z/g1o9fZZy7gjn77m1tDfWcs4M3NFCfLzKbGNi+5a05w/wLkxpEaP8NPTHkbN3E+EXQDik7QQOqGJ0+JEUYLAPO6HTGGCs5i
YU+cTQ5QSgjfsSwcZQt6ljQUzlyhKOAWnazbrRGVfCVlwoYl0hkpmGMSb4Jjxo6E
61psWSAHlehx6L2F9Eat</ds:X509Certificate></ds:X509Data></ds:KeyInfo></KeyDescriptor><NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat><NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat><SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"
Location="https://upkishib11.nii.ac.jp/idp/profile/Shibboleth/SSO" />←ホスト名

<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://upkishib11.nii.ac.jp/idp/profile/SAML2/POST/SSO" />←ホスト名<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://upkishib11.nii.ac.jp/idp/profile/SAML2/Redirect/SSO" />←ホスト名</IDPSSODescriptor><Organization><OrganizationName xml:lang="en">Test IdP</OrganizationName>←組織名<OrganizationDisplayName xml:lang="en">Test IdP</OrganizationDisplayName><OrganizationURL xml:lang="en">http://YourHomePage/</OrganizationURL>←組織表示名←組織 URL</Organization><ContactPerson contactType="technical"><GivenName>YourGivenName</GivenName><SurName>YourSurName</SurName>←管理者名<EmailAddress>YourEmailAddress</EmailAddress>←管理者の e-mail アドレス</ContactPerson></EntityDescriptor>（中略）

完成した新しい IdP 用のメタデータを、ヘルプデスク（upki-sso-help@nii.ac.jp）へ送付してください。
ヘルプデスクでは、送付していただいたメタデータを SP・DS に登録するとともに共用メタデータを更新します。
詳しくは、以下のサイトを参照してください。
https://upki-portal.nii.ac.jp/SSO/Repository※サイトへのアクセスには、UPKＩイニシアティブ会員への登録が必要となります。

④同様に以下の UPKI イニシアティブのサイトの「SSO 実証実験のリポジトリ」から
upki‑fed‑metadata.xml をダウンロードし、ファイル名を idp‑metadata.xml に変更
して、/opt/shibboleth‑idp‑2.0.0/metadata と差し替えてください。
https://upki‑portal.nii.ac.jp/SSO/Repository※サイトへのアクセスには、UPKＩイニシアティブ会員への登録が必要となります。

３．貴学にて IdP をインストールする場合の構築手順［１］shibboleth (IdP version2.0)の動作要件
・Apache HTTP Server 2.2 以上
・Apache Tomcat 5.5.25 以上
・Java 5 以上
（ただし、CentOS に付属する Gnu Java は利用できません。 Sun の Java を利用してください。
）［２］OS をインストールする①OS での設定
・OS：CentOS 5.1
インストーラでインストールするもの。
Web サーバー (HTTP のみ)
Open Ldap
その他のパッケージは必要に応じてインストールしてください。
ただし、Java 開発と Tomcat は後の手順で別にインストールします。
・ネットワーク設定
環境に合わせ、ホスト名・ネットワーク・セキュリティを設定して下さい。
SP では shibd サービスが通信を行います。
②DNS へ登録する
新しいホスト名とｉｐアドレスを DNS に登録してください③時刻同期を設定する
ntp サービスを用い、貴学環境の ntp サーバと時刻同期をしてください。
※Shibboleth では、通信するサーバ間の時刻のずれが約５分を越えるとエラーになります。

［３］jdk6、tomcat6 をインストールする①tomcat5-5.5.17-8 の削除
tomcat5-5.5.25 以前のバージョンが入っている場合は、削除してください。
②jdk 6.0 のインストール
http://java.sun.com/javase/downloads/index.jsp よりダウンロードした jdk-6u5-linux-i586-rpm.bin を適当なフォルダに置いて、以下のコマンドを実行
してください。
chmod a+x jdk-6u5-linux-i586-rpm.bin./jdk-6u5-linux-i586-rpm.bin③tomcat6.0.16 のインストール
http://tomcat.apache.org/download-60.cgi よりダウンロードした apachetomcat-6.0.16.tar.gz を /usr/java にを置いて、以下のコマンドを実行してください。
cd /usr/java
tar zxvf apache-tomcat-6.0.16.tar.gz
ln -s apache-tomcat-6.0.16 /usr/java/tomcat
jsvc などを用いて、自動起動させると便利です。
ソースファイルを展開し、make で jsvc を作成した後、 $CATALINA_HOME/bin に
コピーします。起動用スクリプトをコピーします。
cd /usr/java/tomcat/bin
tar xzvf jsvc.tar.gz
cd jsvc-src./configure
makecp jsvc ..
cp native/Tomcat5.sh /etc/rc.d/init.d/tomcat/etc/rc.d/init.d/tomcat の先頭にコメントを追加することにより chkconfig コマンドが利用できます。
# chkconfig: - 86 15# description: Tomcat# processname: tomcat

また、/etc/rc.d/init.d/tomcat ファイル中の以下の環境変数も変更が必要です。
JAVA_HOMECATALINA_HOMEDAEMON_HOME
CATALINA_BASE
設定例
JAVA_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
DAEMON_HOME=$CATALINA_HOME
CATALINA_BASE=$CATALINA_HOME
tomcat を実行するユーザ “tomcat” を作成した場合には
TOMCAT_USER=tomcatも設定します。
他に、”tomcat”ユーザがログファイルを出力できるよう、ディレクトリの所有者を変更します。(シンボリックリンク先を変更するため最後の “/” が必要です)chwon –R tomcat: /usr/java/tomcat/

自動起動の設定 (オプションは マイナス ‘−‘ が２つ必要です)
chkconfig --add tomcat
chkconfig --level 345 tomcat on④/etc/profile に下記を追加してください。
JAVA_HOME=/usr/java/default
MANPATH=$MANPATH:$JAVA_HOME/man
CATALINA_HOME=/usr/java/tomcat
TOMCAT_HOME=$CATALINA_HOME
PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH
export PATH JAVA_HOME CATALINA_HOME⑤ Apache ant インストール
IdP のインストールには Apache ant が必要です。
もしインストールされていない場合にはインストールして下さい。

⑥ httpd の設定/httpd/conf/httpd.conf の修正（省略）
ServerName upkishib11.nii.ac.jp:80 ←ホスト名（省略）/etc/httpd/conf.d/ssl.conf の修正（省略）
SSLCertificateFile /opt/shibboleth-idp-2.0.0/credentials/idp.crt
SSLCertificateKeyFile /opt/shibboleth-idp-2.0.0/credentials/idp.key#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt ←コメントアウト
SSLCACertificatePath /opt/shibboleth-idp-2.0.0/credentials/CA（省略）
ServerName upkishib11.nii.ac.jp:443 ←ホスト名（省略）<VirtualHost _default_:443>（省略）ProxyPass /idp/ ajp://localhost:8009/idp/

←追加

（省略）
</VirtualHost>/opt/shibboleth-idp-2.0.0/credentials/CA ディレクトリが無い場合は作成してください。このディレクトリには、ファイル名をハッシュ値とした中間 CA 証明書を配置します。
詳しくは UPKI「サーバ証明書プロジェクト」https://upki-portal.nii.ac.jp/cerpj を参照してください。

⑧ /usr/java/tomcat/conf/server.xml の修正
・必要に応じて Connector port="8080"をコメントアウトしてください。
<!-<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />-->・Connector port="8009"に以下のように追加してください。
<Conector port="8009"
protocol="AJP/1.3"

redirectPort="8443" />↓<Conector port="8009"
protocol="AJP/1.3"

redirectPort="8443" enableLookups="false"request.tomcatAuthentication="false" address="127.0.0.1" />［３］openldap の設定①追加のスキーマファイル
eduperson スキーマを以下からダウンロードし、解凍したものを/etc/openldap/schema/ に置いてください。

http://www.educause.edu/eduperson/「eduPerson (200412)」ボタン下の「Platform‑Specific eduPerson LDIFs」をクリックしてください。
OpenLDAP 用の eduPerson(200412) をダウンロードします。
※解凍時のファイルの拡張子が*.ldif となっているので、*.schema に変更してください。
②ldap のデフォルト設定/etc/openldap/slapd.conf を変更します。
（省略）
include /etc/openldap/schema/eduperson-200412.schema ←追加
suffix" o= test_o, dc=ac, c=JP "rootdn" cn= olmgr, o= test_o, dc=ac, c=JP "rootpw{CRYPT}ijFYNcSNctBYg←suffix←rootdn←暗号化※したものを記載

ここで設定したパスワードは IdP の設定ファイルにも記述します。(後述)※暗号化の例 ：「csildap」というパスワードを暗号化する#slappasswd -h {crypt} -s csildap{CRYPT}ijFYNcSNctBYg←これを slapd.conf の rootpw に記載②ldap のテストデータ作成
以下のサンプルを基に、テスト用データを作成し、ldap へ登録します。
Shibboleth を利用した ID/パスワードでの認証に使用される ID は uid 、パスワ
ードは userPassword になります。
・ test.ldif ファイル作成
dn: o=test_o,dc=ac,c=JP
objectClass: organizationo: test_o
dn: ou=science, o=test_o, dc=ac, c=JP
objectClass: organizationalUnit
ou: sciencedn: ou=economic, o=test_o, dc=ac, c=JP
objectClass: organizationalUnit
ou: economic
dn: ou=technology, o=test_o, dc=ac, c=JP
objectClass: organizationalUnit
ou: technology
dn: eduPersonPrincipalName=test_eppn_1, ou=science, o=test_o, dc=ac, c=JP
objectClass: eduPerson
objectClass: inetOrgPerson
eduPersonPrincipalName: test_eppn_1
ou: science
sn: test_sn_1
cn: test_cn_1
uid: testuid1
userPassword: testpw1
eduPersonAffiliation: faculty

・ ldap への登録
#ldapadd -x -h localhost -D " cn=olmgr,o=test_o,dc=ac,c=JP " -w csildap -f test.ldif

［４］shibboleth のインストール① shibboleth-idp-2.0.0-bin.zip のダウンロード
http://shibboleth.internet2.edu/downloads/shibboleth/idp/2.0/ から
shibboleth-idp-2.0.0-bin.zip をダウンロードします。
②インストール
shibboleth-idp-2.0.0-bin.zip を展開し、インストールします。
# unzip shibboleth-idp-2.0.0-bin.zip# cd identityprovider# bash ant.sh
いくつかの質問に答えながら、インストールを行います。
途中で入力するパスワードはデフォルトで作成されるキーストアファイルのパスワー
ドとなります。

③ Java の設定
shibboleth-idp-2.0.0-bin.zip を展開した identityprovider/lib/ にある
shib-jce-1.0.jar を $JAVA_HOME/jre/lib/ext にコピーします。
さらに、 $JAVA_HOME/jre/lib/security/java.security ファイルに以下を追加します。
security.provider.9=edu.internet2.middleware.shibboleth.DelegateToApplicationProvider

番号:9 は既に記載されている番号に合わせて順番にして下さい。
④ Tomcat の設定
shibboleth-idp-2.0.0-bin.zip を解凍した identityprovider/endorsedにある

4 つの jar ファイルを $CATALINA_HOME/endorsed ディレクトリを作成してそこへコピーします。
(Tomcat5.5 の場合は $CATALINA_HOME/common/endorsed ディレクトリ)
xalan-2.7.1-serializer.jar
xalan-2.7.1.jar
xerces-2.9.1-xercesImpl.jar
xerces-2.9.1-xml-apis.jar

これらの jar ファイルが有効となるよう、Tomcat 起動スクリプトを変更します。
/etc/rc.d/init.d/tomcat を作成していた場合は、以下の追加となります。
CATALINA_OPTS="-Djava.endorsed.dirs=${CATALINA_HOME}/endorsed "上記例ではデフォルトで記述されている“-Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs”
を使用していないため記述を削除しています。
tomcat を、”tomcat”ユーザで実行する場合は、ログファイルを出力できるようディレ
クトリの所有者を変更します。
chwon –R tomcat: /opt/shibboleth-idp-2.0.0/logs④ idp.war の配置/opt/shibboleth-idp-2.0.0/war/idp.war ファイルを、${CATALINA_HOME}/webapps ディレクトリにコピーします。

［４］shibboleth の設定
デフォルトではshibboleth は /opt/shibboleth-idp-2.0.0 ディレクトリにインストールされます。変更する各設定ファイルは /opt/shibboleth-idp-2.0.0/conf にあります。
・idp‑metadata.xml ファイルの設定同様に以下の UPKI イニシアティブのサイトの「SSO 実証実験のリポジトリ」から
upki‑fed‑metadata.xml をダウンロードし、ファイル名を idp‑metadata.xml に変更
して、/opt/shibboleth‑idp‑2.0.0/metadata と差し替えてください。
https://upki‑portal.nii.ac.jp/SSO/Repository※サイトへのアクセスには、UPKＩイニシアティブ会員への登録が必要となります。

・relying-party.xml ファイルの確認
ホスト名が正しいことを確認します。
ダウンロードしたメタデータの記述を追加します。
<!-- ========================================== --><!-Relying Party Configurations--><!-- ========================================== --><AnonymousRelyingParty provider="https://upkishib11.nii.ac.jp/idp/shibboleth" />←ホスト名<DefaultRelyingParty provider="https://upkishib11.nii.ac.jp/idp/shibboleth" ←ホスト名
defaultSigningCredentialRef="IdPCredential">(省略)<!-- ========================================== --><!-Metadata Configuration--><!-- ========================================== --><!-- MetadataProvider the combining other MetadataProviders --><MetadataProvider id="ShibbolethMetadata" xsi:type="ChainingMetadataProvider"
xmlns="urn:mace:shibboleth:2.0:metadata">(省略)<MetadataProvider id="FSMD" xsi:type="FilesystemMetadataProvider" ←追加
xmlns="urn:mace:shibboleth:2.0:metadata"
metadataFile="/opt/shibboleth-idp-2.0.0/metadata/idp-metadata.xml"
maintainExpiredMetadata="true" /></MetadataProvider>・attribute-resolver.xml ファイルの変更
デフォルトの /opt/shibboleth-idp-2.0.0/conf/attribute-resolver.xml を元に、以下の手順に従い変更を行ってください。
※「organizationName」を検索し、場所を特定してください。
（行番号は参考です）

162 -->
163
164
165
166
167
168
169
170
171
172
173
174
175

←コメント終了を追加して、以下の “organizationName”, “organizationalUnit” の値を公開します<resolver:AttributeDefinition id="organizationName" xsi:type="Simple"
xmlns="urn:mace:shibboleth:2.0:resolver:ad"sourceAttributeID="o"><resolver:Dependency ref="staticAttributes" /> ← myLDAP を staticAttributes に変更<resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"name="urn:mace:dir:attribute-def:o" /><resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"name="urn:oid:2.5.4.10" friendlyName="o" /></resolver:AttributeDefinition><resolver:AttributeDefinition id="organizationalUnit" xsi:type="Simple"
xmlns="urn:mace:shibboleth:2.0:resolver:ad"sourceAttributeID="ou"><resolver:Dependency ref="myLDAP" />

176
177
178
179
<resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"180
name="urn:mace:dir:attribute-def:ou" />181
182<resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"183
name="urn:oid:2.5.4.11" friendlyName="ou" />184</resolver:AttributeDefinition>
185
186 <!-←コメント開始を追加して、以下をコメントアウトします※「eduPerson attributes」を検索し、場所を特定してください。
（行番号は参考です）
323
324
325

<!-- Schema: eduPerson attributes --><!-- --> ←← コメント終了を追加して、以下を有効とします<resolver:AttributeDefinition id="eduPersonAffiliation" xsi:type="Simple"
xmlns="urn:mace:shibboleth:2.0:resolver:ad"326
sourceAttributeID="eduPersonAffiliation">
327 <!-<resolver:Dependency ref="staticAttributes" /> --> ←コメントアウトし328<resolver:Dependency ref="myLDAP" />←myLDAP に変更
329
330<resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"331
name="urn:mace:dir:attribute-def:eduPersonAffiliation" />332
333<resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"334
name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1" friendlyName="eduPersonAffiliation" />335</resolver:AttributeDefinition>336
337 <!-←コメント開始を追加して、以下をコメントアウトします※「eduPersonPrincipalName」を検索し、場所を特定してください。（行番号は参考です）
403 ---> ←コメント終了を追加して、以下を有効とします404↓ eduPersonPrincipalName から変更します405<resolver:AttributeDefinition id="principalName" xsi:type="Scoped"
xmlns="urn:mace:shibboleth:2.0:resolver:ad"406
scope="nii.ac.jp" sourceAttributeID="eduPersonPrincipalName"> ←ドメイン名を変更
407<resolver:Dependency ref="myLDAP" />↑ uid から変更します408
409<resolver:AttributeEncoder xsi:type="SAML1ScopedString"
xmlns="urn:mace:shibboleth:2.0:attribute:encoder"410
name="urn:mace:dir:attribute-def:eduPersonPrincipalName" />411
412<resolver:AttributeEncoder xsi:type="SAML2ScopedString"
xmlns="urn:mace:shibboleth:2.0:attribute:encoder"413
name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" friendlyName="eduPersonPrincipalName" />414</resolver:AttributeDefinition>
415
416 <!-- ←コメント開始を追加して、以下をコメントアウトします※「Data Connectors」を検索し、場所を特定してください。
（行番号は参考です）
460
461
462
463
464
465
466

<!-- ========================================== --><!-Data Connectors--><!-- ========================================== --><!-- Example Static Connector --><!-- --> ←コメント終了を追加して、以下を有効とします<resolver:DataConnector id="staticAttributes" xsi:type="Static"
xmlns="urn:mace:shibboleth:2.0:resolver:dc">
467<Attribute id="o">←追加468<Value>test_o</Value>
469</Attribute>470 <!-←コメントアウト
471<Attribute id="eduPersonAffiliation">
472<Value>member</Value>
473</Attribute>
474<Attribute id="eduPersonEntitlement">
475<Value>urn:example.org:entitlement:entitlement1</Value>
476<Value>urn:mace:dir:entitlement:common-lib-terms</Value>
477</Attribute>478 -->←コメントアウト
479</resolver:DataConnector>
480<!-- --> ←コメントアウト※「LDAP Connector」を検索し、場所を特定してください。（行番号は参考です）
498
499
500
501
502
503
504
505
506
507
508
509

<!-- Example LDAP Connector --><!-- --> ←コメント終了を追加して、以下を有効とします<resolver:DataConnector id="myLDAP" xsi:type="LDAPDirectory"
xmlns="urn:mace:shibboleth:2.0:resolver:dc"
ldapURL="ldap://localhost" baseDN="o=test_o,dc=ac,c=JP" principal="cn=olmgr,o=test_o,dc=ac,c=JP"
principalCredential="csildap">←LDAP のパスワードを設定<FilterTemplate><![CDATA[(uid=$requestContext.principalName)]]></FilterTemplate></resolver:DataConnector><!-- -->←コメントアウト・attribute-filter.xml ファイルの変更
デフォルトの /opt/shobboleth-2.0.0/conf/attribute-filter を元に、以下の変更を行ってください。
※「transientId」を検索し、場所を特定してください。
（行番号は参考です）
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

<!-- Release the transient ID to anyone --><AttributeFilterPolicy id="releaseTransientIdToAnyone"><PolicyRequirementRule xsi:type="basic:ANY" /><AttributeRule attributeID="transientId"><PermitValueRule xsi:type="basic:ANY" /></AttributeRule><AttributeRule attributeID="principalName"><PermitValueRule xsi:type="basic:ANY" /></AttributeRule>←追加<AttributeRule attributeID="eduPersonAffiliation"><PermitValueRule xsi:type="basic:ANY" /></AttributeRule>←追加<AttributeRule attributeID="organizationName"><PermitValueRule xsi:type="basic:ANY" /></AttributeRule>←追加<AttributeRule attributeID="organizationalUnit"><PermitValueRule xsi:type="basic:ANY" /></AttributeRule>←追加</AttributeFilterPolicy>

・handler.xml ファイルの変更
LDAP のデータを用いた ID/パスワード認証のために handler.xml ファイルを変更します。
<!-- Login Handlers --><!--←コメントアウトします<LoginHandler xsi:type="RemoteUser"><AuthenticationMethod>
urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</AuthenticationMethod></LoginHandler>--><!-- Username/password login handler -->←こちらを有効にします<LoginHandler xsi:type="UsernamePassword"
jaasConfigurationLocation="file:///opt/shibboleth-idp-2.0.0/conf/login.config"><AuthenticationMethod>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthenticationMethod></LoginHandler>・login.config ファイルの変更
LDAP のデータを用いた ID/パスワード認証のために login.config ファイルを変更します。 各設定値は、ldap のデフォルト設定と同じ値とします。
ShibUserPassAuth {// Example LDAP authentication// See: https://spaces.internet2.edu/display/SHIB2/IdPAuthUserPass
edu.vt.middleware.ldap.jaas.LdapLoginModule required
host="localhost"base="o=test_o,dc=ac,c=JP"
ssl="false"
userField="uid"subtreeSearch="true";← 最後の ; は必ず記述

［５］サーバ証明書を申請、登録する①「７．シングルサインオン実証実験用 サーバ証明書の取得方法について」を参考に、
サーバ証明書を申請します。
証明書の交付までには数日を要するので、お早めに申請してください。

②入手したサーバ証明書をもとに、以下のファイルに設定してください。
■/etc/httpd/conf.d/ssl.conf（省略）

SSLCertificateFile /etc/pki/tls/certs/server.crt←サーバ証明書の格納先（省略）

SSLCertificateKeyFile /etc/pki/tls/private/server.key←秘密鍵の格納先（省略）#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt ←コメントアウト
SSLCACertificatePath /opt/shibboleth-idp-2.0.0/credentials/CA ←中間 CA 証明書の格納先/opt/shibboleth-idp-2.0.0/credentials/CA ディレクトリが無い場合は作成してください。このディレクトリには、ファイル名をハッシュ値とした中間 CA 証明書を配置します。
詳しくは UPKI「サーバ証明書プロジェクト」https://upki-portal.nii.ac.jp/cerpj を参照してください。
■/opt/shibboleth-idp-2.0.0/conf/relying-party.xml（中略）<security:Credential id="IdPCredential" xsi:type="security:X509Filesystem"><security:PrivateKey>/opt/shibboleth-idp-2.0.0/credentials/server.key</security:PrivateKey><security:Certificate>/opt/shibboleth-idp-2.0.0/credentials/server.crt</security:Certificate></security:Credential>（中略）←ssl.confと同一のものを
左記のパスにも格納←ssl.confと同一のものを
左記のパスにも格納③以下の UPKI イニシアティブのサイトの「SSO 実証実験のリポジトリ」から IdP 用
メタデータテンプレートをダウンロードし、必要な項目を変更します。
https://upki-portal.nii.ac.jp/SSO/Repository※サイトへのアクセスには、UPKＩイニシアティブ会員への登録が必要となります。
ダウンロードしたメタデータテンプレートを下記のように変更してください。
（中略）<EntityDescriptor entityID="https://upkishib11.nii.ac.jp/idp/shibboleth">←ホスト名<IDPSSODescriptor protocolSupportEnumeration="urn:mace:shibboleth:1.0
urn:oasis:names:tc:SAML:2.0:protocol"><KeyDescriptor><ds:KeyInfo><ds:X509Data><ds:X509Certificate>
MIIDOzCCAiOgAwIBAgIUdTJ6oiEccCjrtDyDaeBXTlRpfPcwDQYJKoZIhvcNAQEF
BQAwHzEdMBsGA1UEAxMUdXBraXNoaWIxMS5uaWkuYWMuanAwHhcNMDgwNzA4MTAz
NTQwWhcNMjgwNzA4MTAzNTQwWjAfMR0wGwYDVQQDExR1cGtpc2hpYjExLm5paS5h
Yy5qcDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJlkO5kZI2Tz7tPg
1HVHwv7g7bCYNL7Zx11IeNwDyd1ZluRAfmSzTNP67YPSMPLaA4upkYM51JmHgskZ
GvbjNqfma+imNVo/R7J0LL6ucSgL++ax25XKJmViCspQpgYPiFsavoF6JwciRdwk
zeUkhJo0zZWZ1rSxeAevAuWJf9hDwelCyry5u2ZNljDNLFl6uzpPETv3DSMxwevs
tHggaq9917DSnH4ZhiBhXL3pd+g0qyw0ouuew9wtizZ6KpTtTIl3InuTM6KiCG5M
Iyv7HVc9KtwkVAooF/LMPP9ofkZeuqzpc8T6Wg+zaUUsIKhEDhon4Zb/rt9tS3vB
JFpYBS8CAwEAAaNvMG0wTAYDVR0RBEUwQ4IUdXBraXNoaWIxMS5uaWkuYWMuanCG
K2h0dHBzOi8vdXBraXNoaWIxMS5uaWkuYWMuanAvaWRwL3NoaWJib2xldGgwHQYD
VR0OBBYEFCoPX1gOojzXlCTZT7l73KcHkJSHMA0GCSqGSIb3DQEBBQUAA4IBAQAW
GnudDV3eqTNLZPGH8zJWHCT8Az7CtG40aINRJzirbZI+r4X7Zuq5ZLv+n9EJ6rbd
xRWh6bIx9YTLKcLvzXx0ZM4fy6RFyJ+8qCDTXig0qDgVpng66xfJBi7ahjGIJgn6
xXwdYFE50zLC3qwrZ9kykXCy2ELLHfb3Z/g1o9fZZy7gjn77m1tDfWcs4M3NFCfLzKbGNi+5a05w/wLkxpEaP8NPTHkbN3E+EXQDik7QQOqGJ0+JEUYLAPO6HTGGCs5i
YU+cTQ5QSgjfsSwcZQt6ljQUzlyhKOAWnazbrRGVfCVlwoYl0hkpmGMSb4Jjxo6E
61psWSAHlehx6L2F9Eat</ds:X509Certificate>

入手した証明書に変更

</ds:X509Data></ds:KeyInfo></KeyDescriptor><NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat><NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat><SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"
Location="https://upkishib11.nii.ac.jp/idp/profile/Shibboleth/SSO" />←ホスト名<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://upkishib11.nii.ac.jp/idp/profile/SAML2/POST/SSO" />←ホスト名<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://upkishib11.nii.ac.jp/idp/profile/SAML2/Redirect/SSO" />←ホスト名</IDPSSODescriptor><Organization><OrganizationName xml:lang="en">Test IdP</OrganizationName>←組織名<OrganizationDisplayName xml:lang="en">Test IdP</OrganizationDisplayName><OrganizationURL xml:lang="en">http://YourHomePage/</OrganizationURL>←組織表示名←組織 URL</Organization><ContactPerson contactType="technical"><GivenName>YourGivenName</GivenName><SurName>YourSurName</SurName>←管理者名<EmailAddress>YourEmailAddress</EmailAddress>←管理者の e-mail アドレス</ContactPerson></EntityDescriptor>（中略）

完成した新しい IdP 用のメタデータを、ヘルプデスク（upki-sso-help@nii.ac.jp）へ送付してください。
ヘルプデスクでは、送付していただいたメタデータを SP・DS に登録するとともに共用メタデータを更新します。
詳しくは、以下のサイトを参照してください。
https://upki-portal.nii.ac.jp/SSO/Repository※サイトへのアクセスには、UPKＩイニシアティブ会員への登録が必要となります。

［６］サービスを起動・停止方法
httpd の起動方法
service httpd start
tomcat の起動方法
service tomcat start(jsvc を利用した場合)

httpd の停止方法
service httpd stop
tomcat の停止方法
service tomcat start(jsvc を利用した場合)［７］テストアカウントで接続確認する①SP にアクセスする
現段階で用意されている SP は、以下の Plone サイトがあります。
https://upkishib1.nii.ac.jp/②Plone 画面が表示されたら、画面右端の「ログイン」をクリックし、「Shibboleth log
in」の「UPKI IdP_01」を選択、Shibboleth Identity Provider Login 画面から以下のアカウントでログインします。
idpassword

testuid1

testpw1

testuid2

testpw2

testuid3

testpw3

４．構築後の基本的な設定、変更方法［１］LDAP の新規作成方法①既存 LDAP の削除#ldapdelete -x -h localhost -D "cn=olmgr, o=test_o,dc=ac,c=JP" -w csildap②新しい LDAP のツリー構造の設計
以下の組織構造を新規作成する例を示します。
exampledn:o=example,c=JP

総務部
dn:ou=somu,o=example,c=JP

社員
dn:uid=社員 ID,ou=somu,o=example,c=JP

営業部
dn:ou=eigyo,o=example,c=JP

社員
dn:uid=社員 ID,ou=eigyo,o=example,c=JP

［２］認証方法の変更、設定（証明書による認証）
１章、あるいは、２章で行った LDAP を利用した ID/パスワード認証の他に、様々な認証方法を利用することが可能です。以下では、クライアント証明書を利用した認証の設定方法を示します。
この例では、・クライアント証明書を発行するキャンパス認証局の CA 証明書＝Camp-CA.crt
・クライアント証明書のサブジェクト”o”の値＝ Test_University_A
として設定を行い、クライアント証明書が有効な証明書であり、かつ、上記の条件を満たす場合に認証を行う設定としています。
また、eduPersonPrincipalName をキーとして、クライアント証明書のサブジェクト
CN”の値により LDAP から各属性を取得しています。そのため、クライアント証明書のサブジェクト”CN”の値を、LDAP の eduPersonPrincipalName に格納しておくことが必要です。
・/opt/shibboleth-idp-2.0.0/conf/handler.xml の変更（オリジナルに戻す）
クライアント証明書を用いた認証のために handler.xml ファイルを変更します。
<!-- Login Handlers -->← <!-- を削除して、こちらを有効にします<LoginHandler xsi:type="RemoteUser"><AuthenticationMethod>
urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</AuthenticationMethod></LoginHandler>← --> を削除して、こちらを有効にします<!-- Username/password login handler --><!--← コメントアウトします<LoginHandler xsi:type="UsernamePassword"
jaasConfigurationLocation="file:///opt/shibboleth-idp-2.0.0/conf/login.config"><AuthenticationMethod>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthenticationMethod></LoginHandler>-->← コメントアウトします・/etc/httpd/conf.d/ssl.conf への追加
（省略）
<VirtualHost _default_:443>（省略）ProxyPass /idp ajp://localhost:8009/idp<Location /idp/Authn/RemoteUser>←追加

SSLCACertificateFile /opt/shibboleth-idp-2.0.0/credentials/Camp-CA.crt
SSLVerifyClient require
SSLVerifyDepth 3
SSLRequireSSL

←追加

←追加
←追加

SSLOptions +ExportCertData +StdEnvVars
SSLUserName SSL_CLIENT_S_DN_CN

←追加
←追加

SSLRequire %{SSL_CLIENT_S_DN_O} eq "Test_University_A"</Location>

←追加

←追加

←追加

（省略）
</VirtualHost>・/opt/shibboleth-idp-2.0.0/conf/attribute-resolver.xml の修正 1
また、クライアント証明書のサブジェクト CN”の値を edupersonPrincipalNameに設定して、これをキーとして LDAP から属性を取得するため、下記の設定を行います。
※「 eduPersonPrincipalName」を検索し、場所を特定してください。
（行番号は参考です）

404
405
406
407
408
409
410
411
412

<resolver:AttributeDefinition id="principalName" xsi:type="Scoped"
xmlns="urn:mace:shibboleth:2.0:resolver:ad"
scope="nii.ac.jp" sourceAttributeID="eduPersonPrincipalName"><resolver:Dependency ref="remoteUser" /> ←変更<resolver:AttributeEncoder xsi:type="SAML1ScopedString"
xmlns="urn:mace:shibboleth:2.0:attribute:encoder"name="urn:mace:dir:attribute-def:eduPersonPrincipalName" /><resolver:AttributeEncoder xsi:type="SAML2ScopedString"
xmlns="urn:mace:shibboleth:2.0:attribute:encoder"name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" friendlyName="eduPersonPrincipalName" /></resolver:AttributeDefinition>

413
414
415
416 <ressolver:AttributeDefinition xsi:type="PrincipalName" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="remoteUser" /> ←変更

・/opt/shibboleth-idp-2.0.0/conf/attribute-resolver.xml の修正 2※「LDAP Connector」を検索し、場所を特定してください。
（行番号は参考です）

498
499
500
501
502
503
504
505
506
507
508
509

<!-- Example LDAP Connector --><!-- --><resolver:DataConnector id="myLDAP" xsi:type="LDAPDirectory"
xmlns="urn:mace:shibboleth:2.0:resolver:dc"
ldapURL="ldap://localhost" baseDN="o=test_o,dc=ac,c=JP"
principal="cn=olmgr,o=test_o,dc=ac,c=JP"
principalCredential="csildap"><FilterTemplate><![CDATA[(eduPersonPrincipalName=$requestContext.principalName) ←変更]]></FilterTemplate></resolver:DataConnector><!-- -->

５．運用方法［１］metadata の管理方法
メタデータは新規 IdP、新規 SP の追加や、既存 IdP、既存 SP の証明書の更新等により、常に更新されます。そのため、定期的にリポジトリから最新の共通メタデータをダウンロードして IdP のメタデータを更新してください。
また、証明書の更新等、IdP のメタデータに更新があった場合は、すみやかにヘルプデス
クに送付してください。
［２］新規 SP の登録方法
新規 SP の情報が入ったメタデータを IdP に更新するだけで、新規 SP と接続できるようになります。
・メタデータの更新
以 下 の UPKI イ ニ シ ア テ ィ ブ の サ イ ト の 「 SSO 実 証 実 験 の リ ポ ジ トリ 」 か らupki‑fed‑metadata.xml をダウンロードし、これを/opt/shibboleth‑idp‑2.0.0/metadata/idp‑metadata.xml に上書きしてください。
https://upki‑portal.nii.ac.jp/SSO/Repository
基本的な接続を行うための貴学での設定は以上です。
ただし、接続のためには新規 SP と DS（新規 SP が利用する場合）に貴学の IdP 情報が登録されることが必要です。

［３］属性管理（登録、変換、リリース方法）
各属性は１章、２章で設定を行った通り、基本的には多くの属性を LDAP や DB から取得してリリースするための設定が既に入っており、これらのコメントを削除して有効化す
るだけで実行することができます。
また、属性の変換機能として、”@nii.ac.jp”といったドメインの付与、値の変換、固定値の割り当てや、スクリプトを利用した変換等が可能です。
さらに、リリース制御では、サイトとしてのポリシー、各個人のポリシーによる制御や、各 SP に対応したリリース制御等が可能です。
以下、［４］−［６］では、新たな ID や属性の追加、そのリリースの方法について説明します。
［４］ID の追加方法
Uid

userPass

eduPersonPrincipalName

ou

word
testuid4

testpw4

eduPersonA
ffiliation

test_eppn_4

technology

student

以下の利用者を追加する例を示します。
①ldif ファイル(sample1.ldif)の作成# test_eppn_4, technology, test_o, ac, JP
dn: eduPersonPrincipalName=test_eppn_4,ou=technology,o=test_o,dc=ac,c=JP
objectClass: eduPerson
objectClass: inetOrgPerson
eduPersonPrincipalName: test_eppn_4
ou: technology
sn: test_sn_4
cn: test_cn_4
uid: testuid4
userPassword: testpw4
eduPersonAffiliation: student②上記①の ldif ファイルを用いた登録#ldapadd -x -h localhost -D "cn=olmgr, o=test_o,dc=ac,c=JP" -w csildap -f example1.ldif

［５］属性の追加方法
利用者に「 displayName」属性を追加する例を示します。
①ldif ファイル(sample2.ldif)の作成
dn: eduPersonPrincipalName=test_eppn_4,ou=technology,o=test_o,dc=ac,c=JPchangetype: modify
add : displayName
displayName:Test4②上記①の ldif ファイルを用いた登録# ldapmodify -x -h localhost –D "cn=olmgr, o=test_o,dc=ac,c=JP" -w csildap -f example2.ldif［６］属性のリリース方法［５］で追加した「displayName」属性を SP へリリースする例を示します。
①スキーマの確認
・/etc/openldap/schema 配下にスキーマファイルがあります。
・「displayName」属性は、/etc/openldap/schema/inetorgperson.schema にて以下のように定義されています。
（中略）# displayName# When displaying an entry, especially within a one-line summary list, it # is useful to be able toidentify a name to be used. Since other attri- # bute types such as 'cn' are multivalued, an
additional attribute type is # needed. Display name is defined for this purpose.
attributetype ( 2.16.840.1.113730.3.1.241
NAME 'displayName'
DESC 'RFC2798: preferred name to be used when displaying entries'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )（中略）②/opt/shibboleth-idp-2.0.0/conf/attribute-resolver.xml への登録
<AttributeResolver xmlns="urn:mace:shibboleth:2.0:resolver" xmlns:resolver="urn:mace:shibboleth:2.0:resolver"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pc="urn:mace:shibboleth:2.0:resolver:pc"
xmlns:ad="urn:mace:shibboleth:2.0:resolver:ad" xmlns:dc="urn:mace:shibboleth:2.0:resolver:dc"
xmlns:enc="urn:mace:shibboleth:2.0:attribute:encoder" xmlns:sec="urn:mace:shibboleth:2.0:security"
xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver classpath:/schema/shibboleth-2.0-attribute-resolver.xsd
urn:mace:shibboleth:2.0:resolver:pc classpath:/schema/shibboleth-2.0-attribute-resolver-pc.xsd
urn:mace:shibboleth:2.0:resolver:ad classpath:/schema/shibboleth-2.0-attribute-resolver-ad.xsd
urn:mace:shibboleth:2.0:resolver:dc classpath:/schema/shibboleth-2.0-attribute-resolver-dc.xsd
urn:mace:shibboleth:2.0:attribute:encoder classpath:/schema/shibboleth-2.0-attribute-encoder.xsd
urn:mace:shibboleth:2.0:security classpath:/schema/shibboleth-2.0-security.xsd">（中略）<resolver:AttributeDefinition id="displayName" xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad"sourceAttributeID="displayName"><resolver:Dependency ref="myLDAP" /><resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"name="urn:mace:dir:attribute-def:displayName" /><resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"name="urn:oid:2.16.840.1.113730.3.1.241"←①のoidfriendlyName="displayName" /></resolver:AttributeDefinition>（中略）</AttributeResolver>③/opt/shibboleth-idp-2.0.0/conf/attribute-filter.xml への登録（中略）<!-- Release the transient ID to anyone --><AttributeFilterPolicy id="releaseTransientIdToAnyone"><PolicyRequirementRule xsi:type="basic:ANY" />（中略）<AttributeRule attributeID="displayName"><PermitValueRule xsi:type="basic:ANY" /></AttributeRule>（中略）</AttributeFilterPolicy>
（中略）

追加

③ldif ファイル(sample3.ldif)の作成#TOP ツリー用
dn: o=example,c=JP
objectClass: organizationo: example#部署ツリー用
dn: ou=somu,o=example,c=JP
objectClass: organizationalUnit
ou: somu
dn: ou=eigyo,o=example,c=JP
objectClass: organizationalUnit
ou: eigyo#社員ツリー用
dn: uid=u001,ou=somu,o=example,c=JP
objectClass:inetOrgPerson
cn: takesi
sn: yamada
uid: u001
userPassword: p‑yamada②上記①の ldif ファイルを用いた登録
dn: uid=u002,ou=eigyo,o=example,c=JP

objectClass:inetOrgPerson
cn: taro
sn: maeda
uid: u002
userPassword: p‑maeda④/etc/openldap/slapd.conf の編集（中略）
suffix"o=exmaple,c=JP"

rootdn"cn=Manager,o=example,c=JP"

rootpw{SSHA}2ZbK+0IyV92py+vi67X80RNAKg066GXS（中略）←suffix←rootdn←暗号化※したものを記載

※暗号化の例 ：「csildap2」というパスワードを暗号化する#slappasswd -h {SSHA} -s csildap2
80U6H/KA4fVlvC+6DzN73DTP/dEAgl76←これを slapd.conf の rootpw に記載⑤LDAP サービスの再起動#service ldap restart⑥上記③の ldif ファイルを用いた登録#ldapadd -x -h localhost -D " cn=Manager,o=example,c=JP " -w csildap2 -f example3.ldif⑦/opt/shibboleth-idp-2.0.0/conf/attribute-resolver.xml の編集<resolver:DataConnector id="myLDAP" xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
ldapURL="ldap://localhost" baseDN=" o=example,c=JP " principal=" cn=Manager,o=example,c=JP "principalCredential="csildap2">←LDAP のパスワードを設定<FilterTemplate><![CDATA[(uid=$requestContext.principalName)]]></FilterTemplate></resolver:DataConnector>⑧tomcat サービスの再起動#service tomcat stop
#service tomcat start６．シングルサインオン実証実験用 サーバ証明書の取得方法について
実証実験で構築する IdP（認証サーバ）には，サーバ証明書の導入が必須となります。
また，本実証実験においては，UPKI「サーバ証明書発行・導入における啓発・評価研究
プロジェクト」が発行するサーバ証明書を利用しますので，以下の手順に従い，サーバ証
明書の申請を行ってください。

☆【サーバ証明書発行・導入における啓発・評価研究プロジェクト 参加予定機関の方】(1)プロジェクトへの参加
最初に，本プロジェクトへの参加申請への参加申請が必要となります。詳細について
は，次のページをご覧ください。
○サーバ証明書発行・導入における啓発・評価研究プロジェクト概要・参加要領等
https://upki-portal.nii.ac.jp/cerpj(2)サーバ証明書の発行
プロジェクト参加完了後にサーバ証明書の発行を行います。次の手続きに従って，サーバ証明書の発行を申請してください。なお，CSR 作成にあたっては，次頁の「CSR プ
ロファイル」を適用してください。
○新規サーバ証明書発行手続き
https://upki-portal.nii.ac.jp/cerpj/request_new(3)サーバ証明書インストール
次の手順に従って，サーバ証明書を IdP にインストールしてください。
○サーバ証明書のインストール方法
https://upki-portal.nii.ac.jp/cerpj/niiodcamanual-v1-0.pdf☆【サーバ証明書発行・導入における啓発・評価研究プロジェクト 参加機関の方】
次の手順に従って，新規に証明書の発行手続きおよびインストールを行ってください。
(1)新規サーバ証明書発行手続き
https://upki-portal.nii.ac.jp/cerpj/request_new※なお，CSR 作成にあたっては，次頁の「CSR プロファイル」を適用してください。
(2)サーバ証明書インストール方法
https://upki-portal.nii.ac.jp/cerpj/niiodcamanual-v1-0.pdf

【CSR プロファイル】
本実証実験で使用するサーバ証明書の CSR は以下の形式で作成してください。
基本領域

設定内容

補

VersionVersion 1(0)-Country

C=JP（固定値）

1

Locality

L=Academe（固定値）

1

Organization

O="主体者組織名"

１

Subject＊ 機関毎に任意に指定
例 )o=National

InstituteofInformatics
Organizational UnitOU="主体者組織単位名"

１＊ 証明書毎に任意に指定例) ou= NII Open Domain CA
commonName

CN="サーバ FQDN"

１＊証明書毎に任意に指定例) cn=www.nii.ac.jp
SubjectPublicKeyInfo

主体者の公開鍵

1024 ビット以上

2（ただし、例外を認める）
attrobites

原則 Null 値とする

3

（ただし、例外を認める）
SignatureAlgorithm
1.

SHA1 with RSAEncryption

上記指定以外の属性を利用する必要がある場合には事前相談すること。少なくとも ST（state or province name）属性は使用しないこと。また、例えば加入者メールアドレ
スなど本プロジェクトの確認項目対象外の情報を含めないこと。

2.

RSA1024bit 以上とする。鍵長 1024bit 未満の場合には事前に登録局へ相談すること。

3.

任意の属性を含めても構わないが、必ずしも証明書に反映されるわけではない。また、含めた属性によっては受理不能とし、当該属性を除いて証明書発行要求の再生成を登録局から求める場合がある。少なくとも SubjectAltName.rfc822Name 属性は使用しないこと。

７．関連 URL
■ UPKI プロジェクト（UPKI イニシアティブ）
https://upki-portal.nii.ac.jp/■ UPKI 認証連携基盤によるシングルサインオン実証実験
https://upki-portal.nii.ac.jp/SSO■ UPKI 認証連携基盤リポジトリ
https://upki-portal.nii.ac.jp/SSO/Repository■ Shibboleth プロジェクト
http://shibboleth.internet2.edu/■ Shibboleth2.0 Wiki (Shibboleth2.0 の構築、設定に関する公式サイト)
https://spaces.internet2.edu/display/SHIB2/Home■ Switch.aai （スイスのフェデレーション）
http://www.switch.ch/aai/■ InCommon（米国のフェデレーション）
http://www.incommonfederation.org/