7.4. 送信 HTTP 要求


Red Hat Single Sign-On サーバーは、アプリケーションに対してブラウザー以外の HTTP 要求を保護する必要があります。認証サーバーは、HTTP クライアント接続プールを維持し、これらの発信接続を管理します。standalone.xmlstandalone-ha.xml、または domain.xml で設定する必要があります。このファイルの場所は、操作モード によって異なります。

HTTP クライアント設定例

<spi name="connectionsHttpClient">
    <provider name="default" enabled="true">
        <properties>
            <property name="connection-pool-size" value="256"/>
        </properties>
    </provider>
</spi>

可能な設定オプションは以下のとおりです。

establish-connection-timeout-millis
ソケット接続の確立のタイムアウト。
socket-timeout-millis
発信リクエストがこの期間のデータを受信しない場合は、接続をタイムアウトします。
connection-pool-size
プールで使用できる接続数 (デフォルトは 128)。
max-pooled-per-route
ホストごとにプールできる接続の数 (デフォルトでは 64)。
connection-ttl-millis
最大接続時間 (ミリ秒単位)。デフォルトでは設定されません。
max-connection-idle-time-millis
接続プールで接続がアイドル状態でいられる最大期間 (デフォルトでは 900 秒)。Apache HTTP クライアントのバックグラウンドクリーナースレッドを開始します。このチェックおよびバックグラウンドスレッドを無効にするには、-1 に設定します。
disable-cookies
デフォルトは true です。true に設定すると、クッキーキャッシングは無効になります。
client-keystore
これは、Java キーストアファイルへのパスです。このキーストアには双方向 SSL のクライアント証明書が含まれます。
client-keystore-password
クライアントキーストアのパスワード。これは、client-keystore が設定されている場合は 必須 になります。
client-key-password
クライアントのキーのパスワードこれは、client-keystore が設定されている場合は REQUIRED になります。
proxy-mappings
送信 HTTP 要求のプロキシー設定に注意してください。詳細は、HTTP リクエストの送信のプロキシーマッピング のセクションを参照してください。

7.4.1. HTTP 要求の送信プロキシーマッピング

Red Hat Single Sign-On によって送信される送信 HTTP 要求は、任意でプロキシーマッピングのコンマ区切りリストに基づいてプロキシーサーバーを使用できます。プロキシーマッピングは、hostnamePattern;proxyUri の形式で、正規表現ベースのホスト名パターンとプロキシー URI の組み合わせを示します。以下に例を示します。

.*\.(google|googleapis)\.com;http://www-proxy.acme.com:8080

送信 HTTP リクエストのプロキシーを決定するには、ターゲットのホスト名が、設定されたホスト名パターンと照合されます。最初のマッチングパターンは、使用する proxy-uri を決定します。指定のホスト名に対して設定されたパターンのいずれも一致しない場合は、プロキシーは使用されません。

proxy-uri の特別な値 NO_PROXY は、関連付けられたホスト名パターンに一致するホストにプロキシーを使用すべきではないことを示すために使用できます。proxy-mappings の最後に catch-all パターンを指定して、すべての送信リクエストにデフォルトのプロキシーを定義することができます。

proxy-mapping の設定の例を以下に示します。

# All requests to Google APIs should use http://www-proxy.acme.com:8080 as proxy
.*\.(google|googleapis)\.com;http://www-proxy.acme.com:8080

# All requests to internal systems should use no proxy
.*\.acme\.com;NO_PROXY

# All other requests should use http://fallback:8080 as proxy
.*;http://fallback:8080

これは、以下の jboss-cli コマンドで設定できます。以下のように regex-pattern を適切にエスケープする必要があります。

echo SETUP: Configure proxy routes for HttpClient SPI

# In case there is no connectionsHttpClient definition yet
/subsystem=keycloak-server/spi=connectionsHttpClient/provider=default:add(enabled=true)

# Configure the proxy-mappings
/subsystem=keycloak-server/spi=connectionsHttpClient/provider=default:write-attribute(name=properties.proxy-mappings,value=[".*\\.(google|googleapis)\\.com;http://www-proxy.acme.com:8080",".*\\.acme\\.com;NO_PROXY",".*;http://fallback:8080"])

jboss-cli コマンドを実行すると、以下のサブシステムが設定されます。 " 文字を でエンコードする必要があることに注意してください。

<spi name="connectionsHttpClient">
    <provider name="default" enabled="true">
        <properties>
            <property
            name="proxy-mappings"
            value="[&quot;.*\\.(google|googleapis)\\.com;http://www-proxy.acme.com:8080&quot;,&quot;.*\\.acme\\.com;NO_PROXY&quot;,&quot;.*;http://fallback:8080&quot;]"/>
        </properties>
    </provider>
</spi>

7.4.2. 送信 HTTPS リクエストトラストストア

Red Hat Single Sign-On がリモート HTTPS エンドポイントで呼び出される場合、信頼できるサーバーに接続するためにリモートサーバーの証明書を検証する必要があります。これは、中間者攻撃を防ぐために必要です。これらの証明書を署名したこれらのリモートサーバーまたは CA の証明書はトラストストアに配置する必要があります。このトラストストアは、Red Hat Single Sign-On サーバーによって管理されます。

トラストストアは、アイデンティティーブローカー、LDAP アイデンティティープロバイダーに安全を接続する際に使用され、電子メールの送信時やクライアントアプリケーションとのバックチャネル通信に使用されます。

警告

デフォルトでは、トラストストアプロバイダーは設定されず、https 接続は Java の JSSE リファレンスガイド で説明されているように、標準の Java トラストストア設定にフォールバックします。信頼が行われていない場合、これらの発信 HTTPS リクエストは失敗します。

keytool を使用して新しいトラストストアファイルを作成したり、信頼されるホスト証明書を既存のホスト証明書に追加したりできます。

$ keytool -import -alias HOSTDOMAIN -keystore truststore.jks -file host-certificate.cer

トラストストアは、ディストリビューションの standalone.xml ファイル、standalone-ha.xml ファイル、または domain.xml ファイル内で設定されます。このファイルの場所は、操作モード によって異なります。以下のテンプレートを使用して、トラストストア設定を追加できます。

<spi name="truststore">
    <provider name="file" enabled="true">
        <properties>
            <property name="file" value="path to your .jks file containing public certificates"/>
            <property name="password" value="password"/>
            <property name="hostname-verification-policy" value="WILDCARD"/>
            <property name="disabled" value="false"/>
        </properties>
    </provider>
</spi>

この設定の可能な設定オプションは以下のとおりです。

file
Java キーストアファイルへのパス。HTTPS 要求は、通信しているサーバーのホストを確認する方法が必要です。これは、トラストストアが行なうことです。キーストアには、1 つ以上の信頼できるホスト証明書または認証局が含まれます。このトラストストアファイルには、セキュアなホストのパブリック証明書のみを含める必要があります。これは、disabled が true の場合に REQUIRED になります。
password
トラストストアのパスワード。これは、disabled が true の場合に REQUIRED になります。
hostname-verification-policy
デフォルト では WILDCARD です。HTTPS 要求の場合、これによりサーバーの証明書のホスト名が検証されます。ANY は、ホスト名が検証されていないことを意味します。WILDCARD *.foo.com などのサブドメイン名のワイルドカードを許可します。STRICT CN はホスト名に完全に一致する必要があります。
disabled
true (デフォルト値) の場合、トラストストア設定は無視され、証明書のチェックは JSSE 設定にフォールバックします。false に設定した場合、トラストストアの ファイル および パスワード を設定する必要があります。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.