Shibboleth SPのアップデートに関してはこちらをご覧ください。⇒SPv3アップデートに関する情報 |
V3内のアップデートに関してはこちらをご覧ください。⇒IdPバージョン3アップデートに関する情報 |
shibboleth-identity-provider-4.x.x.tar.gz
パッケージを展開したディレクトリで、以下のコマンドで設定ファイルの変更点を確認し、適宜反映した上で、アップデートを実行します。
反映しない場合、旧来の機能は変わらず動作することが保証されますが、新バージョン以降の新機能が(デフォルトで有効な場合と有効化した場合いずれも)正しく動作することが保証されません。このため、将来的な新機能利用も見据えて、アップデート後でもかまいませんのでなるべく早く反映するようにしてください。 特に、edit-webapp/WEB-INF/web.xmlは頻繁に更新されていますので、当該ファイルが存在する場合はweb.xmlの変遷を参照の上必要な変更を反映してください。( |
uApproveJPをインストールしている場合は
ただし、4.1.0以降ではファイルがライブラリの中に入っております。下記の手順で展開したディレクトリの webapp/WEB-INF/lib/idp-conf-impl-4.1.x.jarの中にある当該設定ファイルを更新してJARファイルを上書きしてください。
|
まず、配布物として旧バージョンからの変更点を確認します。
|
Jettyを停止後、インストールスクリプトを実行します。
|
|
インストールスクリプトが正常に終了したらJettyを起動します。
|
アップデート後、以下のコマンドでバージョンが更新されていることを確認してください。
|
準備中
このバージョンに限ったことではありませんが、Windows MSI installerを使っている場合アップデート時に最大メモリ設定が変更されるという情報があります。Windowsをお使いの場合はアップデート後にチェックするようにしてください。
詳細: (Shibboleth Wiki) WindowsInstallation の"Always Check"
こちらもこのバージョンに限ったことではありませんが、Jettyを9.4.44以降に更新する場合、logbackライブラリのコンフリクトで従来の/opt/jetty-base/では以下のエラーで起動できません。
java.security.PrivilegedActionException: java.lang.ClassNotFoundException: ch.qos.logback.access.jetty.RequestLogImpl |
このエラーで起動できない場合は、以下で提供されております /opt/jetty-base/ に更新してお使いください。
https://build.shibboleth.net/maven/snapshots/net/shibboleth/idp/idp-jetty-base/9.4.1-SNAPSHOT/idp-jetty-base-9.4.1-20211028.163025-766.tar.gz
もしくは、/opt/jetty-base/lib/logback/ 以下の3つのファイルを、上記パッケージで提供されているもので置き換えてください。
こちらもこのバージョンに限ったことではありませんが、技術ガイドでご案内しているようにsystemdでJettyの起動や停止を行っている場合、かなり低い確率で起動時に以下のエラーが出て起動できない場合があるという報告があります。
Job for jetty.service failed because the control process exited with error code. See "systemctl status jetty.service" and "journalctl -xe" for details. |
ログには特にエラー等出ず起動中に突然停止した状態になります。
このようになりましたら、/opt/java-base/tmp/jetty.state が存在するかどうか確認し、存在する場合は一旦削除してからJettyの起動をお試しください。
長期間稼働しているとこうなる確率が増えるようですがそれに限りません。
本問題はJetty停止時に上記jetty.stateが削除されないことが原因で、何故削除されないかは不明ながら、/etc/init.d/jettyに以下の行を加えて削除ののちに起動するようにすれば本問題は回避できます。
@@ -447,6 +447,7 @@ ################################################## case "$ACTION" in start) + rm -f $JETTY_STATE echo -n "Starting Jetty: " if (( NO_START )); then |
/opt/shibboleth-idp/system/ディレクトリから多くのファイルが削除されました。
3.1およびそれ以前の配布物のweb.xmlを edit-webapp/WEB-INF/ に配置しており、その後の必要な更新を行っていない場合にはsystem/以下への参照が含まれているためエラーになるという情報があります。共通手順にも含めておりますがweb.xmlの変遷を参照し必要な変更を取り込んでください。特に DeferPlaceholderFileSystemXmlWebApplicationContext
という文字列が含まれる場合はエラーになる可能性があります。
また、uApproveJPのインストール・アップデート方法に変更が生じております。詳しくは上記共通手順の注意書きをご参照ください。
4.1からモジュールおよびプラグインの機能が導入されております。以前のバージョンからアップデートした場合は自動的に有効化等されるため問題ありませんが、4.1.xおよびそれ以降を新規インストールした場合、モジュールを有効化しないと使えない機能がございますのでご注意ください。現在有効化されているモジュールは以下のコマンドで確認できます:
# /opt/shibboleth-idp/bin/module.sh -l |
モジュールの例: 属性送信同意画面の設定(IdPv4)
4.1からはidp.propertiesの記述が別の複数のファイルに分割記述されるようになりました(例: authn/authn.properties)。ただし4.0.x以前からのアップデートの場合はそれらの記述は適切に無視されます。4.1流にプロパティを分散記述する場合は、idp.propertiesにある重複を排除した上でidp.searchForPropertiesをtrueに設定してください。詳しくは dist/conf/idp.properties の冒頭のコメントを参照してください。
4.1の書式に書き換える例: https://shibboleth.atlassian.net/wiki/spaces/KB/pages/1469908146/Example+4.1+Upgrade
4.1から新たにプロパティで指定できるようになった設定が多数ありますが、古い設定ファイルが邪魔をして適切に反映されない場合があります。適切にプロパティの値を反映させたい場合は、対応する .idpnew が末尾に付くファイルを探し、元のファイルの変更点を確認し *.idpnew のファイルで置き換えた上で、適切に変更点を反映させてください。
4.0.1までには属性値ハッシュ計算の問題で属性値が複数ある場合変更されていないのに再同意を求める問題(idp.consent.compareValues=trueの場合の問題)があるようです。本運用環境を移行する場合にはご注意ください。4.1.0で修正されました。
https://issues.shibboleth.net/jira/browse/IDP-1660
LDAPを使った属性取得の例が conf/examples/ の下に移動しました。(conf/examples/attribute-resolver-ldap.xml)
下記ページの通りバージョン4.0.0が2020-03-11にリリースされました。下記の注意事項および手順をご確認の上、バージョンアップを行ってください。
https://wiki.shibboleth.net/confluence/display/NEWS/2020/03/11/Shibboleth+Identity+Provider+V4.0.0+Released
なお、バージョン3のEoLは2020年末です。未だバージョン3を運用している機関様におかれましては至急V4へのバージョンアップのスケジューリングをお願いします。
http://shibboleth.net/pipermail/announce/2020-March/000213.html
学認が提供している技術ガイドも順次更新していきます。uApproveJPはバージョン4対応版を公開中です。TiqrShib等のNIIが提供しているIdPプラグインは現在バージョン4対応版の公開準備中です。
また、アップデート時のノウハウなど情報をお持ちの方がいらっしゃいましたら、情報交換ML等で共有いただけましたら幸いです。
名前空間のフラット化が強制され、プレフィックスありの(v2由来の名前空間を使用した)設定ファイルが使用できなくなります
IdP v3.4ではフラット化していない場合、DEPRECATEDのwarningとしてログに出力されます
静的に解析しているものと動的に解析しているものがあり、3.4系の最新版でしばらく動かして一通り認証フローの動作確認を行ってみることが必要です
内容によって<InputAttributeDefinition>もしくは<InputDataConnector>で置き換えてください。例えば
<resolver:Dependency ref="myLDAP" /> |
は(myLDAPがDataConnectorとして定義されていると仮定して)以下で置き換えます。attributeNamesには使用する属性名を(複数ある場合はスペース区切りで)列挙してください:
<InputDataConnector ref="myLDAP" attributeNames="..." /> |
また、
<resolver:Dependency ref="eduPersonAffiliation" /> |
は(eduPersonAffiliationがAttributeDefinitionで定義されていると仮定して)以下で置き換えます:
<InputAttributeDefinition ref="eduPersonAffiliation" /> |
LegacyPrincipalConnector
以下のwarningが出る場合は
WARN [DEPRECATED:118] - Spring bean 'c14n/LegacyPrincipalConnector', (c14n/subject-c14n.xml): This will be removed in the next major version of this software; replacement is <remove> |
conf/c14n/subject-c14n.xml の以下の部分を削除してください。
<!-- This is installed to support the old mechanism of using PrincipalConnectors in the attribute resolver to map SAML Subjects back into principals. If you don't use those (or this is a new install) you can remove this. --> <ref bean="c14n/LegacyPrincipalConnector" /> |
フラット化への対応により<PrincipalConnector>は削除されているはずですので、当該部分を削除しても問題ありません。
<AttributeEncoder>
の行は消さないでください。あくまでフラット化とDEPRECATEDな要素・属性の置き換えの参考として参照してください。idp.authn.LDAP.ldapURL
)がスラッシュ(/)で終わる場合はうまく動作しませんのでスラッシュを除去してください。idp.attribute.resolver.LDAP.searchFilter
)に空白が含まれるとActive Directory等との連携に問題が発生する場合がございますので、空白を除去してください。<BinaryAttributes>
要素がサポートされておりますのでこれで代替してください。プロパティ名は"java.naming.ldap.attributes.binary"となっております。JNDI特有のプロパティとは、例えば、attribute-resolver.xmlの<DataConnector>に以下のような指定がある場合該当します。
<LDAPProperty name="com.sun.jndi.ldap.connect.timeout" value="500"/> |
その他、IdPのディレクトリの中やJavaのディレクトリの中に jndi.properties
というファイルが存在しその中で指定しているという場合があるようですのでご注意ください。
V3.4.4以降で以下の行をldap.propertiesに追加すればJNDIでなくUnboundIDを使うようになります。
idp.ldaptive.provider=org.ldaptive.provider.unboundid.UnboundIDProvider |
V3系でUnboundIDが使われていることの確認は、idp.propertiesに
idp.loglevel.ldap=INFO |
を追加してログレベルを変更の上再起動し、下記のように"Setting ldap provider to"が UnboundIDProvider になっていることを確認してください。
2020-03-02 09:46:50,446 - - INFO [org.ldaptive.DefaultConnectionFactory:192] - Setting ldap provider to org.ldaptive.provider.unboundid.UnboundIDProvider 2020-03-02 09:46:50,453 - - INFO [org.ldaptive.DefaultConnectionFactory:192] - Setting ldap provider to org.ldaptive.provider.unboundid.UnboundIDProvider 2020-03-02 09:46:50,453 - - INFO [org.ldaptive.DefaultConnectionFactory:192] - Setting ldap provider to org.ldaptive.provider.unboundid.UnboundIDProvider |
確認後、idp.propertiesに追加した行を削除してログレベルを元に戻してください。