比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

プロトコル

DSを経由せず強制的に特定のIdPに遷移する方法

SP3対応

Apacheの設定で require shib-session もしくは require valid-user を設定し、そのコンテンツにアクセスした時点でDSへリダイレクトされる、というのが学認における通常のフローかと思いますが、Apacheの設定に以下を追加すればこれが有効な範囲ではDSを経由せずに指定したIdPに直接リダイレクトします。

...

なお、サイト全体で特定のIdPのみ対象とする場合、例えば学内サービスのようなものについては、下記ページを参考に当該IdPのみを信頼するように設定してください。
⇒ 学内システムとして構築する場合の設定 もしくは メタデータ中の特定のIdPのみ利用を許可する方法

オープンリダイレクタとなりうる問題の対処

SP3対応

Shibboleth SPをデフォルトの設定で利用した場合にユーザを任意の外部サイトにリダイレクトすることができるオープンリダイレクタとして機能する問題があります。Shibboleth SP 2.4.2からリダイレクトの問題へ対処するオプションが提供されています。

...

redirectLimitオプションにはいくつか種類がありますので、各サイトごとに適切なオプションを選択してください。下記に代表的な/etc/shibboleth/shibboleth2.xml の設定例(diff形式)を挙げます。

  • "exact"を指定することでリダイレクト先のホスト名やポートなどがリダイレクト元のSPと完全に一致するものだけに制限することが可能です。

    コード ブロック
      @@ -50,7 +50,8 @@
               security of your site. Stealing sessions via cookie theft is much easier with this disabled.
               -->
               <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
      -                  checkAddress="false" handlerSSL="false" cookieProps="http">
      +                  checkAddress="false" handlerSSL="false" cookieProps="http"
      +                  redirectLimit="exact">
    
                   <!--
                   Configures SSO for a default IdP. To allow for >1 IdP, remove
    
  • "exact+whitelistallow"を指定することでホワイトリストを用いたリダイレクト先の制限が可能です。複数のホスト名でVirtual Host設定を行なっている場合に利用することが想定されます。

    コード ブロック
      @@ -50,7 +50,8 @@
               security of your site. Stealing sessions via cookie theft is much easier with this disabled.
               -->
               <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
      -                  checkAddress="false" handlerSSL="false" cookieProps="http">
      +                  checkAddress="false" handlerSSL="false" cookieProps="http"
      +                  redirectLimit="exact+whitelistallow" redirectWhitelistredirectAllow="https://service1.example.ac.jp/ https://service2.example.ac.jp/">
    
                   <!--
                   Configures SSO for a default IdP. To allow for >1 IdP, remove
    

この設定を行い不正なURLに遷移しようとした場合は以下のエラーとなります。

書式設定済み
opensaml::SecurityPolicyException at (https://sp.example.ac.jp/Shibboleth.sso/SAML2/POST)

Blocked unacceptable redirect location.

Shibboleth SP 3.

...

4.1およびそれ以降ではチェックが強化され、デフォルトのままの場合起動時にログに警告が記録されるようになりました。以下のようなログが記録されている場合はこれに該当しますので、上記のように設定を見直してください。

書式設定済み
2023-01-19 14:07:39 WARN Shibboleth.Application : redirectLimit not set, system will operate as an open redirector if not corrected

リダイレクトを制限するためのオプションが追加された経緯については下記のリンクを参照ください。

https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPConfigurationChanges#NativeSPConfigurationChanges-Shibboleth242ConfigurationChanges

Shibboleth SP 2.5.0からの新機能

...

チェック対象の eppndisplayName といった属性名は /etc/shibboleth/attribute-map.xml で定義されている内容に従って記述する必要があります。
この他に template="attrChecker.html" の部分に template="/var/www/html/Error.html" のようにローカルのファイルを指定することで、Attribute Checkerによって表示されるエラーページを変更することも可能です。

デフォルトのエラー画面は以下のように"We're sorry, but you cannot access this service at this time."で始まる英語の文面となっております。末尾のリンクは<Errors>要素のhelpLocation属性が反映されますのでIdP管理者向けの送信すべき属性等を説明したページを設定しておくとよいでしょう。
Image Added

Attribute Checker Handlerに関する詳細は https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPHandler#NativeSPHandler-AttributeCheckerHandlerVersion25andAbove をご参照ください。

...

メタデータ中の特定のIdPのみ利用を許可する方法

SP3対応

フェデレーションメタデータのように複数のIdPが格納されているメタデータから、特定のIdPのみと連携し、他のIdPからの利用を拒否する必要がある場合には、Whitelist Include MetadataFilter が利用できます。例えば、運用フェデレーションに参加しているIdPと学内に構築したローカルSPで連携(技術ガイド > SP > SPセッティング > 学内システムとして構築する場合の設定)するときに以下のように記述できます。こうすることで、ローカルSP上にIdPメタデータを配置する必要がなく、IdPメタデータ更新時にローカルSP側の更新作業を省略できるという利点があります。

...

パネル

       <MetadataProvider type="XML" urivalidate="true"
                   url="https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml"

             backingFilePath="federation-metadata.xml" reloadIntervalmaxRefreshDelay="7200">
           <MetadataFilter type="RequireValidUntil" maxValidityInterval="1296000"/>
          <MetadataFilter type="Signature" certificate="/etc/shibboleth/cert/gakunin-signer-20102017.cer" verifyBackup="false"/>
           <MetadataFilter type="WhitelistInclude">
               <Include>(...IdPのentityID...)</Include>
                         
→  Includeの行を増やすことで、連携するIdPを増やすことができます
           </MetadataFilter>
                  ...
      </MetadataProvider>


SPの証明書更新の方法

...

属性値は、phpinfo() (参照 : IdPとのSP接続確認) や技術ガイド > 属性 のページで公開している 属性確認用PHPプログラム を用いて確認することができます。

Apache以外の環境で属性値を取得する方法

警告

Shibboleth SPバージョン3ではIIS 7以降向けに新しい方法で属性値を取得することができます。以下の記述は古いものです。

前述の通り、Apache以外のWebサーバでは要求ヘッダを介して属性値を取得することになります。

...