CoreIdent 0.4: .NET 10+를 위한 전면 재작성

발행: (2025년 12월 13일 오후 04:01 GMT+9)
7 min read
원문: Dev.to

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 AuthASP.NET Core 앱에 바로 끼워넣을 수 있는 인증
External ProvidersGoogle, Microsoft, GitHub 연동
Identity Server완전한 OAuth 2.0 / OIDC 기능 제공
Client LibrariesMAUI, 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 메트릭 통합

📚 문서

모든 기획·구현 문서는 레포지토리에서 확인할 수 있습니다:

🤝 참여하기

CoreIdent는 MIT 라이선스로 오픈 소스이며, 언제든 기여를 환영합니다. 관심이 있다면:

  • 레포지토리 확인 → repo
  • 현재 작업을 확인 → DEVPLAN
  • 통합 테스트를 실행해 코드베이스에 익숙해지기
  • 이슈나 PR 열기!

목표는 모두가 바라는, 열려 있고 모듈화된, 개발자 친화적인 아이덴티티 시스템을 만드는 것입니다.

이전 글

0.3.x 여정을 따라오셨다면:

읽어 주셔서 감사합니다. 함께 멋진 것을 만들어갑시다!

Back to Blog

관련 글

더 보기 »