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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

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

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

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

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

アバター画像
About 木村 29 Articles
Azureなどのクラウドでの稼働を主としたアプリケーション開発を行なっています。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる