【Shibboleth IdP】再起動せずに設定ファイルの変更をリロードする

こんにちは。サイオステクノロジーの木村です。

Shibboleth IdP では、設定ファイルの変更を、再起動をせずにリロードすることができます。
SPの追加や送出属性の変更などで設定ファイルを変更したけど、再起動するとサービスの瞬断が発生するから再起動せずに変更を反映したい・・・そんなときにはサービスのリロードが便利です。

検証したShibboleth IdPのバージョン

  • バージョン4(V.4.3.1)
  • バージョン5(V5.0.0)

上記2つのバージョンで検証しましたが、両方とも同様の手順で行えました。

リロード手順(コマンドライン)

環境変数 IDP_BASE_URL について

リロードを行う際、内部で環境変数「$IDP_BASE_URL」にアクセスしています。
「$IDP_BASE_URL」が設定されていない場合は、デフォルト値(http://localhost/idp)が使用されます。
URLがデフォルト値と異なる場合、適宜設定してください。

設定のリロード

設定のリロードは以下のコマンドで行うことができます。

$ [Shibboleth Idpのインストールディレクトリ]/bin/reload-service.sh -id [サービスID]

リロードしたい設定の内容によって、サービスIDは異なります。
例えば、attribute-filter.xml の場合のサービスIDは、「shibboleth.AttributeFilterService」です。
サービスIDについては、こちらの公式ページの Reference – Beans に記載がございますのでそちらをご参照ください。

  • 実行例:attribute-filter.xml の変更をリロードする場合
$ /opt/shibboleth-idp/bin/reload-service.sh -id shibboleth.AttributeFilterService

リロードを行うと、ログには以下のように、リロードを行い、それが成功した旨のログが出力されます。

以上でリロードは完了です。

リロード手順(Web API)

上記コマンドラインの方法の他に、GET リクエストを発行してサービスをリロードすることもできます。コマンドラインの方法では、Shibboleth IdPサーバの環境で行う必要があるため、外部からリロードを実行したい時などはこちらの方法を使います。

アクセス権の付与

外部から実行する場合は、実行する環境に、AccessControlConfigurationで定義されているアクセス権が必要です。
以下の方法で、実行する環境のIPアドレスを指定してアクセス権を事前に付与しておきます。

1. [Shibboleth Idpのインストールディレクトリ]/conf 配下にある「access-control.xml」の「bean id=”AccessByIPAddress”」の 「p:allowedRanges=」に、アクセスを許可する IP アドレスを記載して保存します。

  • access-control.xml
<util:map id="shibboleth.AccessControlPolicies">
    <entry key="AccessByIPAddress">
        <bean id="AccessByIPAddress" parent="shibboleth.IPRangeAccessControl"
                p:allowedRanges="#{ {'127.0.0.1/32', '::1/128', 'xx.xx.xx.xx/32'} }" />
    </entry>

2. 変更した設定を反映させます。サービスの再起動 または、上記コマンドラインでのリロード手順で反映させてください。コマンドラインのリロード手順で反映する場合のサービスIDは、「shibboleth.ReloadableAccessControlService」です。

設定のリロード

設定のリロードは以下の URL に GET リクエストを発行して行うことができます。

http(s)://[idp-base-url]/idp/profile/admin/reload-service?id=[サービスID]

サービスID は、コマンドラインで実行するときと同じものです。

  • 実行例:attribute-filter.xml の変更をリロードする場合
https://idp.example.org/idp/profile/admin/reload-service?id=shibboleth.AttributeFilterService

リロードが成功すると、以下のようなメッセージが返されます。

以上でリロードは完了です。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です