2020年にリリースされる予定のShibboleth IdP v4に関する情報です。
現在ベータ版(beta2)です。
https://marc.info/?l=shibboleth-announce&m=158275521606345&w=2
なお、バージョン3のEoLは2020年末という見込みが以下で示されております。
https://wiki.shibboleth.net/confluence/display/DEV/2020/02/11/February+Update
uApproveJPやTiqrShib等のNIIが提供しているIdPプラグインは現在バージョン4対応の準備中です。
Javaのバージョン
- Java 11以上が必須です。
- 公式サポートはJavaのLTSのみなので、2019年12月現在では Java 11 のみとなります。
Javaコンテナ
- Shibboleth IdP v3で利用されていたTomcat 7はサポート対象外となりました。
- Shibboleth開発元がサポートしているのはJetty 9.4、またはTomcat 9以上(参照: SystemRequirements)
- 開発元はJettyを推奨しています
- 少なくともServlet 3.1をサポートしたJavaコンテナでなければ動作しません
設定ファイルの移行について
名前空間のフラット化が強制され、プレフィックスありの(v2由来の名前空間を使用した)設定ファイルが使用できなくなります
IdP v3.4ではフラット化していない場合、DEPRECATEDのwarningとしてログに出力されます
- 3.4.0以降も細かい改善が続けられていますので、v3.4系の最新版で確認してください
静的に解析しているものと動的に解析しているものがあり、3.4系の最新版でしばらく動かしてみることが必要です
- フラット化の対応手順はこちら
- その他にも、DEPRECATEDのwarningとなる対象が複数あります
- 影響の大きいものとしては<Dependency>要素は内容によって<InputAttributeDefinition>と<InputDataConnector>に変更が必要
- 詳細はShibbolethの本家の情報を参照してください。
- 変更のある要素への置き換え方法へのリンクを含めて記載されています
- Shibboleth IdP v4への準備として、v3.4系最新版にてwarningが出なくなるまで設定ファイルを修正することを推奨します
- すでにフラット化とDEPRECATED対応の学認テンプレートを配布中ですのでこちらも参考にしてください
- LDAP周りで、使用するライブラリがJNDIからUnboundIDに変更になることにより以下の通り設定によってはv4への移行後にエラーになる可能性が若干ございます。
- LDAPのURL(ldap.propertiesの
idp.authn.LDAP.ldapURL
)がスラッシュ(/)で終わる場合はうまく動作しませんのでスラッシュを除去してください。 - 検索フィルタ(ldap.propertiesの
idp.attribute.resolver.LDAP.searchFilter
)に空白が含まれるとActive Directory等との連携に問題が発生する場合がございますので、空白を除去してください。 - LDAPConnectorもしくはJAASAuthnConfigurationにてJNDI特有のプロパティを使っている場合問題が発生します。プロパティ名に"jndi"を含むものにご注意ください。代替のものに置き換えてください。
- 特にバイナリ属性(objectGUID等)については3.4.5よりLDAPConnectorにて
<BinaryAttributes>
要素がサポートされておりますのでこれで代替してください。 JNDI特有のプロパティとは、例えば、attribute-resolver.xmlの<DataConnector>に以下のような指定がある場合該当します。
<LDAPProperty name="com.sun.jndi.ldap.connect.timeout" value="500"/>
その他、IdPのディレクトリの中やJavaのディレクトリの中に
jndi.properties
というファイルが存在しその中で指定しているという場合があるようですのでご注意ください。
- 特にバイナリ属性(objectGUID等)については3.4.5よりLDAPConnectorにて
- 上記問題の対象の場合は、v3.4系最新版で以下に記載されている手順でUnboundIDを使うようにして動作確認することを推奨します
v3.4.4以降で以下の行をldap.propertiesに追加すればJNDIでなくUnboundIDを使うようになります。
idp.ldaptive.provider=org.ldaptive.provider.unboundid.UnboundIDProvider
- 詳細はこちら: LDAPonJava>8
- LDAPのURL(ldap.propertiesの