7.9. 사용자 캐시


사용자 오브젝트가 ID, 사용자 이름 또는 이메일에 의해 로드되면 캐시됩니다. 사용자 오브젝트가 캐시되는 경우 전체 UserModel 인터페이스를 반복하고 이 정보를 로컬 메모리 전용 캐시로 가져옵니다. 클러스터에서 이 캐시는 여전히 로컬이지만 무효화 캐시가 됩니다. 사용자 오브젝트가 수정되면 제거됩니다. 이 제거 이벤트는 다른 노드의 사용자 캐시도 무효화되도록 전체 클러스터에 전파됩니다.

7.9.1. 사용자 캐시 관리

KeycloakSession.userCache() 를 호출하여 사용자 캐시에 액세스할 수 있습니다.

/**
 * All these methods effect an entire cluster of Keycloak instances.
 *
 * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
 * @version $Revision: 1 $
 */
public interface UserCache extends UserProvider {
    /**
     * Evict user from cache.
     *
     * @param user
     */
    void evict(RealmModel realm, UserModel user);

    /**
     * Evict users of a specific realm
     *
     * @param realm
     */
    void evict(RealmModel realm);

    /**
     * Clear cache entirely.
     *
     */
    void clear();
}

특정 사용자, 특정 영역에 포함된 사용자 또는 전체 캐시를 제거하는 방법이 있습니다.

7.9.2. OnUserCache 콜백 인터페이스

공급자 구현과 관련된 추가 정보를 캐시할 수 있습니다. 사용자 스토리지 SPI에는 org.keycloak.models.cache.OnUserCache 사용자가 캐시될 때마다 콜백이 있습니다.

public interface OnUserCache {
    void onCache(RealmModel realm, CachedUserModel user, UserModel delegate);
}

공급자 클래스는 이 콜백을 원하는 경우 이 인터페이스를 구현해야 합니다. UserModel delegate 매개변수는 공급자가 반환한 UserModel 인스턴스입니다. CachedUserModel 은 확장된 UserModel 인터페이스입니다. 로컬 스토리지에서 로컬로 캐시된 인스턴스입니다.

public interface CachedUserModel extends UserModel {

    /**
     * Invalidates the cache for this user and returns a delegate that represents the actual data provider
     *
     * @return
     */
    UserModel getDelegateForUpdate();

    boolean isMarkedForEviction();

    /**
     * Invalidate the cache for this model
     *
     */
    void invalidate();

    /**
     * When was the model was loaded from database.
     *
     * @return
     */
    long getCacheTimestamp();

    /**
     * Returns a map that contains custom things that are cached along with this model.  You can write to this map.
     *
     * @return
     */
    ConcurrentHashMap getCachedWith();
}

CachedUserModel 인터페이스를 사용하면 캐시에서 사용자를 제거하고 공급자 UserModel 인스턴스를 가져올 수 있습니다. getCachedWith() 메서드는 사용자와 관련된 추가 정보를 캐시할 수 있는 맵을 반환합니다. 예를 들어, 자격 증명은 UserModel 인터페이스의 일부가 아닙니다. 메모리에 자격 증명을 캐시하려면 OnUserCache 를 구현하고 getCachedWith() 메서드를 사용하여 사용자 자격 증명을 캐시합니다.

7.9.3. 캐시 정책

사용자 스토리지 공급자의 관리 콘솔 관리 페이지에서 고유한 캐시 정책을 지정할 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.