Child pages
  • 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のみと連携する機関においては対応の必要はありません。

  1. Front-Channelで属性を送信するために、Shibboleth.SSOプロファイルにincludeAttributeStatement="true"を設定する
  2. 従来通りのポート 8443でBack-Channelを利用する
  3. 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"を設定する

  1. 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>
  2. 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"が必要になると思われます。(未確認)


  • No labels