16.16. 인증 제한 세션
웹 브라우저에서 로그인 페이지가 처음 열리면 Red Hat Single Sign-On은 요청에 대한 유용한 정보를 저장하는 인증 세션이라는 오브젝트를 생성합니다. 동일한 브라우저의 다른 탭에서 새 로그인 페이지가 열 때마다 Red Hat Single Sign-On은 인증 세션에 저장된 인증 하위 세션이라는 새 레코드를 생성합니다. 인증 요청은 Admin CLI와 같은 모든 유형의 클라이언트에서 가져올 수 있습니다. 이 경우 하나의 인증 하위 세션을 사용하여 새 인증 세션도 생성됩니다. 인증 세션은 브라우저 흐름을 사용하는 것 이외의 다른 방법으로 생성할 수 있습니다. 아래 텍스트는 소스 흐름에 관계없이 적용됩니다.
이 섹션에서는 인증 세션에 RHDG 공급자를 사용하는 배포에 대해 설명합니다.
인증 세션은 내부적으로 RootAuthenticationSessionEntity
로 저장됩니다. 각 Root
는 AuthenticationSessionEntity 개체의 컬렉션으로 AuthenticationSessionEntity
RootAuthenticationSessionEntity
에 저장된 여러 인증 하위 세션을 포함할 수 있습니다. Red Hat Single Sign-On은 인증 세션을 전용 RHDG 캐시에 저장합니다. Root
당 AuthenticationSessionEntity의 수는 각 캐시 항목의 크기에 기여합니다. 인증 세션 캐시의 총 메모리 풋프린트는 저장된 AuthenticationSessionEntity
수와 각 Root RootAuthenticationSessionEntity
AuthenticationSessionEntity
내의 AuthenticationSessionEntity 수에 따라 결정됩니다.
유지 관리되는 RootAuthenticationSessionEntity
개체 수는 브라우저에서 완료되지 않은 로그인 흐름 수에 해당합니다. RootAuthenticationSessionEntity
의 수를 제어 상태로 유지하려면 고급 방화벽 제어를 사용하여 수신 네트워크 트래픽을 제한하는 것이 좋습니다.
AuthenticationSessionEntity
가 많은 활성 RootAuthenticationSessionEntity
가 많은 배포에서 메모리 사용량이 증가할 수 있습니다. 로드 밸런서가 지원되지 않거나 세션 고정 용으로 구성되지 않은 경우 클러스터의 네트워크를 통한 로드가 크게 증가할 수 있습니다. 이러한 로드의 이유는 적절한 인증 세션을 소유하지 않는 노드에 배치하는 각 요청은 검색 및 스토리지 모두에 별도의 네트워크 전송이 필요한 소유자 노드의 인증 세션 레코드를 검색하고 업데이트해야하기 때문입니다.
Root
당 AuthenticationSessionEntity의 최대 수는 AuthenticationSessionEntity
authSessionsLimit
속성을 설정하여 authenticationSessions
SPI에서 구성할 수 있습니다. 기본값은 Root
당 300 AuthenticationSessionEntity로 설정됩니다. 이 제한에 도달하면 새 인증 세션 요청 후 가장 오래된 인증 하위 세션이 제거됩니다.
AuthenticationSessionEntity
다음 예에서는 Root
AuthenticationSessionEntity
당 활성 AuthenticationSessionEntity 수를 100으로 제한하는 방법을 보여줍니다.
<subsystem xmlns="urn:jboss:domain:keycloak-server:1.2"> ... <spi name="authenticationSessions"> <default-provider>infinispan</default-provider> <provider name="infinispan" enabled="true"> <properties> <property name="authSessionsLimit" value="100"/> </properties> </provider> </spi> ... </subsystem>
CLI 명령을 사용하는 동등한 구성:
/subsystem=keycloak-server/spi=authenticationSessions:add(default-provider=infinispan) /subsystem=keycloak-server/spi=authenticationSessions/provider=infinispan:add(properties={authSessionsLimit => "100"},enabled=true)