{ "realm": "tech-log", "enabled": true, "sslRequired": "none", "registrationAllowed": false, "loginTheme": "keycloak", "accessTokenLifespan": 300, "ssoSessionIdleTimeout": 28800, "ssoSessionMaxLifespan": 86400, "roles": { "realm": [ { "name": "studio-author", "description": "Tech Log Studio 편집 권한 (studio:read + studio:write)" } ] }, "clients": [ { "clientId": "tech-log-bff", "name": "Tech Log BFF", "description": "백엔드가 소유하는 Authorization Code 클라이언트. SPA 는 토큰을 직접 들지 않는다.", "enabled": true, "publicClient": false, "secret": "CHANGE_ME_BFF_SECRET", "standardFlowEnabled": true, "directAccessGrantsEnabled": false, "serviceAccountsEnabled": false, "redirectUris": ["/login/oauth2/code/*"], "webOrigins": ["+"], "protocolMappers": [ { "name": "realm-roles", "protocol": "openid-connect", "protocolMapper": "oidc-usermodel-realm-role-mapper", "config": { "claim.name": "realm_access.roles", "jsonType.label": "String", "multivalued": "true", "access.token.claim": "true", "id.token.claim": "true", "userinfo.token.claim": "true" } } ] } ], "users": [ { "username": "studio", "enabled": true, "emailVerified": true, "email": "studio@tech-log.local", "firstName": "Studio", "lastName": "Author", "credentials": [{ "type": "password", "value": "CHANGE_ME_STUDIO_PASSWORD", "temporary": false }], "realmRoles": ["default-roles-tech-log", "studio-author"] } ] }