3.4. 주제 생성


Theme consists of:

  • HTML 템플릿 (Freemarker 템플릿)
  • 이미지
  • 메시지 번들
  • 스타일시트
  • 스크립트
  • meme 속성

각 페이지를 교체하지 않는 한 다른 주제를 확장해야합니다. 대부분의 경우 Red Hat Single Sign-On 주제를 확장하려고 하지만 페이지의 모양과 느낌은 크게 변경되는 경우 기본 Theme를 확장할 수도 있습니다. 기본 주제는 주로 HTML 템플릿과 메시지 번들로 구성되며 Red Hat Single Sign-On Theme에는 주로 이미지와 스타일 대결이 포함되어 있습니다.

주제를 확장할 때 개별 리소스(templates, 스타일 대시 등)를 덮어쓸 수 있습니다. HTML 템플릿을 재정의하려면 새 릴리스로 업그레이드할 때 사용자 지정 템플릿을 업데이트해야 할 수 있습니다.

주제를 만드는 동안 캐싱을 비활성화하는 것이 좋습니다. 따라서 Red Hat Single Sign-On을 다시 시작하지 않고도 themes 디렉토리에서 직접mes 리소스를 편집할 수 있습니다.

절차

  1. standalone.xml 을 편집합니다.
  2. Theme 에서 staticMaxAge-1 로 설정하고 cacheTemplatescacheThemesfalse 로 설정합니다.

    <theme>
        <staticMaxAge>-1</staticMaxAge>
        <cacheThemes>false</cacheThemes>
        <cacheTemplates>false</cacheTemplates>
        ...
    </theme>
    Copy to Clipboard Toggle word wrap
  3. themes 디렉터리에 디렉터리를 생성합니다.

    디렉터리의 이름은 topic의 이름이 됩니다. 예를 들어 mytheme 이라는 주제를 생성하면 디렉토리 themes/mytheme 가 생성됩니다.

  4. 주제 디렉터리 내에서 주제가 제공할 각 유형에 대한 디렉터리를 생성합니다.

    예를 들어, mytheme topic에 로그인 유형을 추가하려면 디렉토리 themes/mytheme/login 을 만듭니다.

  5. 각 유형에 대해 Theme에 대한 일부 구성을 설정할 수 있는 파일 topic.properties 를 생성합니다.

    예를 들어, 주제 주제/mytheme/login을 구성하여 기본 주제를 확장하고 몇 가지 공통 리소스를 가져오려면 다음 내용을 사용하여 파일 themes/mytheme/login /theme.properties 를 생성합니다.

    parent=base
    import=common/keycloak
    Copy to Clipboard Toggle word wrap

    이제 로그인 유형을 지원하는 주제를 생성했습니다.

  6. 관리 콘솔에 로그인하여 새 주제를 점검합니다.
  7. 사용자 영역 선택
  8. 메뉴에서 CloudEvent Settings 을 클릭합니다.
  9. Themes 탭을 클릭합니다.
  10. Login Thememytheme 을 선택하고 저장 을 클릭합니다.
  11. 영역의 로그인 페이지를 엽니다.

    애플리케이션을 통해 로그인하거나 계정 관리 콘솔(/realms/{realm name}/account)을 열어 이 작업을 수행할 수 있습니다.

  12. 부모 주제를 변경하는 효과를 보려면 topic .properties 에서 parent=keycloak 을 설정하고 로그인 페이지를 새로 고칩니다.
참고

성능에 큰 영향을 미치기 때문에 프로덕션에서 캐싱을 다시 활성화해야 합니다.

3.4.1. meme 속성

Themes 속성은 topic 디렉터리의 <THEME TYPE>/theme.properties 파일에 설정되어 있습니다.

  • 부모 - 확장하려는 주제
  • 가져오기 - 다른me에서 리소스 가져오기
  • style - 공백으로 구분된 스타일 목록을 포함합니다.
  • 로케일 - 지원되는 로케일의 쉼표로 구분된 목록

특정 요소 유형에 사용되는 css 클래스를 변경하는 데 사용할 수 있는 속성 목록이 있습니다. 이러한 속성 목록은 keycloak의 해당 유형에서 topic.properties 파일을 참조하십시오 (themes/keycloak/<THEME TYPE>/theme.properties).

사용자 지정 속성을 추가하고 사용자 지정 템플릿에서 사용할 수도 있습니다.

이렇게 하면 다음 형식을 사용하여 시스템 속성 또는 환경 변수를 대체할 수 있습니다.

  • ${some.system.property} - 시스템 속성의 경우
  • ${env.ENV_VAR} - 환경 변수의 경우.

시스템 속성 또는 환경 변수가 ${foo:defaultValue} 에서 찾을 수 없는 경우에도 기본값을 제공할 수 있습니다.

참고

기본값이 제공되지 않고 해당 시스템 속성 또는 환경 변수가 없으면 아무것도 교체되지 않고 템플릿의 형식으로 끝납니다.

