7.3. 모델 인터페이스
기능 인터페이스에 정의된 대부분의 메서드가 반환 또는 사용자의 표현으로 전달됩니다. 이러한 표현은 org.keycloak.models.UserModel
인터페이스에 의해 정의됩니다. 앱 개발자는 이 인터페이스를 구현해야 합니다. Red Hat Single Sign-On에서 사용하는 외부 사용자 저장소와 사용자 metamodel 간의 매핑을 제공합니다.
package org.keycloak.models; public interface UserModel extends RoleMapperModel { String getId(); String getUsername(); void setUsername(String username); String getFirstName(); void setFirstName(String firstName); String getLastName(); void setLastName(String lastName); String getEmail(); void setEmail(String email); ... }
UserModel
구현에서는 사용자 이름, 이름, 이메일, 역할 및 그룹 매핑과 같은 기타 임의의 특성을 포함하여 사용자에 대한 메타데이터 읽기 및 업데이트에 대한 액세스 권한을 제공합니다.
org.keycloak.models
패키지에는 Red Hat Single Sign-On 메타 모델의 다른 부분, 즉Role
의 다른 부분을 나타내는 다른 모델 클래스가 있습니다.
Model
, RoleModel,GroupModel
및 ClientModel
7.3.1. 스토리지 ID
UserModel
의 중요한 방법 중 하나는 getId()
메서드입니다. UserModel
개발자를 구현하는 경우 사용자 ID 형식을 알고 있어야 합니다. 형식은 다음과 같아야 합니다.
"f:" + component id + ":" + external id
Red Hat Single Sign-On 런타임은 사용자 ID로 사용자를 조회해야 하는 경우가 많습니다. 사용자 ID에는 충분한 정보가 포함되어 있으므로 런타임에서 사용자를 찾기 위해 시스템의 모든 UserStorageProvider
를 쿼리할 필요가 없습니다.
구성 요소 ID는 ComponentModel.getId()
에서 반환된 ID입니다. ComponentModel
은 공급자 클래스를 생성할 때 매개 변수로 전달되므로 여기에서 가져올 수 있습니다. 외부 ID는 공급자 클래스에서 외부 저장소에서 사용자를 찾는 데 필요한 정보입니다. 이는 종종 사용자 이름 또는 uid입니다. 예를 들면 다음과 같습니다.
f:332a234e31234:wburke
런타임에서 id로 조회를 수행하는 경우 ID는 구성 요소 ID를 가져오기 위해 구문 분석됩니다. 구성 요소 ID는 원래 사용자를 로드하는 데 사용된 UserStorageProvider
를 찾는 데 사용됩니다. 그러면 해당 공급자가 ID를 전달합니다. 공급자는 다시 외부 ID를 가져오기 위해 ID를 구문 분석하고, 을 사용하여 외부 사용자 스토리지에서 사용자를 찾습니다.