[feat](server): implement ent-based domain validation for handshake

- Added `entDomainValidator` implementation to validate `(domain, client_api_key)` combinations from the `Domain` table using `ent.Client`.
- Replaced dummy validator with the new ent-based validator in server initialization.
- Updated documentation and progress tracking for domain validation implementation.
- Ensured compatibility with `host` and `host:port` formats by normalizing domain strings during validation.
This commit is contained in:
dalbodeule
2025-12-02 23:40:07 +09:00
parent eb6e4a982d
commit 763daf5a56
3 changed files with 128 additions and 19 deletions

View File

@@ -721,16 +721,15 @@ func main() {
}
}()
// 6. 도메인 검증기 준비 (현재는 Dummy 구현, 추후 ent + PostgreSQL 기반으로 교체 예정)
baseValidator := dtls.DummyDomainValidator{
Logger: logger,
}
// 6. 도메인 검증기 준비 (ent + PostgreSQL 기반 실제 구현)
// Admin Plane 에서 관리하는 Domain 테이블을 사용해 (domain, client_api_key) 조합을 검증합니다.
domainValidator := admin.NewEntDomainValidator(logger, dbClient)
// DTLS 핸드셰이크 단계에서 HOP_SERVER_DOMAIN 으로 설정된 도메인만 허용하도록 래핑합니다.
allowedDomain = strings.ToLower(strings.TrimSpace(cfg.Domain))
var validator dtls.DomainValidator = &domainGateValidator{
allowed: allowedDomain,
inner: baseValidator,
inner: domainValidator,
logger: logger,
}