Identity 구성
OSS Identity 런타임 구성을 설명합니다. 이 페이지는 현재 Contexa 코드베이스가 실제로 사용하는 spring.auth.*, contexa.identity.statemachine.* 속성과, AuthUrlProvider, MfaFlowUrlRegistry, IdentityDslRegistry, MfaDslConfigurerImpl, SessionStateConfigurer 같은 런타임 클래스가 이 설정을 어디에서 소비하는지를 함께 정리합니다.
Auth Context 속성
AuthContextProperties는 spring.auth prefix에 바인딩됩니다. 인증 상태 모드, 토큰 전송 방식, 토큰 발급자 모드, URL 그룹, MFA 기본값, 토큰 수명 주기를 제어합니다.
핵심 인증 설정
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
spring.auth.state-type | StateType | OAUTH2 | 기본 상태 모드를 선택합니다. 현재 enum 값은 OAUTH2, SESSION입니다. |
spring.auth.token-transport-type | TokenTransportType | HEADER | 토큰 전송 방식을 제어합니다. 현재 enum 값은 COOKIE, HEADER, HEADER_COOKIE입니다. |
spring.auth.token-issuer | TokenIssuer | INTERNAL | Contexa가 직접 토큰을 발급할지, 외부 Authorization Server를 사용할지 선택합니다. 현재 enum 값은 INTERNAL, AUTHORIZATION_SERVER입니다. |
spring.auth.factor-selection-type | FactorSelectionType | SELECT | MFA 팩터를 사용자가 명시적으로 선택할지, 자동 선택할지 결정합니다. 현재 enum 값은 AUTO, SELECT입니다. |
spring.auth.access-token-validity | long | 3600000 | 액세스 토큰 유효 기간(밀리초)입니다. |
spring.auth.refresh-token-validity | long | 604800000 | 리프레시 토큰 유효 기간(밀리초)입니다. |
spring.auth.refresh-rotate-threshold | long | 43200000 | 리프레시 토큰 사용 시 회전을 트리거하는 임계값입니다. |
spring.auth.enable-refresh-token | boolean | true | 리프레시 토큰 발급을 활성화합니다. |
spring.auth.allow-multiple-logins | boolean | false | 동일 principal의 동시 활성 로그인을 허용합니다. |
spring.auth.max-concurrent-logins | int | 3 | 다중 로그인을 허용할 때의 동시 로그인 상한입니다. |
spring.auth.cookie-secure | boolean | true | 인증 쿠키를 기본적으로 secure로 표시합니다. |
spring.auth.token-persistence | String | memory | 로그인/MFA 페이지에 전달되는 프런트엔드 토큰 저장 방식입니다. 현재 OSS 클라이언트 모드는 memory, localstorage, sessionstorage입니다. |
spring.auth.token-prefix | String | Bearer | Authorization 헤더 prefix입니다. |
spring.auth.roles-claim | String | roles | 역할을 읽어오는 JWT claim 이름입니다. |
spring.auth.scopes-claim | String | scopes | 스코프를 읽어오는 JWT claim 이름입니다. |
spring.auth.oauth2-csrf | boolean | false | OAuth2 성격의 엔드포인트에 대한 CSRF 보호를 토글합니다. |
spring:
auth:
state-type: oauth2
token-transport-type: header
token-issuer: internal
factor-selection-type: select
access-token-validity: 3600000
refresh-token-validity: 604800000
refresh-rotate-threshold: 43200000
enable-refresh-token: true
allow-multiple-logins: false
max-concurrent-logins: 3
cookie-secure: true
token-persistence: memory
token-prefix: "Bearer "
roles-claim: roles
scopes-claim: scopes
oauth2-csrf: false
관련 런타임 문서: Authentication, Adaptive MFA, State Management.
URL 구성 그룹
spring.auth.urls는 AuthUrlProvider가 소비합니다. MFA 흐름에서는 MfaFlowUrlRegistry가 플로우별 provider를 생성해, 이름 있는 MFA 플로우가 전역 상태를 건드리지 않고 prefix를 안전하게 분리해서 쓸 수 있게 합니다.
단일 인증 URL
| 속성 | 기본값 | 설명 |
|---|---|---|
spring.auth.urls.single.form-login-processing | /login | 단일 팩터 폼 로그인 처리 엔드포인트입니다. |
spring.auth.urls.single.form-login-page | /login | 단일 팩터 폼 로그인 페이지입니다. |
spring.auth.urls.single.rest-login-processing | /api/login | 단일 팩터 REST 로그인 처리 엔드포인트입니다. |
spring.auth.urls.single.login-failure | /login?error | 단일 팩터 로그인 실패 리다이렉트입니다. |
spring.auth.urls.single.login-success | / | 단일 팩터 로그인 성공 리다이렉트입니다. |
spring.auth.urls.single.logout-page | /logout | 단일 팩터 로그아웃 페이지입니다. |
spring.auth.urls.single.ott.request-email | /login/ott | 단일 팩터 OTT 요청 페이지입니다. |
spring.auth.urls.single.ott.code-generation | /ott/generate | 단일 팩터 OTT 코드 생성 엔드포인트입니다. |
spring.auth.urls.single.ott.code-sent | /login/ott/sent | 단일 팩터 OTT 전송 완료 페이지입니다. |
spring.auth.urls.single.ott.challenge | /login/ott/verify | 단일 팩터 OTT 검증 페이지입니다. |
spring.auth.urls.single.ott.login-processing | /login/ott | 단일 팩터 OTT 검증 엔드포인트입니다. |
spring.auth.urls.single.ott.login-failure | /login/ott?error | 단일 팩터 OTT 실패 페이지입니다. |
spring.auth.urls.single.passkey.login-page | /login/webauthn | 단일 팩터 패스키 로그인 페이지입니다. |
spring.auth.urls.single.passkey.login-processing | /login/webauthn | 단일 팩터 패스키 검증 엔드포인트입니다. |
spring.auth.urls.single.passkey.login-failure | /login/webauthn?error | 단일 팩터 패스키 실패 페이지입니다. |
spring.auth.urls.single.passkey.assertion-options | /webauthn/authenticate/options | 패스키 assertion options 엔드포인트입니다. |
spring.auth.urls.single.passkey.registration-options | /webauthn/register/options | 패스키 등록 options 엔드포인트입니다. |
spring.auth.urls.single.passkey.registration-processing | /webauthn/register | 패스키 등록 처리 엔드포인트입니다. |
MFA URL 그룹
| 속성 | 기본값 | 설명 |
|---|---|---|
spring.auth.urls.primary.form-login-processing | /mfa/login | MFA 플로우 내부의 1차 폼 로그인 처리 경로입니다. |
spring.auth.urls.primary.form-login-page | /mfa/login | MFA 플로우 내부의 1차 폼 로그인 페이지입니다. |
spring.auth.urls.primary.rest-login-processing | /api/mfa/login | MFA 플로우 내부의 1차 REST 로그인 엔드포인트입니다. |
spring.auth.urls.primary.login-failure | /login?error | 1차 인증 실패 리다이렉트입니다. |
spring.auth.urls.primary.login-success | / | 1차 인증 성공 리다이렉트입니다. |
spring.auth.urls.primary.logout-page | /logout | 1차 인증 로그아웃 페이지입니다. |
spring.auth.urls.mfa.select-factor | /mfa/select-factor | MFA 팩터 선택 페이지입니다. |
spring.auth.urls.mfa.success | /mfa/success | MFA 성공 페이지입니다. |
spring.auth.urls.mfa.failure | /mfa/failure | MFA 실패 페이지입니다. |
spring.auth.urls.mfa.cancel | /mfa/cancel | MFA 취소 엔드포인트/페이지입니다. |
spring.auth.urls.mfa.status | /mfa/status | MFA 상태 조회 엔드포인트입니다. |
spring.auth.urls.mfa.request-ott-code | /mfa/request-ott-code | OTT 코드 요청 엔드포인트입니다. |
spring.auth.urls.mfa.config | /api/mfa/config | 페이지 생성기와 클라이언트 코드가 사용하는 MFA 구성 엔드포인트입니다. |
spring.auth.urls.factors.ott.request-code-ui | /mfa/ott/request-code-ui | OTT 요청 페이지입니다. |
spring.auth.urls.factors.ott.code-generation | /mfa/ott/generate-code | OTT 코드 생성 엔드포인트입니다. |
spring.auth.urls.factors.ott.code-sent | /mfa/ott/code-sent | OTT 코드 전송 완료 페이지입니다. |
spring.auth.urls.factors.ott.challenge-ui | /mfa/challenge/ott | OTT 챌린지 페이지입니다. |
spring.auth.urls.factors.ott.login-processing | /login/mfa-ott | OTT 로그인 처리 엔드포인트입니다. |
spring.auth.urls.factors.ott.default-failure | /mfa/challenge/ott?error=true | 기본 OTT 실패 리다이렉트입니다. |
spring.auth.urls.factors.ott.single-ott-request-email | /loginOtt | OttUrls가 유지하는 레거시 단일 OTT 요청 페이지 경로입니다. |
spring.auth.urls.factors.ott.single-ott-code-generation | /login/ott/generate | OttUrls가 유지하는 레거시 단일 OTT 생성 경로입니다. |
spring.auth.urls.factors.ott.single-ott-challenge | /loginOttVerifyCode | OttUrls가 유지하는 레거시 단일 OTT 챌린지 경로입니다. |
spring.auth.urls.factors.ott.single-ott-sent | /ott/sent | OttUrls가 유지하는 레거시 단일 OTT 전송 완료 페이지 경로입니다. |
spring.auth.urls.factors.passkey.rp-id | localhost | 기본 패스키 relying-party ID입니다. |
spring.auth.urls.factors.passkey.rp-name | contexa-identity | 기본 패스키 relying-party 이름입니다. |
spring.auth.urls.factors.passkey.allowed-origins | null | 허용 origin 목록입니다. 값이 없으면 패스키 빌더가 http://localhost:{server.port}를 fallback으로 사용합니다. |
spring.auth.urls.factors.passkey.login-processing | /login/mfa-webauthn | MFA 모드 패스키 인증 엔드포인트입니다. |
spring.auth.urls.factors.passkey.challenge-ui | /mfa/challenge/passkey | 패스키 챌린지 페이지입니다. |
spring.auth.urls.factors.passkey.registration-processing | /webauthn/register | 패스키 등록 엔드포인트입니다. |
spring.auth.urls.factors.passkey.assertion-options | /webauthn/authenticate/options | 패스키 assertion options 엔드포인트입니다. |
spring.auth.urls.factors.passkey.registration-options | /webauthn/register/options | 패스키 등록 options 엔드포인트입니다. |
spring.auth.urls.factors.recovery-code-login-processing | /login/recovery/verify | 복구 코드 검증 엔드포인트입니다. |
spring.auth.urls.factors.recovery-code-challenge-ui | /mfa/challenge/recovery | 복구 코드 챌린지 페이지입니다. |
런타임 소비 지점: AuthUrlProvider가 이 경로들을 해석하고, MfaFlowUrlRegistry가 이름 있는 MFA 플로우마다 별도 provider를 만들어 prefix를 안전하게 격리합니다.
토큰 발급자 설정
spring.auth.internal과 spring.auth.oauth2는 spring.auth.token-issuer 선택값에 따라 사용되는 두 가지 토큰 발급 설정입니다.
내부 JWT 엔드포인트
| 속성 | 기본값 | 설명 |
|---|---|---|
spring.auth.internal.login-uri | /api/login | 내부 JWT 로그인 엔드포인트입니다. |
spring.auth.internal.logout-uri | /logout | 내부 로그아웃 엔드포인트입니다. |
spring.auth.internal.refresh-uri | /api/refresh | 내부 리프레시 엔드포인트입니다. |
OAuth2 / Authorization Server 설정
| 속성 | 기본값 | 설명 |
|---|---|---|
spring.auth.oauth2.client-id | default-client | OAuth2 client identifier입니다. |
spring.auth.oauth2.client-secret | 173f8245-5f7d-4623-a612-aa0c68f6da4a | OAuth2TokenSettings가 선언하는 기본 client secret입니다. 실제 배포에서는 반드시 override해야 합니다. |
spring.auth.oauth2.issuer-uri | http://localhost:9000 | Issuer base URI입니다. |
spring.auth.oauth2.token-endpoint | /oauth2/token | 토큰 엔드포인트 경로입니다. |
spring.auth.oauth2.scope | read | 기본 요청 scope입니다. |
spring.auth.oauth2.redirect-uri | http://localhost:8080 | 인증 후 redirect URI입니다. |
spring.auth.oauth2.authorized-uri | null | 선택적인 post-authorization redirect override입니다. |
spring.auth.oauth2.jwk-key-store-path | null | JWK keystore 경로입니다. |
spring.auth.oauth2.jwk-key-store-password | null | Keystore 비밀번호입니다. |
spring.auth.oauth2.jwk-key-alias | null | Keystore 내부 키 alias입니다. |
spring.auth.oauth2.jwk-key-password | null | 키별 비밀번호 override입니다. |
spring:
auth:
oauth2:
client-id: my-client-app
client-secret: ${OAUTH2_CLIENT_SECRET}
issuer-uri: https://auth.example.com
token-endpoint: /oauth2/token
scope: read
redirect-uri: https://app.example.com/callback
authorized-uri: https://app.example.com/dashboard
jwk-key-store-path: /etc/contexa/keys/jwk-keystore.p12
jwk-key-store-password: ${JWK_STORE_PASSWORD}
jwk-key-alias: contexa-signing-key
jwk-key-password: ${JWK_KEY_PASSWORD}
MFA 설정
MfaSettings는 spring.auth.mfa 아래에 중첩되며, MFA 세션 저장소, 팩터별 URL, 타임아웃, 모니터링 플래그, state-machine 연동 타이밍을 함께 제어합니다.
MFA 타임아웃과 기본 동작
아래 설정은 MfaSettings와 이를 사용하는 state-machine/MFA request 처리 코드가 함께 소비합니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
spring.auth.mfa.session-timeout-ms | long | 600000 | 전체 MFA 세션 타임아웃입니다. |
spring.auth.mfa.challenge-timeout-ms | long | 300000 | 개별 챌린지 타임아웃입니다. |
spring.auth.mfa.inactivity-timeout | long | 900000 | MFA 상태 idle timeout입니다. |
spring.auth.mfa.cache-ttl | long | 300000 | MFA 런타임 캐시 TTL입니다. |
spring.auth.mfa.session-refresh-interval-ms | long | 30000 | 활성 MFA 세션 refresh 주기입니다. |
spring.auth.mfa.state-machine-timeout-ms | long | 10000 | state-machine 연동 MFA 핸들러의 timeout budget입니다. |
spring.auth.mfa.max-retry-attempts | int | 5 | 잠금 로직이 적용되기 전까지 허용되는 최대 검증 재시도 횟수입니다. |
spring.auth.mfa.account-lockout-duration-ms | long | 900000 | 재시도 초과 후 MFA 잠금 지속 시간입니다. |
spring.auth.mfa.minimum-delay-ms | long | 500 | 응답 시간 편차를 줄이기 위한 최소 지연값입니다. |
spring.auth.mfa.device-remember-duration-ms | long | 2592000000 | 기기 기억 기간입니다. |
spring.auth.mfa.otp-token-validity-seconds | int | 300 | OTP 유효 기간입니다. |
spring.auth.mfa.otp-token-length | int | 6 | OTP 코드 길이입니다. |
spring.auth.mfa.sms-resend-interval-seconds | int | 60 | SMS 재전송 throttle입니다. |
spring.auth.mfa.email-resend-interval-seconds | int | 120 | 이메일 재전송 throttle입니다. |
spring.auth.mfa.state-machine-pool-size | int | 100 | MfaSettings가 유지하는 legacy state-machine pool size 설정입니다. |
spring.auth.mfa.state-machine-cache-ttl-ms | long | 300000 | MfaSettings가 유지하는 legacy state-machine cache TTL 설정입니다. |
spring.auth.mfa.circuit-breaker-failure-threshold | int | 5 | MFA circuit breaker open 전 실패 임계값입니다. |
spring.auth.mfa.circuit-breaker-timeout-seconds | int | 30 | MFA circuit breaker open-state timeout입니다. |
spring.auth.mfa.detailed-logging-enabled | boolean | false | 상세 MFA 진단 로그를 활성화합니다. |
spring.auth.mfa.metrics-enabled | boolean | true | MFA 메트릭 수집을 활성화합니다. |
spring.auth.mfa.audit-logging-enabled | boolean | true | MFA 감사 로그를 활성화합니다. |
spring.auth.mfa.session-storage-type | String | http-session | 기본 MFA 세션 저장소 라벨입니다. |
spring.auth.mfa.auto-select-repository | boolean | false | 저장소 자동 선택을 활성화합니다. |
spring.auth.mfa.repository-priority | String | redis,memory,http-session | 저장소 우선순위 문자열입니다. |
spring.auth.mfa.fallback-repository-type | String | http-session | fallback 저장소 라벨입니다. |
MFA 저장소 설정
| 속성 | 기본값 | 설명 |
|---|---|---|
spring.auth.mfa.http-session.enabled | true | HTTP-session 기반 MFA 저장소를 활성화합니다. |
spring.auth.mfa.http-session.create-session-if-not-exists | true | 필요 시 HTTP 세션을 생성합니다. |
spring.auth.mfa.http-session.session-attribute-name | MFA_SESSION_ID | MFA 세션 식별자를 저장하는 attribute 이름입니다. |
spring.auth.mfa.redis.enabled | true | Redis 기반 MFA 저장소를 활성화합니다. |
spring.auth.mfa.redis.key-prefix | mfa:session: | Redis key prefix입니다. |
spring.auth.mfa.redis.cookie-name | MFA_SID | Redis 기반 MFA 세션 식별자를 담는 cookie 이름입니다. |
spring.auth.mfa.redis.secure-cookie | true | MFA 세션 cookie를 secure로 표시합니다. |
spring.auth.mfa.redis.http-only-cookie | true | MFA 세션 cookie를 HTTP-only로 표시합니다. |
spring.auth.mfa.redis.same-site | Strict | SameSite cookie 속성입니다. |
spring.auth.mfa.redis.connection-timeout | 3000 | Redis connection timeout입니다. |
spring.auth.mfa.redis.max-retries | 3 | Redis retry limit입니다. |
spring.auth.mfa.memory.enabled | true | 메모리 기반 MFA 저장소를 활성화합니다. |
spring.auth.mfa.memory.cleanup-interval-minutes | 5 | 메모리 MFA 세션 정리 주기입니다. |
spring.auth.mfa.memory.max-sessions | 10000 | 메모리 MFA 세션 최대 개수입니다. |
spring.auth.mfa.memory.enable-metrics | true | 메모리 저장소 메트릭을 활성화합니다. |
MFA 팩터 설정
| 속성 | 기본값 | 설명 |
|---|---|---|
spring.auth.mfa.sms-factor.provider | default | SMS provider 식별자입니다. |
spring.auth.mfa.sms-factor.template-id | mfa_sms_template | SMS template 식별자입니다. |
spring.auth.mfa.sms-factor.max-daily-attempts | 10 | 일일 SMS 전송 상한입니다. |
spring.auth.mfa.sms-factor.enabled | true | SMS MFA 팩터를 활성화합니다. |
spring.auth.mfa.email-factor.from-address | noreply@company.com | 이메일 OTP 발신 주소입니다. |
spring.auth.mfa.email-factor.template-id | mfa_email_template | 이메일 template 식별자입니다. |
spring.auth.mfa.email-factor.max-daily-attempts | 5 | 일일 이메일 전송 상한입니다. |
spring.auth.mfa.email-factor.enabled | true | 이메일 MFA 팩터를 활성화합니다. |
spring:
auth:
mfa:
session-timeout-ms: 600000
challenge-timeout-ms: 300000
max-retry-attempts: 5
repository-priority: redis,memory,http-session
redis:
enabled: true
key-prefix: mfa:session:
cookie-name: MFA_SID
memory:
enabled: true
max-sessions: 10000
sms-factor:
enabled: true
provider: default
email-factor:
enabled: true
from-address: noreply@company.com
상태 머신 속성
StateMachineProperties는 contexa.identity.statemachine에 바인딩됩니다. Identity 모듈과 관련 필터/핸들러가 사용하는 MFA 상태 머신 런타임을 제어합니다.
핵심 상태 머신 설정
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.identity.statemachine.enabled | boolean | true | MFA 상태 머신 런타임 전체를 켜고 끄는 master switch입니다. |
contexa.identity.statemachine.operation-timeout-seconds | int | 10 | 상태 머신 연산 timeout budget입니다. |
contexa.identity.statemachine.circuit-breaker.failure-threshold | int | 5 | circuit breaker open 전 실패 임계값입니다. |
contexa.identity.statemachine.circuit-breaker.timeout-seconds | int | 30 | circuit breaker open-state timeout입니다. |
contexa.identity.statemachine.circuit-breaker.half-open-requests | int | 3 | half-open 상태에서 허용되는 요청 수입니다. |
풀, 영속화, 캐시, 이벤트
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.identity.statemachine.pool.core-size | 10 | 상태 머신 executor core size입니다. |
contexa.identity.statemachine.pool.max-size | 50 | 상태 머신 executor max size입니다. |
contexa.identity.statemachine.pool.keep-alive-time | 10 | 풀 worker keep-alive 시간입니다. |
contexa.identity.statemachine.pool.expansion-threshold | 0.8 | worker 확장 임계값입니다. |
contexa.identity.statemachine.pool.shrink-threshold | 0.2 | worker 축소 임계값입니다. |
contexa.identity.statemachine.persistence.type | memory | 영속화 backend label입니다. |
contexa.identity.statemachine.persistence.enable-fallback | true | fallback 영속화를 활성화합니다. |
contexa.identity.statemachine.persistence.ttl-minutes | 30 | 영속화 TTL(분)입니다. |
contexa.identity.statemachine.persistence.enable-compression | true | 영속화 payload 압축을 활성화합니다. |
contexa.identity.statemachine.persistence.compression-threshold | 1024 | 압축 임계값(바이트)입니다. |
contexa.identity.statemachine.cache.max-size | 1000 | 상태 머신 snapshot용 메모리 캐시 크기입니다. |
contexa.identity.statemachine.cache.ttl-minutes | 5 | 캐시 TTL(분)입니다. |
contexa.identity.statemachine.cache.enable-warmup | false | 시작 시 캐시 warmup을 활성화합니다. |
contexa.identity.statemachine.events.enabled | true | 상태 머신 이벤트 발행을 활성화합니다. |
contexa.identity.statemachine.events.type | local | 이벤트 전송 타입입니다. |
contexa.identity.statemachine.events.batch-size | 100 | 이벤트 배치 크기입니다. |
contexa.identity.statemachine.events.batch-interval-ms | 100 | 이벤트 배치 간격입니다. |
contexa.identity.statemachine.events.backpressure-threshold | 1000 | 백프레셔 임계값입니다. |
MFA, Redis, Distributed Lock
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.identity.statemachine.mfa.enable-metrics | true | 상태 머신 MFA 메트릭을 활성화합니다. |
contexa.identity.statemachine.mfa.max-retries | 3 | 상태 머신이 사용하는 재시도 상한입니다. |
contexa.identity.statemachine.mfa.session-timeout-minutes | 30 | 세션 timeout(분)입니다. |
contexa.identity.statemachine.mfa.max-concurrent-sessions | 1000 | 동시 상태 머신 세션 상한입니다. |
contexa.identity.statemachine.mfa.transition-timeout-seconds | 30 | 상태 전이별 timeout입니다. |
contexa.identity.statemachine.redis.enabled | false | Redis 기반 상태 머신 저장소를 활성화합니다. |
contexa.identity.statemachine.redis.ttl-minutes | 30 | Redis TTL(분)입니다. |
contexa.identity.statemachine.redis.key-prefix | mfa:statemachine: | 상태 머신 엔트리용 Redis key prefix입니다. |
contexa.identity.statemachine.redis.connection-timeout-ms | 2000 | Redis connection timeout입니다. |
contexa.identity.statemachine.redis.command-timeout-ms | 1000 | Redis command timeout입니다. |
contexa.identity.statemachine.distributed-lock.enabled | true | 상태 전이 주변의 distributed lock을 활성화합니다. |
contexa.identity.statemachine.distributed-lock.timeout-seconds | 10 | distributed lock timeout입니다. |
contexa.identity.statemachine.distributed-lock.max-retry-attempts | 3 | lock 획득 재시도 상한입니다. |
contexa.identity.statemachine.distributed-lock.retry-interval-ms | 100 | lock 획득 재시도 간격입니다. |
contexa.identity.statemachine.distributed-lock.enable-deadlock-detection | true | distributed lock deadlock detection을 활성화합니다. |
contexa:
identity:
statemachine:
enabled: true
operation-timeout-seconds: 10
pool:
core-size: 10
max-size: 50
persistence:
type: memory
ttl-minutes: 30
events:
enabled: true
type: local
mfa:
max-retries: 3
session-timeout-minutes: 30
distributed-lock:
enabled: true
timeout-seconds: 10
관련 런타임 문서: Identity DSL, Authentication, Adaptive MFA, State Management.
Bridge 속성
BridgeProperties는 contexa.bridge에 바인딩됩니다. 외부(레거시) 인증 시스템과 Contexa 사이의 사용자/권한/위임/세션 정보를 양방향으로 매핑하는 브리지 계층을 제어합니다. SecurityContext 추출 키, 세션 attribute 후보, request attribute 키, HTTP 헤더 이름, 동기화 정책, 신뢰 프록시 목록을 정의합니다.
Bridge 핵심 토글
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.enabled | boolean | true | Bridge 계층 전체를 켜고 끄는 master switch입니다. |
contexa.bridge.populate-security-context | boolean | true | 외부 principal 정보를 Spring SecurityContext 로 채울지 여부입니다. |
동기화 (Sync)
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.sync.enabled | boolean | true | 외부 사용자 정보의 주기적 동기화를 활성화합니다. |
contexa.bridge.sync.min-refresh-interval-seconds | long | 60 | 동일 principal 에 대한 동기화 호출 최소 간격(초)입니다. throttle 역할. |
contexa.bridge.sync.synthetic-email-domain | String | shadow.contexa.local | 외부에서 이메일이 제공되지 않을 때 합성 이메일을 만들기 위한 도메인 suffix 입니다. |
신뢰 프록시 (Network)
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.network.trusted-proxy-validation-enabled | boolean | true | X-Forwarded-* 헤더를 신뢰하기 전에 reverse proxy 출처 검증을 수행할지 여부입니다. |
contexa.bridge.network.trusted-proxies | List<String> | [] (빈 목록) | 신뢰하는 reverse proxy IP 또는 CIDR 목록입니다. 비어 있으면 검증이 활성화되어도 헤더는 신뢰되지 않습니다. |
Authentication SecurityContext 키
contexa.bridge.authentication.security-context 아래의 속성으로, Authentication.SecurityContext 에 바인딩됩니다. 외부 인증 토큰의 claim/attribute 에서 표시 이름·principal 타입·인증 방식·assurance·MFA 상태·인증 시각·기타 추가 attribute 를 추출할 때 시도하는 키 목록을 정의합니다. 첫 번째 매칭 키의 값이 사용됩니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.authentication.security-context.enabled | boolean | true | SecurityContext 추출 동작을 활성화합니다. |
contexa.bridge.authentication.security-context.display-name-keys | List<String> | [displayName, name, fullName, userName, username, preferred_username] | 표시 이름 추출 시 시도하는 키 목록입니다. |
contexa.bridge.authentication.security-context.principal-type-keys | List<String> | [principalType, userType, actorType, token_use] | principal 타입(user / service / agent 등) 추출 키 목록입니다. |
contexa.bridge.authentication.security-context.authentication-type-keys | List<String> | [authenticationType, authMethod, loginMethod, method, factorType] | 인증 방식 추출 키 목록입니다. |
contexa.bridge.authentication.security-context.authentication-assurance-keys | List<String> | [authenticationAssurance, authLevel, loa, acr] | 인증 assurance 레벨(LoA/ACR) 추출 키 목록입니다. |
contexa.bridge.authentication.security-context.mfa-keys | List<String> | [mfa, mfaVerified, mfaCompleted, secondFactorVerified, amr] | MFA 완료 여부 추출 키 목록입니다. |
contexa.bridge.authentication.security-context.auth-time-keys | List<String> | [authenticationTime, authenticatedAt, loginTime, issuedAt, auth_time, iat] | 인증 시각 추출 키 목록입니다. |
contexa.bridge.authentication.security-context.attribute-keys | List<String> | [organizationId, orgId, tenantId, department, team, email, loginIp, authenticationType, authenticationAssurance, mfaVerified, mfaCompleted, authenticatedAt, loginTime, iss, aud, azp, scope, scp, amr, acr] | SecurityContext 에 보존할 추가 attribute 키 목록입니다 (20개 기본). |
Authentication Session 키
contexa.bridge.authentication.session 아래의 속성으로, 공통 Bridge.Session 에 바인딩됩니다. 외부 시스템이 HTTP 세션의 attribute 로 인증된 사용자 객체를 보관할 때, Contexa 가 어떤 attribute 이름을 시도하고, 그 객체에서 어떤 키로 principal id, 표시 이름, 권한, 인증 방식, MFA 상태, 인증 시각, 추가 attribute 를 추출할지 정의합니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.authentication.session.enabled | boolean | true | HTTP 세션 기반 사용자 추출을 활성화합니다. |
contexa.bridge.authentication.session.attribute | String | "" (빈 문자열) | 사용자 객체가 들어 있는 세션 attribute 이름을 명시적으로 지정합니다. 비어 있고 auto-discover 가 true 면 후보 목록을 순회합니다. |
contexa.bridge.authentication.session.attribute-candidates | List<String> | [currentUser, authenticatedUser, sessionUser, userSession, principal, user, securityUser, authenticatedPrincipal] | auto-discover 모드에서 시도하는 세션 attribute 후보 이름 목록입니다. |
contexa.bridge.authentication.session.auto-discover | boolean | true | attribute 후보 목록을 자동 탐색할지 여부입니다. |
contexa.bridge.authentication.session.object-type-name | String | "" (빈 문자열) | 발견된 객체가 특정 클래스 이름과 일치해야 하는 경우 그 fully-qualified 이름을 지정합니다 (선택). |
contexa.bridge.authentication.session.principal-id-keys | List<String> | [userId, username, id, loginId, email] | 세션 객체에서 principal 식별자를 읽을 때 시도하는 키 목록입니다. |
contexa.bridge.authentication.session.display-name-keys | List<String> | [displayName, name, fullName, userName, preferred_username] | 표시 이름 추출 키 목록입니다. |
contexa.bridge.authentication.session.authorities-keys | List<String> | [roles, authorities, permissions, scopes] | 권한·역할·스코프 추출 키 목록입니다. |
contexa.bridge.authentication.session.authentication-type-keys | List<String> | [authenticationType, authMethod, loginMethod] | 인증 방식 추출 키 목록입니다. |
contexa.bridge.authentication.session.authentication-assurance-keys | List<String> | [authenticationAssurance, authLevel, loa] | 인증 assurance 레벨 추출 키 목록입니다. |
contexa.bridge.authentication.session.mfa-keys | List<String> | [mfa, mfaVerified, mfa_verified] | MFA 완료 여부 추출 키 목록입니다. |
contexa.bridge.authentication.session.auth-time-keys | List<String> | [authenticationTime, authenticatedAt, loginTime] | 인증 시각 추출 키 목록입니다. |
contexa.bridge.authentication.session.attribute-keys | List<String> | [department, organizationId, orgId, authMethod, loginIp, loginTime] | SecurityContext 에 보존할 추가 attribute 키 목록입니다. |
Authentication RequestAttributes 키
contexa.bridge.authentication.request-attributes 아래의 속성으로, 공통 Bridge.RequestAttributes 에 바인딩됩니다. 외부 필터가 사용자 객체를 HttpServletRequest attribute 로 보관할 때 어떤 attribute 후보를 시도할지, 그 객체에서 어떤 키로 정보를 읽을지, Contexa 가 다시 request attribute 로 노출할 때 어떤 평면 key 이름을 쓸지를 정의합니다.
탐색 / 추출 (공통 13)
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.authentication.request-attributes.enabled | boolean | true | request-attribute 기반 사용자 추출을 활성화합니다. |
contexa.bridge.authentication.request-attributes.attribute | String | "" (빈 문자열) | 사용자 객체가 들어 있는 request attribute 이름을 명시적으로 지정합니다. |
contexa.bridge.authentication.request-attributes.attribute-candidates | List<String> | [currentUser, authenticatedUser, requestUser, principal, user, authenticatedPrincipal, authUser] | auto-discover 모드에서 시도하는 request attribute 후보 이름 목록입니다. |
contexa.bridge.authentication.request-attributes.auto-discover | boolean | true | attribute 후보 목록을 자동 탐색할지 여부입니다. |
contexa.bridge.authentication.request-attributes.object-type-name | String | "" (빈 문자열) | 발견된 객체가 일치해야 하는 fully-qualified 클래스 이름(선택)입니다. |
contexa.bridge.authentication.request-attributes.principal-id-keys | List<String> | [userId, username, id, loginId, email] | principal 식별자 추출 키 목록입니다. |
contexa.bridge.authentication.request-attributes.display-name-keys | List<String> | [displayName, name, fullName, userName, preferred_username] | 표시 이름 추출 키 목록입니다. |
contexa.bridge.authentication.request-attributes.authorities-keys | List<String> | [roles, authorities, permissions, scopes] | 권한·역할·스코프 추출 키 목록입니다. |
contexa.bridge.authentication.request-attributes.authentication-type-keys | List<String> | [authenticationType, authMethod, loginMethod] | 인증 방식 추출 키 목록입니다. |
contexa.bridge.authentication.request-attributes.authentication-assurance-keys | List<String> | [authenticationAssurance, authLevel, loa] | 인증 assurance 레벨 추출 키 목록입니다. |
contexa.bridge.authentication.request-attributes.mfa-keys | List<String> | [mfa, mfaVerified, mfa_verified] | MFA 완료 여부 추출 키 목록입니다. |
contexa.bridge.authentication.request-attributes.auth-time-keys | List<String> | [authenticationTime, authenticatedAt, loginTime] | 인증 시각 추출 키 목록입니다. |
contexa.bridge.authentication.request-attributes.attribute-keys | List<String> | [department, organizationId, orgId, authMethod, loginIp, loginTime] | SecurityContext 에 보존할 추가 attribute 키 목록입니다. |
평면 인증 attribute 키 (flat-*, 8)
Contexa 가 request attribute 로 다시 평탄화해서 노출할 때 사용하는 단일 키 이름입니다. 다운스트림 컴포넌트가 이 키로 직접 읽을 수 있습니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.bridge.authentication.request-attributes.flat-principal-id | ctxa.auth.principalId | principal 식별자. |
contexa.bridge.authentication.request-attributes.flat-display-name | ctxa.auth.displayName | 표시 이름. |
contexa.bridge.authentication.request-attributes.flat-authenticated | ctxa.auth.authenticated | 인증 여부 boolean. |
contexa.bridge.authentication.request-attributes.flat-authorities | ctxa.auth.authorities | 권한 목록. |
contexa.bridge.authentication.request-attributes.flat-authentication-type | ctxa.auth.type | 인증 방식. |
contexa.bridge.authentication.request-attributes.flat-authentication-assurance | ctxa.auth.assurance | 인증 assurance 레벨. |
contexa.bridge.authentication.request-attributes.flat-mfa-completed | ctxa.auth.mfaCompleted | MFA 완료 여부. |
contexa.bridge.authentication.request-attributes.flat-authentication-time | ctxa.auth.time | 인증 시각. |
Authorization 매핑 키 (7)
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.bridge.authentication.request-attributes.authorization-effect | ctxa.authz.effect | 인가 결정 effect (ALLOW/DENY). |
contexa.bridge.authentication.request-attributes.privileged | ctxa.authz.privileged | 특권 흐름 여부. |
contexa.bridge.authentication.request-attributes.policy-id | ctxa.authz.policyId | 적용된 정책 ID. |
contexa.bridge.authentication.request-attributes.policy-version | ctxa.authz.policyVersion | 정책 버전. |
contexa.bridge.authentication.request-attributes.scope-tags | ctxa.authz.scopeTags | 스코프 태그. |
contexa.bridge.authentication.request-attributes.effective-roles | ctxa.authz.roles | 유효 역할 집합. |
contexa.bridge.authentication.request-attributes.effective-authorities | ctxa.authz.authorities | 유효 권한 집합. |
Delegation 매핑 키 (11)
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.bridge.authentication.request-attributes.delegated | ctxa.delegation.enabled | 위임 활성 여부. |
contexa.bridge.authentication.request-attributes.agent-id | ctxa.delegation.agentId | 위임받은 agent ID. |
contexa.bridge.authentication.request-attributes.objective-id | ctxa.delegation.objectiveId | 위임 objective ID. |
contexa.bridge.authentication.request-attributes.objective-family | ctxa.delegation.objectiveFamily | objective 계열/타입. |
contexa.bridge.authentication.request-attributes.objective-summary | ctxa.delegation.objectiveSummary | objective 요약. |
contexa.bridge.authentication.request-attributes.allowed-operations | ctxa.delegation.allowedOperations | 허용 operation 목록. |
contexa.bridge.authentication.request-attributes.allowed-resources | ctxa.delegation.allowedResources | 허용 resource 목록. |
contexa.bridge.authentication.request-attributes.approval-required | ctxa.delegation.approvalRequired | 승인 필요 여부. |
contexa.bridge.authentication.request-attributes.privileged-export-allowed | ctxa.delegation.privilegedExportAllowed | 특권 export 허용 여부. |
contexa.bridge.authentication.request-attributes.containment-only | ctxa.delegation.containmentOnly | containment-only 제한 여부. |
contexa.bridge.authentication.request-attributes.expires-at | ctxa.delegation.expiresAt | 위임 만료 시각. |
Authentication HTTP 헤더 이름
contexa.bridge.authentication.headers 아래의 속성으로, 공통 Bridge.Headers 에 바인딩됩니다. 외부 reverse proxy 또는 게이트웨이가 인증·인가·위임 정보를 HTTP 헤더로 전달할 때 Contexa 가 어떤 헤더 이름을 읽거나 발행할지 정의합니다. 모든 헤더 이름은 변경 가능합니다.
토글
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.authentication.headers.enabled | boolean | true | HTTP 헤더 기반 추출/발행을 활성화합니다. |
인증 헤더 (8)
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.bridge.authentication.headers.principal-id | X-Contexa-Principal-Id | principal 식별자 헤더. |
contexa.bridge.authentication.headers.display-name | X-Contexa-Principal-Name | 표시 이름 헤더. |
contexa.bridge.authentication.headers.authenticated | X-Contexa-Authenticated | 인증 완료 boolean 헤더. |
contexa.bridge.authentication.headers.authorities | X-Contexa-Authorities | 권한 목록 헤더. |
contexa.bridge.authentication.headers.authentication-type | X-Contexa-Authentication-Type | 인증 방식 헤더. |
contexa.bridge.authentication.headers.authentication-assurance | X-Contexa-Authentication-Assurance | 인증 assurance 레벨 헤더. |
contexa.bridge.authentication.headers.mfa-completed | X-Contexa-Mfa-Completed | MFA 완료 여부 헤더. |
contexa.bridge.authentication.headers.authentication-time | X-Contexa-Authenticated-At | 인증 시각 헤더. |
Authorization 헤더 (7)
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.bridge.authentication.headers.authorization-effect | X-Contexa-Authz-Effect | 인가 결정 effect 헤더. |
contexa.bridge.authentication.headers.privileged | X-Contexa-Authz-Privileged | 특권 흐름 boolean 헤더. |
contexa.bridge.authentication.headers.policy-id | X-Contexa-Authz-Policy | 적용된 정책 ID 헤더. |
contexa.bridge.authentication.headers.policy-version | X-Contexa-Authz-Policy-Version | 정책 버전 헤더. |
contexa.bridge.authentication.headers.scope-tags | X-Contexa-Authz-Scope | 스코프 태그 헤더. |
contexa.bridge.authentication.headers.effective-roles | X-Contexa-Authz-Roles | 유효 역할 집합 헤더. |
contexa.bridge.authentication.headers.effective-authorities | X-Contexa-Authz-Authorities | 유효 권한 집합 헤더. |
Delegation 헤더 (11)
| 속성 | 기본값 | 설명 |
|---|---|---|
contexa.bridge.authentication.headers.delegated | X-Contexa-Delegated | 위임 활성 여부 헤더. |
contexa.bridge.authentication.headers.agent-id | X-Contexa-Agent-Id | 위임받은 agent ID 헤더. |
contexa.bridge.authentication.headers.objective-id | X-Contexa-Objective-Id | 위임 objective ID 헤더. |
contexa.bridge.authentication.headers.objective-family | X-Contexa-Objective-Family | objective 계열/타입 헤더. |
contexa.bridge.authentication.headers.objective-summary | X-Contexa-Objective-Summary | objective 요약 헤더. |
contexa.bridge.authentication.headers.allowed-operations | X-Contexa-Allowed-Operations | 허용 operation 헤더. |
contexa.bridge.authentication.headers.allowed-resources | X-Contexa-Allowed-Resources | 허용 resource 헤더. |
contexa.bridge.authentication.headers.approval-required | X-Contexa-Approval-Required | 승인 필요 여부 헤더. |
contexa.bridge.authentication.headers.privileged-export-allowed | X-Contexa-Privileged-Export-Allowed | 특권 export 허용 여부 헤더. |
contexa.bridge.authentication.headers.containment-only | X-Contexa-Containment-Only | containment-only 제한 헤더. |
contexa.bridge.authentication.headers.expires-at | X-Contexa-Delegation-Expires-At | 위임 만료 시각 헤더. |
Authorization SecurityContext 키
contexa.bridge.authorization.security-context 아래의 속성으로, Authorization.SecurityContext 에 바인딩됩니다. 외부 시스템이 Spring SecurityContext 의 Authentication 객체에 인가 결정 결과(effect, 정책 ID, 권한 등)를 attribute 로 보관할 때, Contexa 가 어떤 키를 시도해서 그 정보를 읽을지 정의합니다. 첫 번째 매칭 키의 값이 사용됩니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.authorization.security-context.enabled | boolean | true | SecurityContext 기반 인가 정보 추출을 활성화합니다. |
contexa.bridge.authorization.security-context.authorization-effect-keys | List<String> | [authorizationEffect, effect, decision, decisionEffect] | 인가 결정 effect (ALLOW/DENY) 추출 키 목록입니다. |
contexa.bridge.authorization.security-context.privileged-keys | List<String> | [privileged, isPrivileged, privilegedFlow] | 특권 흐름 boolean 추출 키 목록입니다. |
contexa.bridge.authorization.security-context.policy-id-keys | List<String> | [policyId, policy, decisionPolicy] | 적용된 정책 ID 추출 키 목록입니다. |
contexa.bridge.authorization.security-context.policy-version-keys | List<String> | [policyVersion, version] | 정책 버전 추출 키 목록입니다. |
contexa.bridge.authorization.security-context.scope-tag-keys | List<String> | [scopeTags, scopes, scope, permissionScopes, scp] | 스코프 태그 추출 키 목록입니다. |
contexa.bridge.authorization.security-context.role-keys | List<String> | [effectiveRoles, roles, roleSet, groups] | 유효 역할 집합 추출 키 목록입니다. |
contexa.bridge.authorization.security-context.authority-keys | List<String> | [effectiveAuthorities, authorities, permissions, grantedAuthorities, scope, scp] | 유효 권한 집합 추출 키 목록입니다. |
contexa.bridge.authorization.security-context.attribute-keys | List<String> | [authorizationEffect, effect, privileged, policyId, policyVersion, scopeTags, scopes, scope, scp, roles, effectiveRoles, permissions, effectiveAuthorities] | 인가 컨텍스트로 보존할 추가 attribute 키 목록입니다 (13개 기본). |
Authorization Session 키
contexa.bridge.authorization.session 아래의 속성으로, Authorization.Session 에 바인딩됩니다. 외부 시스템이 HTTP 세션 attribute 의 사용자 객체에 인가 결정 정보를 담아 둘 때 어떤 attribute 후보를 시도하고, 그 객체에서 어떤 키로 effect/정책/스코프/역할/권한을 추출할지 정의합니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.authorization.session.enabled | boolean | true | 세션 기반 인가 정보 추출을 활성화합니다. |
contexa.bridge.authorization.session.attribute | String | "" (빈 문자열) | 사용자 객체가 들어 있는 세션 attribute 이름. |
contexa.bridge.authorization.session.attribute-candidates | List<String> | [currentUser, authenticatedUser, sessionUser, userSession, principal, user, securityUser, authenticatedPrincipal] | auto-discover 모드에서 시도하는 세션 attribute 후보. |
contexa.bridge.authorization.session.auto-discover | boolean | true | attribute 후보 자동 탐색 여부. |
contexa.bridge.authorization.session.object-type-name | String | "" (빈 문자열) | 발견된 객체가 일치해야 하는 클래스 이름(선택). |
contexa.bridge.authorization.session.principal-id-keys | List<String> | [userId, username, id, loginId, email] | principal 식별자 추출 키. |
contexa.bridge.authorization.session.authorization-effect-keys | List<String> | [authorizationEffect, effect, decision, decisionEffect] | 인가 effect 추출 키. |
contexa.bridge.authorization.session.privileged-keys | List<String> | [privileged, isPrivileged, privilegedFlow] | 특권 흐름 추출 키. |
contexa.bridge.authorization.session.policy-id-keys | List<String> | [policyId, policy, decisionPolicy] | 정책 ID 추출 키. |
contexa.bridge.authorization.session.policy-version-keys | List<String> | [policyVersion, version] | 정책 버전 추출 키. |
contexa.bridge.authorization.session.scope-tag-keys | List<String> | [scopeTags, scopes, scope, permissionScopes] | 스코프 태그 추출 키 (Authorization.SecurityContext 와 달리 scp 미포함). |
contexa.bridge.authorization.session.role-keys | List<String> | [effectiveRoles, roles, roleSet] | 유효 역할 집합 추출 키 (groups 미포함). |
contexa.bridge.authorization.session.authority-keys | List<String> | [effectiveAuthorities, authorities, permissions, grantedAuthorities] | 유효 권한 집합 추출 키 (scope, scp 미포함). |
contexa.bridge.authorization.session.attribute-keys | List<String> | [authorizationEffect, effect, privileged, policyId, policyVersion, scopeTags, scopes, roles, effectiveRoles, permissions, effectiveAuthorities, organizationId, orgId, tenantId, department, team] | 인가 컨텍스트로 보존할 추가 attribute 키 (16개 기본). |
Authorization RequestAttributes / Headers
Authorization 도 동일한 공통 Bridge.RequestAttributes / Bridge.Headers 클래스를 재사용합니다. 키 구조와 기본값은 위 Authentication RequestAttributes 키 · Authentication HTTP 헤더 이름 표와 100% 동일하며, prefix 만 다음과 같이 다릅니다:
contexa.bridge.authorization.request-attributes.*— 39 필드, 표 동일contexa.bridge.authorization.headers.*— 27 필드, 표 동일
같은 표를 다시 그리지 않고 prefix 만 안내하는 이유는 코드(BridgeProperties.java) 가 한 클래스를 3개 위치에서 참조하기 때문입니다 — 표 본문은 단일 진실의 출처를 유지합니다.
Delegation Session 키
contexa.bridge.delegation.session 아래의 속성으로, Delegation.Session 에 바인딩됩니다. 외부 시스템이 위임(agent delegation) 관련 정보 — agent ID, objective, 허용 operation/resource, 승인 필요, 만료 등 — 를 세션 attribute 의 사용자 객체에 담아둘 때 어떤 키를 시도할지 정의합니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
contexa.bridge.delegation.session.enabled | boolean | true | 세션 기반 위임 정보 추출을 활성화합니다. |
contexa.bridge.delegation.session.attribute | String | "" (빈 문자열) | 사용자 객체가 들어 있는 세션 attribute 이름. |
contexa.bridge.delegation.session.attribute-candidates | List<String> | [currentUser, authenticatedUser, sessionUser, userSession, principal, user, securityUser, authenticatedPrincipal] | auto-discover 모드에서 시도하는 세션 attribute 후보. |
contexa.bridge.delegation.session.auto-discover | boolean | true | attribute 후보 자동 탐색 여부. (※ Delegation.Session 은 object-type-name 필드를 갖지 않습니다.) |
contexa.bridge.delegation.session.principal-id-keys | List<String> | [userId, username, id, loginId, email] | principal 식별자 추출 키. |
contexa.bridge.delegation.session.delegated-keys | List<String> | [delegated, delegationEnabled, agentDelegated] | 위임 활성 여부 추출 키. |
contexa.bridge.delegation.session.agent-id-keys | List<String> | [agentId, delegateAgentId] | agent ID 추출 키. |
contexa.bridge.delegation.session.objective-id-keys | List<String> | [objectiveId, taskPurpose, delegationObjectiveId] | 위임 objective ID 추출 키. |
contexa.bridge.delegation.session.objective-family-keys | List<String> | [objectiveFamily, objectiveType, delegationObjectiveFamily] | objective 계열/타입 추출 키. |
contexa.bridge.delegation.session.objective-summary-keys | List<String> | [objectiveSummary, taskSummary, delegationObjectiveSummary] | objective 요약 추출 키. |
contexa.bridge.delegation.session.allowed-operations-keys | List<String> | [allowedOperations, delegatedOperations, permittedOperations] | 허용 operation 목록 추출 키. |
contexa.bridge.delegation.session.allowed-resources-keys | List<String> | [allowedResources, delegatedResources, permittedResources] | 허용 resource 목록 추출 키. |
contexa.bridge.delegation.session.approval-required-keys | List<String> | [approvalRequired, requiresApproval] | 승인 필요 여부 추출 키. |
contexa.bridge.delegation.session.privileged-export-allowed-keys | List<String> | [privilegedExportAllowed, allowPrivilegedExport] | 특권 export 허용 여부 추출 키. |
contexa.bridge.delegation.session.containment-only-keys | List<String> | [containmentOnly, restrictedContainment] | containment-only 제한 여부 추출 키. |
contexa.bridge.delegation.session.expires-at-keys | List<String> | [expiresAt, delegationExpiresAt] | 위임 만료 시각 추출 키. |
contexa.bridge.delegation.session.attribute-keys | List<String> | [delegated, agentId, objectiveId, objectiveFamily, objectiveSummary, allowedOperations, allowedResources, approvalRequired, privilegedExportAllowed, containmentOnly, expiresAt, organizationId, orgId, tenantId, department, team] | 위임 컨텍스트로 보존할 추가 attribute 키 (16개 기본). |
Delegation RequestAttributes / Headers
Delegation 도 동일한 공통 Bridge.RequestAttributes / Bridge.Headers 클래스를 재사용합니다. 키 구조와 기본값은 Authentication RequestAttributes 키 · Authentication HTTP 헤더 이름 표와 100% 동일하며, prefix 만 다음과 같이 다릅니다:
contexa.bridge.delegation.request-attributes.*— 39 필드, 표 동일contexa.bridge.delegation.headers.*— 27 필드, 표 동일