【Shibboleth IdP】再起動せずに Metadata をリロードする

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

Shibboleth IdP では、Metadata の変更を、再起動をせずにリロードすることができます。
SPの Metadata が変更されてすぐに反映したいけど、再起動するとサービスの瞬断が発生するから再起動せずに変更を反映したい・・・そんなときにはリロードが便利です。
今回は、Metadata のリロード手順について記載します。

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

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

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

環境変数 IDP_BASE_URL について

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

Metadata のリロード

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

$ [Shibboleth Idpのインストールディレクトリ]/bin/reload-metadata.sh -id [リロードしたい Metadata の MetadataProvider id]
[MetadataProvider id]は、「metadata-providers.xml」の「MetadataProvider id=”xxx”」で指定されている値です。

尚、「metadata-providers.xml」の記載内容の変更をリロードしたい場合は、『【Shibboleth IdP】再起動せずに設定ファイルの変更をリロードする』に記載の手順で行えます。その際に指定する サービスID は、「shibboleth.MetadataResolverService」です。

  • 実行例:MetadataProvider id=”testsp” の Metadata をリロードする場合
$ /opt/shibboleth-idp/bin/reload-metadata.sh -id testsp

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

リロード手順(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. 変更した設定を反映させます。サービスの再起動 または、『【Shibboleth IdP】再起動せずに設定ファイルの変更をリロードする』に記載のコマンドラインのリロード手順で反映させてください。その際のサービスIDは、「shibboleth.ReloadableAccessControlService」です。

Metadata のリロード

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

http(s)://[idp-base-url]/idp/profile/admin/reload-metadata?id=[MetadataProvider id]

MetadataProvider id は、コマンドラインで実行するときと同じものです。

  • 実行例:MetadataProvider id=”testsp” の Metadata をリロードする場合
https://idp.example.org/idp/profile/admin/reload-metadata?id=testsp

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

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

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

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

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

コメントを残す

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