7.4. 발신 HTTP 요청


Red Hat Single Sign-On 서버는 안전한 애플리케이션 및 서비스에 대한 브라우저 이외의 HTTP 요청을 수행해야 하는 경우가 많습니다. 인증 서버는 HTTP 클라이언트 연결 풀을 유지 관리하여 이러한 발신 연결을 관리합니다. standalone.xml,standalone-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 가 설정된 경우 이는 REQUIRED 입니다.
client-key-password
클라이언트 키의 암호입니다. client-keystore 가 설정된 경우 이는 REQUIRED 입니다.
proxy-mappings
발신 HTTP 요청에 대한 프록시 구성입니다. 자세한 내용은 프록시 매핑 섹션을 참조하십시오.

7.4.1. Outgoing HTTP 요청에 대한 프록시 매핑

Red Hat Single Sign-On에서 보낸 발신 HTTP 요청은 쉼표로 구분된 프록시 매핑 목록을 기반으로 프록시 서버를 선택적으로 사용할 수 있습니다. proxy-mapping은 regex 기반 호스트 이름 패턴의 조합과 hostnamePattern;proxyUri 의 형태로 proxy-uri를 나타냅니다. 예를 들면 다음과 같습니다.

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

발신 HTTP 요청에 대한 프록시를 확인하려면 대상 호스트 이름이 구성된 호스트 이름 패턴과 일치합니다. 첫 번째 일치 패턴은 사용할 proxy-uri를 결정합니다. 지정된 호스트 이름에 대해 구성된 패턴이 일치하지 않으면 프록시가 사용되지 않습니다.

proxy-uri의 특수 값 NO_PROXY 를 사용하여 연결된 호스트 이름과 일치하는 호스트에 프록시를 사용하지 않아야 함을 나타낼 수 있습니다. 프록시 매핑 끝에 catch-all 패턴을 지정하여 나가는 모든 요청에 대한 기본 프록시를 정의할 수 있습니다.

다음 예제에서는 프록시 매핑 구성을 보여줍니다.

# 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 엔드포인트에서 호출할 때 신뢰할 수 있는 서버에 연결하기 위해 원격 서버의 인증서를 검증해야 합니다. 이는 메시지 가로채기(man-in-the-middle) 공격을 방지하기 위해 필요합니다. 이러한 원격 서버의 인증서 또는 이러한 인증서에 서명한 CA의 인증서를 신뢰 저장소에 배치해야 합니다. 이 신뢰 저장소는 Red Hat Single Sign-On 서버에서 관리합니다.

신뢰 저장소는 ID 브로커, LDAP ID 공급자, 이메일을 보낼 때 및 클라이언트 애플리케이션과의 백채널 통신에 안전하게 연결할 때 사용됩니다.

주의

기본적으로 신뢰 저장소 공급자가 구성되지 않았으며 모든 https 연결이 Java의 JSSE 참조 가이드에 설명된 대로 표준 java truststore 구성으로 대체됩니다. 신뢰가 설정되지 않은 경우 이러한 발신 HTTPS 요청이 실패합니다.

keytool 을 사용하여 새 truststore 파일을 생성하거나 신뢰할 수 있는 호스트 인증서를 기존에 추가할 수 있습니다.

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

truststore는 배포의 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 요청은 통신 중인 서버의 호스트를 확인하는 방법이 필요합니다. 이것이 신뢰자가 하는 것입니다. 키 저장소에는 신뢰할 수 있는 호스트 인증서 또는 인증 기관이 하나 이상 포함되어 있습니다. 이 truststore 파일에는 보안 호스트의 공용 인증서만 포함되어야 합니다. disabled 가 true가 아닌 경우 이는 REQUIRED 입니다.
암호
truststore의 암호입니다. disabled 가 true가 아닌 경우 이는 REQUIRED 입니다.
hostname-verification-policy
기본적으로 WILDCARD 입니다. HTTPS 요청의 경우 서버 인증서의 호스트 이름을 확인합니다. ANY 은 호스트 이름이 확인되지 않았음을 의미합니다. WILDCARD 는 하위 도메인 이름(예: *.foo.com)의 와일드카드를 허용합니다. CN 은 호스트 이름과 정확히 일치해야 합니다.
비활성화됨
true(기본값)인 경우 truststore 구성이 무시되고 인증서 검사가 설명된 대로 JSSE 구성으로 대체됩니다. false로 설정하는 경우 truststore에 대한 파일암호를 구성해야 합니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동