CoreIdent 0.4: .NET 10+를 위한 전면 재작성
Source: Dev.to
CoreIdent 0.4: .NET 10+용 전면 재작성
안녕하세요 .NET 커뮤니티! CoreIdent과 관련된 큰 업데이트를 공유합니다: 버전 0.4는 완전 재작성이며, .NET 10 위에서 처음부터 구축되었습니다. 목표와 목적도 새롭게 정리했습니다.
0.3.x 릴리즈(Phase 2, Phase 3, ID 토큰 등)를 따라오셨다면 “왜 다시 시작하나요?” 라고 궁금하실 수 있습니다. 이유를 설명드리겠습니다.
🔄 왜 재작성했나요?
0.3.x 코드베이스를 통해 실제로 아이덴티티/인증 라이브러리에서 필요한 것이 무엇인지 많은 것을 배웠습니다. 동시에 몇 가지 근본적인 한계도 드러났습니다:
- 대칭키만 지원 – HS256은 데모용으로는 괜찮지만, 실제 서비스에서는 RS256/ES256과 적절한 JWKS 공개가 필요합니다.
- 비밀번호 우선 – 업계는 비밀번호 없는 방식을 향해 가고 있습니다; 우리는 따라가기보다 앞서야 합니다.
- .NET 9 제약 – .NET 10은 네이티브 패스키 지원, 향상된 메트릭, 인증 API 개선 등을 제공하므로 이를 활용하고 싶었습니다.
- 테스트 인프라 부채 – 테스트 설정이 점점 복잡해졌고, 처음부터 재사용 가능한 픽스처가 필요했습니다.
이러한 사항들을 0.3.x에 억지로 끼워넣기보다는, 올바른 기반 위에서 새로 구축하기로 했습니다.
레거시 참고: 0.3.x 코드베이스는 필요 시 legacy-0.3.x-main 태그에서 확인할 수 있습니다.
새로운 비전
CoreIdent 0.4는 전체적인 인증 툴킷을 목표로 합니다—단순 OAuth 서버가 아니라, 다음을 모두 포괄하는 하나의 솔루션입니다:
| 시나리오 | 설명 |
|---|---|
| Embedded Auth | ASP.NET Core 앱에 바로 끼워넣을 수 있는 인증 |
| External Providers | Google, Microsoft, GitHub 연동 |
| Identity Server | 완전한 OAuth 2.0 / OIDC 기능 제공 |
| Client Libraries | MAUI, WPF, Blazor, 콘솔 앱용 보안 인증 클라이언트 |
핵심 변화: 비밀번호 없는 인증 우선. 이메일 매직링크와 패스키가 주요 인증 방식이며, 비밀번호는 보조 수단으로 남깁니다.
현재 동작 중인 기능
CoreIdent 0.4는 이미 견고한 OAuth/OIDC 기반을 갖추고 있습니다.
토큰 엔드포인트 (/auth/token)
client_credentials그랜트refresh_token그랜트 (회전 + 도난 감지)authorization_code그랜트 (PKCE 필수)password그랜트 (폐기 예정; 경고 로그 출력)
인가 흐름
- 동의 UI가 포함된
/auth/authorize엔드포인트 - 사용자 권한 관리를 위한
/auth/consent - PKCE 완전 강제
표준 준수
- 토큰 폐기 (RFC 7009)
- 토큰 인트로스펙션 (RFC 7662)
- OIDC 디스커버리 (
/.well-known/openid-configuration) - JWKS 공개 (
/.well-known/jwks.json) – 공개 키만 제공
비대칭키 지원
프로덕션 수준의 RS256 및 ES256 서명:
builder.Services.AddSigningKey(o => o.UseRsa("/path/to/private-key.pem"));
// or
builder.Services.AddSigningKey(o => o.UseEcdsa("/path/to/ec-key.pem"));
플러그인형 영속성
- 기본은 인‑메모리 저장소 (개발/테스트에 최적)
- 프로덕션용 EF Core 구현:
builder.Services.AddDbContext(options =>
options.UseSqlite(connectionString));
builder.Services.AddEntityFrameworkCoreStores();
테스트 인프라
tests/ 아래 재사용 가능한 픽스처와 빌더:
CoreIdentTestFixture– 통합 테스트용- 클라이언트, 사용자, 스코프용 Fluent 빌더
- JWT 검증을 위한 어설션 확장
🚀 빠른 시작
다음은 약 10줄로 구현한 최소 OAuth 서버 예시입니다:
using CoreIdent.Core.Extensions;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCoreIdent(o =>
{
o.Issuer = "https://issuer.example";
o.Audience = "https://resource.example";
});
builder.Services.AddSigningKey(o => o.UseRsa("/path/to/private-key.pem"));
var app = builder.Build();
app.MapCoreIdentEndpoints();
app.Run();
위 코드는 다음을 제공합니다:
- 여러 그랜트를 지원하는 토큰 엔드포인트
- OIDC 디스커버리 + JWKS
- 동의 화면이 포함된 인가 코드 흐름
앞으로의 계획
로드맵은 CoreIdent를 진정한 “원스톱 샵”으로 만드는 데 초점을 맞추고 있습니다.
비밀번호 없는 인증
- 이메일 매직링크
- .NET 10의 네이티브 지원을 활용한 패스키
외부 제공자
- Google, Microsoft, GitHub
- 커뮤니티가 쉽게 추가할 수 있는 깔끔한 제공자 추상화
클라이언트 라이브러리
CoreIdent.Client – 모든 .NET 앱에서 사용 가능
- 플랫폼 별: MAUI (SecureStorage), WPF (DPAPI), Blazor WASM
개발자 경험
- 프로젝트 템플릿
- 개선된 오류 메시지
- OpenTelemetry 메트릭 통합
📚 문서
모든 기획·구현 문서는 레포지토리에서 확인할 수 있습니다:
- Developer Guide – 실전 사용법 시작점
- Project Overview – 비전 및 아키텍처
- Technical Plan – 사양 및 인터페이스
- DEVPLAN – 작업 수준 체크리스트
🤝 참여하기
CoreIdent는 MIT 라이선스로 오픈 소스이며, 언제든 기여를 환영합니다. 관심이 있다면:
목표는 모두가 바라는, 열려 있고 모듈화된, 개발자 친화적인 아이덴티티 시스템을 만드는 것입니다.
이전 글
0.3.x 여정을 따라오셨다면:
- CoreIdent v0.3.5: OIDC ID Tokens, Real‑World Gaps, and What’s Next
- Phase 3 Milestone: OAuth 2.0 Authorization Code Flow & Token Security Hardened
- Phase 2 Complete: Adding Persistence and Extensibility
읽어 주셔서 감사합니다. 함께 멋진 것을 만들어갑시다!