7.7. 외부 스토리지 강화


PropertyFileUserStorageProvider 예제는 실제로 제한됩니다. 속성 파일에 저장된 사용자로 로그인할 수는 있지만 다른 많은 작업을 수행할 수는 없습니다. 이 공급자가 로드한 사용자가 특정 애플리케이션에 완전히 액세스하기 위해 특별한 역할 또는 그룹 매핑이 필요한 경우 이러한 사용자에게 역할 매핑을 추가할 수 있는 방법이 없습니다. 또한 이메일, 첫 번째 및 성과 같은 중요한 속성을 수정하거나 추가할 수 없습니다.

이러한 유형의 경우 Red Hat Single Sign-On을 사용하면 Red Hat Single Sign-On의 데이터베이스에 추가 정보를 저장하여 외부 저장소를 보강할 수 있습니다. 이를 페더레이션 사용자 스토리지라고 하며 org.keycloak.storage.federated.UserFederatedStorageProvider 클래스에 캡슐화됩니다.

UserFederatedStorageProvider

package org.keycloak.storage.federated;

public interface UserFederatedStorageProvider extends Provider {

    Set<GroupModel> getGroups(RealmModel realm, String userId);
    void joinGroup(RealmModel realm, String userId, GroupModel group);
    void leaveGroup(RealmModel realm, String userId, GroupModel group);
    List<String> getMembership(RealmModel realm, GroupModel group, int firstResult, int max);

...

UserFederatedStorageProvider 인스턴스는 KeycloakSession.userFederatedStorage() 메서드에서 사용할 수 있습니다. 속성, 그룹 및 역할 매핑, 다양한 인증 정보 유형 및 필요한 작업을 저장하는 데 필요한 모든 종류의 방법이 있습니다. 외부 저장소의 데이터 모델이 전체 Red Hat Single Sign-On 기능을 지원할 수 없는 경우 이 서비스는 격차를 채울 수 있습니다.

Red Hat Single Sign-On에는 org.keycloak.storage.adapter.AbstractUserAdapterFederatedStorage 가 포함되어 있습니다. 이 클래스는 사용자 이름 가져오기/설정을 제외한 모든 UserModel 방법을 사용자 페더레이션 스토리지에 위임합니다. 외부 스토리지 표현에 위임하기 위해 재정의해야 하는 메서드를 재정의합니다. 재정의할 수 있는 더 작은 보호 메서드가 있으므로 이 클래스의 javadoc을 읽는 것이 좋습니다. 그룹 멤버십 및 역할 매핑을 구체적으로 분석합니다.

7.7.1. 보강 예

우리의 PropertyFileUserStorageProvider 예제에서는 AbstractUserAdapterFederatedStorage 를 사용하기 위해 공급자에게 간단한 변경이 필요합니다.

PropertyFileUserStorageProvider

    protected UserModel createAdapter(RealmModel realm, String username) {
        return new AbstractUserAdapterFederatedStorage(session, realm, model) {
            @Override
            public String getUsername() {
                return username;
            }

            @Override
            public void setUsername(String username) {
                String pw = (String)properties.remove(username);
                if (pw != null) {
                    properties.put(username, pw);
                    save();
                }
            }
        };
    }

대신 AbstractUserAdapterFederatedStorage 의 익명 클래스 구현을 정의합니다. setUsername() 메서드는 속성 파일을 변경하여 저장합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동