가능한 작업의 예는 다음과 같습니다.

javaVersion=${java.version}

unixHome=${env.HOME:Unix home not found}
windowsHome=${env.HOMEPATH:Windows home not found}
Copy to Clipboard Toggle word wrap

3.4.2. 제목에 스타일 워크시트 추가

제목에 하나 이상의 스타일시트를 추가할 수 있습니다.

절차

  1. 주제의 < THEME TYPE>/resources/css 디렉터리에 파일을 만듭니다.
  2. 이 파일을 topic . properties 의 style 속성에 추가합니다.

    예를 들어 mytheme 에 style .css 를 추가하려면 다음 콘텐츠를 사용하여 themes/mytheme/login/resources/css/styles.css 를 생성합니다.

    .login-pf body {
        background: DimGrey none;
    }
    Copy to Clipboard Toggle word wrap
  3. 주제/mytheme/login/theme.properties 를 편집하고 다음을 추가합니다.

    styles=css/styles.css
    Copy to Clipboard Toggle word wrap
  4. 변경 사항을 확인하려면 영역의 로그인 페이지를 엽니다.

    적용되는 유일한 스타일은 사용자 정의 스타일로 인한 것입니다.

  5. 부모 주제의 스타일을 포함하려면 해당 주제에서 스타일을 로드합니다. 주제/mytheme/login/theme.properties 를 편집하고 스타일을 다음과 같이 변경합니다.

    styles=web_modules/@fontawesome/fontawesome-free/css/icons/all.css web_modules/@patternfly/react-core/dist/styles/base.css web_modules/@patternfly/react-core/dist/styles/app.css node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css css/login.css css/styles.css
    Copy to Clipboard Toggle word wrap
    참고

    부모 스타일 대결에서 style을 재정의하려면 스타일시트를 마지막에 나열해야 합니다.

3.4.3. 주제에 스크립트 추가

주제에 하나 이상의 스크립트를 추가할 수 있습니다.

절차

  1. 주제의 < THEME TYPE>/resources/js 디렉터리에 파일을 만듭니다.
  2. 파일을 topic .propertiesscripts 속성에 추가합니다.

    예를 들어 mythemescript.js 를 추가하려면 다음 콘텐츠를 사용하여 themes/mytheme/login/resources/js/script.js 를 생성합니다.

    alert('Hello');
    Copy to Clipboard Toggle word wrap

    그런 다음 themes/mytheme/login/theme.properties 를 편집하고 다음을 추가합니다.

    scripts=js/script.js
    Copy to Clipboard Toggle word wrap

3.4.4. meme에 이미지 추가

주제에서 이미지를 사용할 수 있도록 하려면 주제의 < THEME TYPE>/resources/img 디렉터리에 이미지를 추가합니다. 스타일시트 내에서 또는 HTML 템플릿에서 직접 사용할 수 있습니다.

예를 들어 mytheme에 이미지를 추가하려면 이미지를 themes/ mytheme /login/resources/img/image.anchor 에 복사합니다.

그런 다음 다음을 사용하여 사용자 정의 스타일시트 내에서 이 이미지를 사용할 수 있습니다.

body {
    background-image: url('../img/image.jpg');
    background-size: cover;
}
Copy to Clipboard Toggle word wrap

또는 HTML 템플릿에서 직접 사용하려면 사용자 지정 HTML 템플릿에 다음을 추가합니다.

<img src="${url.resourcesPath}/img/image.jpg">
Copy to Clipboard Toggle word wrap

3.4.5. 메시지

템플릿의 텍스트는 메시지 번들에서 로드됩니다. 다른me을 확장하는 주제는 부모의 메시지 번들의 모든 메시지를 상속하며, < THEME TYPE>/ECDHE/ECDHE_en.properties를 귀하의 Theme에 추가하여 개별 메시지를 덮어쓸 수 있습니다.

예를 들어 로그인 양식의 UsernamemythemeUsername 으로 교체하려면 파일 themes/mytheme/login/ECDHE_en.properties 를 다음 콘텐츠로 생성합니다.

usernameOrEmail=Your Username
Copy to Clipboard Toggle word wrap

메시지를 사용할 때 {0}{1} 와 같은 메시지 값 내에서 인수로 교체됩니다. 예를 들어 로그인에서 {0} {0} 은(는) 영역 이름으로 교체됩니다.

이러한 메시지 번들의 텍스트는 영역별 값으로 덮어쓸 수 있습니다. 영역별 값은 UI 및 API를 통해 관리할 수 있습니다.

3.4.6. 영역에 언어 추가

사전 요구 사항

