...
- Apache Tomcat 7 or 8 or 8.5 or 9
- 初期の8.5はセッションのバグにより不安定になるという情報があります。
- JMXを初期化前に使うと動作がおかしくなります。
- Tomcat 8以降idp.xmlに
unpackWAR="false"
を指定していると起動に4〜5倍時間がかかりますので、気になる方は指定を解除してください。
※いずれも以下のShibbolethのサイト「Apache Tomcat 8」が情報源です。
- Java 8 or 11
- Java 9および10は使用できません。Shibboleth開発元はJava 9/10はサポートしない、いわゆるLTSのみをサポートしています。
Oracle JDK / OpenJDK 11にてLDAPサーバへの接続にLDAPSを使う場合、以下のエラーになるという情報があります。
書式設定済み java.lang.NullPointerException: Thread local SslConfig has not been set
原因はJDKのバグであるとのことです。該当する場合、以下でUnboundIDを使う回避策が提示されています。
https://wiki.shibboleth.net/confluence/display/IDP30/LDAPonJava>8
詳細: https://issues.shibboleth.net/jira/browse/IDP-1357Java 7(OpenJDK 7)は終了の方向ですので、Java 8 (Oracle JDK 8 / OpenJDK 8) を使用することを推奨します。
Java 7とJava 8でスクリプトの書き方に若干の違いがあります。(書き方の違いの例)
詳細(Shibboleth Wiki): ScriptedAttributeDefinitionの"Java 1.8 and Nashorn"の項およびその上の記述例, ScriptedDataConnector
v2版: IdPJava1.8, ResolverScriptAttributeDefinition, IdPFilterRequirementScript
(Shibboleth Wikiでは基本的にIdPv3のページでの説明はJava 8(Nashorn)がメインでJava 7(Rhino)も併記、v2版は特に断りがなければJava 7(Rhino)での表記となっています)注意 文字列置換のためのJavaScriptメソッド
"abc".replace("a", "b")
について、Java 7では全置換されていたものがJava 8では先頭の一致した部分しか置換されなくなるという情報があります。当該メソッドを使っている場合は正規表現replace(/a/g, "b")
を使うようにしてください。- Java 8およびそれ以降を使う場合エントロピー不足で起動が遅くなる場合があるという情報があります。jre/lib/security/java.securityやシステムプロパティ等で対処してください。
確認方法および手順例: IdPのサービス動作状況の確認の「よくあるエラー」の503エラーの項- この問題はCentOS 7を使っている場合に顕著です。
- VMで稼働させていてこの問題がある場合、ホストマシンでHavegedを導入しVMからこれを参照する等で十分なエントロピーを生成できる場合があるようですので、合わせてご検討ください。
- Java 8およびそれ以降を使う場合は、/etc/sysconfig/tomcatのJAVA_OPTSに指定するオプションのうち
"-XX:MaxPermSize=256m"
は意味がありません(Java 7向けの指定です)ので削除してかまいません。 - GNU Javaは利用できません。 OracleのJavaもしくはOpenJDKを利用してください。
...