Jetty 12へのマイグレーション
Jetty Projectより、2025年1月にJetty 9.4からJetty 11がEOLになることがアナウンスされています。[1]
Jetty 11を利用されている機関においてはJetty 12への移行が必要となりますが、Shibboleth ProjectよりShibboleth V5 + Jetty 12ではポート 8443でのBack-Channelが利用できない旨がアナウンスされています。
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.ini3. 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"を設定します。/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>同じくBack-Channelを利用するSAML1.ArtifactResolutionプロファイル、SAML2.ArtifactResolutionプロファイルは、学認申請システムが生成したメタデータを利用していた機関はコメントアウトして大丈夫です。
SAML1.ArtifactResolutionプロファイル、SAML2.ArtifactResolutionプロファイルをコメントアウトできない事情がある場合は、signResponses="true"が必要になると思われます。(未確認)