PaaS/기타

keyCloak 기능 설명 - 2. Clients

armyost 2023. 10. 18. 18:42
728x90

Clients 메뉴에 대해서 설명한다.

 

신뢰되는 Browser Application 서비스를 말한다. 이 Clients들은 로그인을 요청할 수 있다. 당신은 각 Client에 고유한 Role을 줄 수 있다.

 


Client의 구성요소 

※ 너무 많아 주요한 것만 다루겠다.

 

[Settings 탭]

  • Login Theme : 해당 Client에 할당할 로그인 화면
  • Client Protocol : 인증 프로토콜을 설정. OpenId Connect는 인증서버의 정책에 따르겠다는 것이고, SAML은 Cross Domain SSO를 포함하여, Web 기반 인증을 제공
  • AccessType : 접근하는 방식. Contidential은 로그인을 시도할때 Secret을 필요로하는 경우, Public은 Client가 Secret을 필요로 하지 않는경우, Bearer-only는 로그인을 시도하지 않는 경우를 뜻한다.
  • Standard Flow Enabled : Authorization Code를 필요로하는 OAuth2 표준 방식
  • Implicit Flow Enabled : Authorizaion Code를 불필요하는 OAuth2 표준 방식
  • Direct Access Grands Enabled : Client가 직접 Keycloak 서버와 ID/PW로 인증 받는 방식 (grant_type : password)
  • Service Accounts Enabled : Credential을 가지고 인증을 받는 방식 (grant_type : client_credentials)
  • ※ 자세한 내용을 아래 링크 참조

https://wjw465150.gitbooks.io/keycloak-documentation/content/server_admin/topics/sso-protocols/oidc.html#_client_credentials_grant

 

OpenID Connect | keycloak-documentation

 

wjw465150.gitbooks.io

 

  • OAuth 2.0 Device Authorization Grant Enabled : 활성화하면 브라우저 사용이 원활치 않은 OAuth 단말을 사용하는경우. 즉 한정적인 데이터 input만 가능하거나 하는 경우 사용
  • OIDC CIBA Grant Enabled : 활성화하면 사용자 브라우저가 아닌 외부 인증을 사용해야 하는 경우
  • Authorization Enabled : 활성화하면  fine-grained 된 인가 서비스 제공
  • Front Channel Logout : 활성화하면 logout이 발생하면 client에게 redirect를 요구함
  • Valid Redirect URIs : login, logout 성공 후 redirect 가능한 URI 패턴
  • Web Origins : CORS 허용할 Origin
  • Backchannel Logout URL : logout 이벤트가 이 Realm에 보내지면 Client 자체적으로 Logout하도록 하는 URL 입력
  • Use Refresh Tokens : Refresh Token사용여부
  • Token과 Session에 대한 명


[ Credentails 탭 ]

  • Client Authenticator  : Client가 인증 Server에 인증 요청할 방식

[ keys 탭 ]

Use JWKS URL : key를 사용할때 key Store를 URL로 접근해서 사용하는경우, 자동로테이션등 설정하기 좋다.

Certificate : JWT에 활용되는 Client측 유효한 인증서. 위 URL방식을 사용하면 해당 방식은 사용되지 않는다.

 


[ Role 탭 ]

Client Role : 역할은 영역 내의 개별 클라이언트 응용 프로그램에만 적용됩니다. 각 클라이언트는 해당 애플리케이션에 특정한 액세스 권한을 정의하는 고유한 역할 세트를 가질 수 있습니다. 예를 들어 소셜 미디어 애플리케이션의 경우 클라이언트 수준에서 "게시물", "댓글 달기" 또는 "좋아요"와 같은 역할을 가질 수 있습니다. 

 

Keycloak Console에서 Role을 정의하면 인증 요청한 Client로 보내는 Response Payload에 role 정보만을 담아서 보낸다.

그러면 Client 측에서 아래와 같이 사용한다.

import React from 'react'
import useKeyCloak from './UseKeyCloak';

function Manager() {
  const keycloak = useKeyCloak();

  return (
    <div>
      {keycloak && keycloak.hasResourceRole("manager") && (
        <div>
         ...

※ 자세한 내용을 아래 링크 참조

https://tomas-pinto.medium.com/keycloak-clients-and-roles-a-tutorial-b334147f1dbd

 

Keycloak, clients and roles: a tutorial

Keycloak is an open-source Identity and Access Management solution making easy to secure applications and services with little to no code…

tomas-pinto.medium.com


[Client Scope 탭]

  • Scope은 Client가 얻고자 하는 '정보 또는 권한'의 범위 이며, 인증서버가 그 Scope의 범위를 결정하기도 하지만 양방향으로 Client가 Scope의 범위를 추가할 수 있다.
  • Default Client Scope은 인증을 거치면 기본적으로 제공되는 범위이며,
  • Optional Client Scope은 인증요청자가 추가적으로 요청하게 되면 제공되는 범위이다.

[Mappers 탭]

  • Claim에 담고자 하는 내용들을 Customize하는 영역이다. 얘를들어 User attribute에 address가 있으면 주소추가하면 address가 Claim에 담긴다.

 


[Revocation 탭]

기존 토큰을 철회한다.


[Session 탭]

현재 활성화된 Session 정보


 [Offline Access 탭]

Offline Session 정보


[ Clustering 탭 ]

해당 Client에대한 Clustering