Jetty Projectより、2025年1月にJetty 9.4からJetty 11がEOLになることがアナウンスされています。[1]
Jetty 11を利用されている機関においてはJetty 12への移行が必要となりますが、Shibboleth ProjectよりShibboleth V5 + Jetty 12ではポート 8443でのBack-Channelが利用できない旨がアナウンスされています。
- https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3516104706/Jetty12#Version-Notes
- https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3255435265/Jetty+on+Windows+Installation#Updating-to-or-Using-Jetty-12
Jetty 12移行後も旧来のSAML 1.1のSPと連携したい機関は下記いずれかの対応が必要となります。
SAML 2.0のSPのみと連携する機関においては対応の必要はありません。
- Front-Channelで属性を送信するために、Shibboleth.SSOプロファイルに
includeAttributeStatement="true"
を設定する - 従来通りのポート 8443でBack-Channelを利用する
- Back-Channelで利用するポートを8443から443に変更の上、SAML1.AttributeQueryで
signResponses="true"
を設定する
前提
本ドキュメントは、下記の移行を想定しています。
- 移行前 Shibboleth IdP V5.1 + Jetty 11
- 移行後 Shibboleth IdP V5.1 + Jetty 12
1. Front-Channelで属性を送信するために、Shibboleth.SSOプロファイルにincludeAttributeStatement="true"
を設定する
SAML 2.0と同様に属性をFront-Channelに含めて送信するために、ShibbolethSSOプロファイルにincludeAttributeStatement="true"
を設定します。
/opt/shibboleth-idp/conf/relying-party.xml
<bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty"> <property name="profileConfigurations"> <list> <!-- SAML 1.1 and SAML 2.0 AttributeQuery are disabled by default. --> <!-- --> - <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" /> + <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" p:includeAttributeStatement="true" /> <ref bean="SAML1.AttributeQuery" /> <ref bean="SAML1.ArtifactResolution" /> <!-- --> <bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" /> <ref bean="SAML2.ECP" /> <ref bean="SAML2.Logout" /> <!-- --> <ref bean="SAML2.AttributeQuery" /> <!-- --> <ref bean="SAML2.ArtifactResolution" /> </list> </property> </bean>
2. 従来通りのポート 8443でBack-Channelを利用する
Jetty 12で従来通りのポート 8443でBack-Channelを利用するために、Jetty 11向けのidp-jetty-baseから下記ファイルをコピーします。
- modules/idp-backchannel.mod
- start.d/idp-backchannel.ini
下記の例では、idp-jetty-base-11.0.0-20240411.202708-115からコピーしています。
# cp -p /opt/idp-jetty-base-11.0.0-20240411.202708-115/modules/idp-backchannel.mod /opt/jetty-base/modules/idp-backchannel.mod # cp -p /opt/idp-jetty-base-11.0.0-20240411.202708-115/start.d/idp-backchannel.ini /opt/jetty-base/start.d/idp-backchannel.ini
3. Back-Channelで利用するポートを8443から443に変更の上、SAML1.AttributeQueryでsignResponses="true"
を設定する
- IdPメタデータの
<AttributeService>
のLocation
属性からポート 8443を削除した上で、学認申請システムからテンプレート外メタデータとして変更申請を行います。IdPメタデータ<AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" - Location="https://idp.example.ac.jp:8443/idp/profile/SAML1/SOAP/AttributeQuery"/> + Location="https://idp.example.ac.jp/idp/profile/SAML1/SOAP/AttributeQuery"/> <AttributeService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" - Location="https://idp.example.ac.jp:8443/idp/profile/SAML2/SOAP/AttributeQuery"/> + Location="https://idp.example.ac.jp/idp/profile/SAML2/SOAP/AttributeQuery"/> <NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat>
- SAML1.AttributeQueryプロファイル、およびSAML2.AttributeQueryプロファイルでSAMLアサーションを署名するために、
signResponses="true"
を設定します。同じくBack-Channelを利用するSAML1.ArtifactResolutionプロファイル、SAML2.ArtifactResolutionプロファイルは、学認申請システムが生成したメタデータを利用していた機関はコメントアウトして大丈夫です。/opt/shibboleth-idp/conf/relying-party.xml<bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty"> <property name="profileConfigurations"> <list> <!-- SAML 1.1 and SAML 2.0 AttributeQuery are disabled by default. --> <!-- --> <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" /> - <ref bean="SAML1.AttributeQuery" /> + <bean parent="SAML1.AttributeQuery" p:signResponses="true" /> <ref bean="SAML1.ArtifactResolution" /> <!-- --> <bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" /> <ref bean="SAML2.ECP" /> <ref bean="SAML2.Logout" /> <!-- --> - <ref bean="SAML2.AttributeQuery" /> + <bean parent="SAML2.AttributeQuery" p:signResponses="true" /> <!-- --> <ref bean="SAML2.ArtifactResolution" /> </list> </property> </bean>
SAML1.ArtifactResolutionプロファイル、SAML2.ArtifactResolutionプロファイルをコメントアウトできない事情がある場合は、signResponses="true"
が必要になると思われます。(未確認)