절차

  1. 주제 디렉토리에 < THEME TYPE>/Forwarded/ECDHE_<LOCALE>.properties 파일을 만듭니다.
  2. 이 파일을 < THEME TYPE>/theme.propertieslocales 속성에 추가합니다. 사용자의 로그인 영역,계정이메일에 사용할 수 있는 언어를 사용하려면, 주제에서 해당 언어를 지원해야 하므로 해당 주제 유형에 대해 언어를 추가해야 합니다.

    예를 들어, Norwegian 번역을 mytheme topic에 추가하려면 다음 콘텐츠와 함께 themes/mytheme/login/ECDHE_no.properties 파일을 생성합니다.

    usernameOrEmail=Brukernavn
    password=Passord
    Copy to Clipboard Toggle word wrap

    메시지에 대한 번역을 생략하면 영어가 사용됩니다.

  3. 주제/mytheme/login/theme.properties 를 편집하고 다음을 추가합니다.

    locales=en,no
    Copy to Clipboard Toggle word wrap
  4. 계정이메일 주제 유형에 대해 동일하게 추가합니다. 이렇게 하려면 주제 /mytheme/account/ECDHE_no.propertiesthemes/mytheme/email/ECDHE/knative_no.properties 를 만듭니다. 이러한 파일을 비워 두면 영어 메시지가 사용됩니다.
  5. themes/mytheme/login/theme.propertiesthemes/mytheme/account/theme.propertiesthemes/mytheme/email/theme.properties 에 복사합니다.
  6. 언어 선택기에 대한 번역을 추가합니다. 이 작업은 영어 번역에 메시지를 추가하여 수행됩니다. 이렇게 하려면 themes/mytheme/account/ECDHE_en.propertiesthemes/mytheme/login/ECDHE_en.properties에 다음을 추가합니다.

    locale_no=Norsk
    Copy to Clipboard Toggle word wrap

    기본적으로 메시지 속성 파일은 ISO-8859-1을 사용하여 인코딩해야 합니다. 특수 헤더를 사용하여 인코딩을 지정할 수도 있습니다. 예를 들어 UTF-8 인코딩을 사용합니다.

    # encoding: UTF-8
    usernameOrEmail=....
    Copy to Clipboard Toggle word wrap

3.4.7. 사용자 정의 ID 공급자 아이콘 추가

Red Hat Single Sign-On은 로그인 화면에 표시되는 사용자 정의 ID 공급자의 아이콘을 추가할 수 있습니다.

절차

  1. 키 패턴 kcLogoIdP-<alias>를 사용하여 로그인she .properties 파일에서 아이콘 클래스를 정의합니다.
  2. myProvider 별칭이 있는 ID 공급자의 경우 사용자 정의 주제의 topic.properties 파일에 행을 추가할 수 있습니다. 예를 들면 다음과 같습니다.

    kcLogoIdP-myProvider = fa fa-lock
    Copy to Clipboard Toggle word wrap

모든 아이콘은 PatternFly4의 공식 웹 사이트에서 사용할 수 있습니다. 소셜 공급자의 아이콘은 이미 기본 로그인 주제 속성 (themes/keycloak/login/theme.properties)에 정의되어 있습니다.

3.4.8. 사용자 정의 HTML 템플릿 생성

Red Hat Single Sign-On은 Apache Freemarker 템플릿을 사용하여 HTML을 생성합니다. < THEME TYPE>/<TEMPLATE>.ftl 을 생성하여 자체 주제에서 개별 템플릿을 덮어쓸 수 있습니다. 사용된 템플릿 목록은 themes/base/<THEME TYPE>.

절차

  1. 템플릿을 기본 주제에서 고유한 주제로 복사합니다.
  2. 필요한 수정 사항을 적용합니다.

    예를 들어 mytheme topic에 대한 사용자 지정 로그인 양식을 생성하려면 themes/base/login/loginthemes/mytheme/login 에 복사하여 편집기에서 엽니다.

    첫 번째 줄(<#import …​> 뒤에 < h1>HELLO WORLD!</h1 >을 추가합니다.

    <#import "template.ftl" as layout>
    <h1>HELLO WORLD!</h1>
    ...
    Copy to Clipboard Toggle word wrap
  3. 수정된 템플릿을 백업합니다. 새 버전의 Red Hat Single Sign-On으로 업그레이드할 때 해당하는 경우 원래 템플릿에 변경 사항을 적용하려면 사용자 지정 템플릿을 업데이트해야 할 수 있습니다.

3.4.9. email

이메일의 제목과 내용(예: 암호 복구 이메일)을 편집하려면 주제의 이메일 유형에 메시지 번들을 추가합니다. 각 이메일에는 세 개의 메시지가 있습니다. 하나는 제목에 대한 것이며, 하나는 일반 텍스트 본문에, 하나는 HTML 본문에 대한 것입니다.

사용 가능한 모든 이메일을 보려면 themes/base/email/Forwarded/Forwarded_en.properties 를 참조하십시오.

예를 들어 mytheme 의 암호 복구 이메일을 변경하려면 다음 콘텐츠를 사용하여 주제/mytheme/email/ECDHE_en.properties 를 생성합니다.

passwordResetSubject=My password recovery
passwordResetBody=Reset password link: {0}
passwordResetBodyHtml=<a href="{0}">Reset password</a>
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat