iconDreamine
← 목록

Dreamine.Identity

stablev1.0.0

Dreamine 애플리케이션을 위한 공통 인증 모듈입니다. OAuth 소셜 로그인, 로컬 로그인, 사용자 저장소, 인증 엔드포인트 구성을 제공합니다.

#identity#oauth#auth#cookie
TFM net8.0;net8.0-windows7.0Package Dreamine.Identity참조 Dreamine.Database.Abstractions, Dreamine.Database.Core, Dreamine.Database.Sqlite, Dreamine.Hybrid.Wpf

Dreamine.Identity

Dreamine 및 CodeMaru 웹 애플리케이션에서 공유하는 계정/인증 인프라 라이브러리입니다.

Dreamine.Identity는 이메일/비밀번호 계정, OAuth 로그인, SQLite 기반 사용자 저장소, 서브도메인 공유 인증 쿠키, 기본 로그인/계정 페이지를 제공합니다.

English documentation


목적

여러 Dreamine 또는 CodeMaru 서비스가 같은 로그인 상태를 공유해야 할 때 사용합니다.

대표적인 사용 대상:

  • codemaru.co.kr
  • wedding.codemaru.co.kr
  • thankyou.codemaru.co.kr
  • 같은 계정 DB를 공유해야 하는 향후 Dreamine 계열 서비스

이 패키지는 의도적으로 작게 유지합니다. 서비스별 소유권 규칙, 테넌트 데이터, 권한 정책, 도메인 기능은 각 애플리케이션에 둡니다.


주요 기능

  • 이메일/비밀번호 기반 회원가입 및 로그인
  • Google OAuth 로그인
  • Naver OAuth 로그인
  • Kakao OAuth 로그인
  • 서브도메인 간 인증 쿠키 공유
  • 여러 서버 프로세스가 같은 쿠키를 읽기 위한 DataProtection 키 공유
  • Dreamine Database 기반 SQLite 사용자 저장소
  • 기본 로그인, 회원가입, 계정, 로그아웃 페이지
  • WPF/Blazor 하이브리드 호스트 연동 헬퍼

주요 타입

  • AuthOptions
  • OAuthProviderOptions
  • AuthUser
  • IUserStore
  • SqliteUserStore
  • AnonymousAuthenticationStateProvider
  • DreamineIdentityExtensions

DreamineIdentityExtensions가 제공하는 주요 Claim 타입:

  • DreamineUserId
  • DreamineProvider

서비스 데이터와 로그인 계정을 연결할 때는 DreamineUserId를 안정적인 내부 사용자 키로 사용합니다.


패키지 경계

이 패키지가 담당하는 것:

  • 계정 생성
  • 비밀번호 검증 및 변경
  • OAuth 콜백 처리
  • 사용자 레코드 저장
  • 인증 쿠키 설정
  • 로그인/계정 HTML 엔드포인트

이 패키지가 담당하지 않는 것:

  • 서비스별 테넌트 레코드
  • 청첩장 소유권
  • 명함 랜딩 페이지 소유권
  • CCTV 스트림 권한
  • 결제, 역할, 관리자 정책

이런 규칙은 각 소비 애플리케이션에서 관리합니다.


빠른 시작

1. 프로젝트 참조 추가

<ItemGroup>
  <ProjectReference Include="..\..\..\100. Library\Identity\Dreamine.Identity.csproj" />
</ItemGroup>

2. 인증 설정 추가

{
  "Authentication": {
    "UsersDbPath": "C:\\Codemaru\\App_Data\\codemaru.db",
    "Google": {
      "ClientId": "",
      "ClientSecret": ""
    },
    "Naver": {
      "ClientId": "",
      "ClientSecret": ""
    },
    "Kakao": {
      "ClientId": "",
      "ClientSecret": ""
    },
    "CookieDomain": ".codemaru.co.kr",
    "CookieName": ".Dreamine.Identity",
    "DataProtectionKeysPath": "C:\\Codemaru\\App_Data\\IdentityKeys",
    "DataProtectionApplicationName": "Dreamine.Identity"
  }
}

OAuth Client Secret은 user-secrets, 환경 변수, 서버 전용 설정 파일에 보관합니다. 실제 시크릿 값을 저장소에 커밋하지 마세요.

3. WPF 호스트 헬퍼 등록

using Dreamine.Identity;

builder.Services.AddDreamineIdentityWpfHost();

WPF 호스트 쪽에서 안전하게 사용할 수 있는 AuthenticationStateProvider를 등록합니다.

4. Blazor 서버 호스트에 Identity 등록

using Dreamine.Identity;
using Dreamine.Identity.Options;

var authOptions = builder.Configuration
    .GetSection(AuthOptions.SectionName)
    .Get<AuthOptions>() ?? new AuthOptions();

var usersDbPath = builder.Configuration[$"{AuthOptions.SectionName}:UsersDbPath"]
    ?? Path.Combine(AppContext.BaseDirectory, "App_Data", "codemaru.db");

options.AddDreamineIdentity(authOptions, usersDbPath);

AddDreamineIdentity(...)가 연결하는 구성:

  • IUserStore
  • SQLite 사용자 DB provider
  • 쿠키 인증
  • OAuth provider
  • 인증/인가 middleware
  • 기본 인증 엔드포인트

기본 엔드포인트

표준 엔드포인트:

  • GET /_identity/login
  • POST /_identity/login
  • POST /_identity/signup
  • GET /_identity/account
  • POST /_identity/account
  • GET /_identity/signout

호환 alias:

  • /login
  • /signup
  • /account
  • /signout

OAuth challenge 엔드포인트:

  • GET /signin/google
  • GET /signin/naver
  • GET /signin/kakao

OAuth callback 경로:

  • /signin-google
  • /signin-naver
  • /signin-kakao

로그인을 시작할 수 있는 모든 배포 도메인에 대해 각 provider 콘솔에 callback URL을 등록해야 합니다.


공유 로그인 필수 조건

서브도메인 간 로그인 공유를 하려면 참여하는 모든 앱이 아래 값을 동일하게 사용해야 합니다.

{
  "CookieDomain": ".codemaru.co.kr",
  "CookieName": ".Dreamine.Identity",
  "DataProtectionKeysPath": "C:\\Codemaru\\App_Data\\IdentityKeys",
  "DataProtectionApplicationName": "Dreamine.Identity",
  "UsersDbPath": "C:\\Codemaru\\App_Data\\codemaru.db"
}

이 중 하나라도 다르면 한 서비스에서는 로그인 상태인데 다른 서비스에서는 익명 사용자로 보일 수 있습니다.

localhost 개발 환경에서는 운영 도메인의 서브도메인 공유 쿠키와 동작이 다릅니다. 로컬 테스트에서는 각 포트별 callback URL을 등록하고, 앱을 서로 격리해서 테스트할 때는 CookieDomain을 비워두는 것이 안전합니다.


계정 모델

AuthUser는 provider identity 하나당 하나의 계정 레코드를 저장합니다.

논리적 자연키:

(Provider, ProviderKey)

같은 이메일 주소가 노출되더라도 provider가 다르면 별도 identity로 취급합니다. 서비스 앱은 이메일, 표시 이름, 닉네임, provider별 계정 문자열이 아니라 내부 AuthUser.Id를 소유권 키로 저장해야 합니다.


의존성

  • Dreamine.Database.Abstractions
  • Dreamine.Database.Core
  • Dreamine.Database.Sqlite
  • Dreamine.Hybrid.Wpf
  • Microsoft.AspNetCore.App
  • Microsoft.AspNetCore.Authentication.Google
  • AspNet.Security.OAuth.Naver
  • AspNet.Security.OAuth.KakaoTalk
  • Microsoft.AspNetCore.Components.Authorization

대상 프레임워크

net8.0-windows7.0

라이선스

MIT License

구조 다이어그램

classDiagram
    class DreamineIdentityExtensions {
        <<static>>
        +AddDreamineIdentityWeb(IServiceCollection, AuthOptions, string) IServiceCollection
        +AddDreamineIdentityWpfHost(IServiceCollection) IServiceCollection
        +AddDreamineIdentity(HostOptions, AuthOptions, string) HostOptions
        +MapDreamineIdentityEndpoints(IEndpointRouteBuilder) IEndpointRouteBuilder
    }
    class AuthOptions {
        +string CookieDomain
        +string CookieName
        +string DataProtectionKeysPath
        +string DataProtectionApplicationName
        +OAuthProviderOptions Google
        +OAuthProviderOptions Naver
        +OAuthProviderOptions Kakao
    }
    class OAuthProviderOptions {
        +string ClientId
        +string ClientSecret
        +bool IsConfigured
    }
    class IUserStore {
        <<interface>>
        +UpsertAsync(...) Task~AuthUser~
        +GetByIdAsync(long) Task~AuthUser~
        +CreateLocalAsync(...) Task~AuthUser~
        +ValidateLocalAsync(...) Task~AuthUser~
        +ChangeLocalPasswordAsync(...) Task~AuthUser~
        +UpdateDisplayNameAsync(long, string) Task~AuthUser~
    }
    class SqliteUserStore {
        +UpsertAsync(...) Task~AuthUser~
        +GetByIdAsync(long) Task~AuthUser~
        +CreateLocalAsync(...) Task~AuthUser~
        +ValidateLocalAsync(...) Task~AuthUser~
    }
    class AuthUser {
        +long Id
        +string Provider
        +string ProviderKey
        +string Email
        +string DisplayName
        +string AvatarUrl
        +string PasswordHash
        +DateTime CreatedAt
        +DateTime LastLoginAt
    }
    class AnonymousAuthenticationStateProvider {
        +GetAuthenticationStateAsync() Task~AuthenticationState~
    }
    class AuthenticationStateProvider {
        <<abstract>>
    }
    IUserStore <|.. SqliteUserStore
    SqliteUserStore --> AuthUser
    AuthOptions --> OAuthProviderOptions
    DreamineIdentityExtensions --> AuthOptions
    DreamineIdentityExtensions --> IUserStore
    AnonymousAuthenticationStateProvider --|> AuthenticationStateProvider

API 문서

타입

AnonymousAuthenticationStateProvider

\if KO 항상 익명 인증 상태를 반환하는 입니다. \endif \if EN Provides an that always returns an anonymous state. \endif

AuthEndpoints

\if KO 로그인, 가입, 계정, 필수 동의 및 로그아웃 HTTP 엔드포인트를 매핑하고 해당 HTML을 생성합니다. \endif \if EN Maps login, signup, account, required-consent, and sign-out HTTP endpoints and generates their HTML. \endif

AuthOptions

\if KO OAuth 로그인 공급자와 공유 인증 쿠키의 구성 옵션입니다. \endif \if EN Represents configuration options for OAuth login providers and the shared authentication cookie. \endif

AuthUser

\if KO 소셜 또는 로컬 로그인으로 인증된 사용자 레코드를 나타냅니다. \endif \if EN Represents a user record authenticated through social or local login. \endif

DreamineIdentityExtensions

\if KO Dreamine 애플리케이션에 공유 쿠키, 로컬 계정 및 OAuth 로그인을 통합하는 확장 메서드를 제공합니다. \endif \if EN Provides extensions that integrate shared cookies, local accounts, and OAuth login into Dreamine applications. \endif

DreaminePasswordHasher

\if KO Dreamine 계열 서비스가 공통으로 사용하는 버전 지정 PBKDF2 비밀번호 해시 기능을 제공합니다. \endif \if EN Provides versioned PBKDF2 password hashing shared by Dreamine services. \endif

IUserStore

\if KO 외부 및 로컬 로그인 사용자의 저장·조회·계정 관리 계약을 정의합니다. \endif \if EN Defines persistence, lookup, and account-management operations for external and local login users. \endif

OAuthProviderOptions

\if KO 개별 OAuth 공급자의 클라이언트 자격 증명을 나타냅니다. \endif \if EN Represents client credentials for an individual OAuth provider. \endif

PasswordHashVerificationResult

\if KO 비밀번호 해시 검증 결과와 재해시 필요 여부를 나타냅니다. \endif \if EN Represents a password-hash verification result and whether rehashing is required. \endif

RequiredConsentPolicy

\if KO 인증 사용자의 필수 약관 동의 완료 여부를 판정합니다. \endif \if EN Evaluates whether an authenticated user has completed all required consents. \endif

SqliteUserStore

\if KO Dreamine 데이터베이스 추상화를 사용하는 SQLite 기반 구현입니다. \endif \if EN Provides a SQLite-backed implementation using the Dreamine database abstractions. \endif

TableColumn

\if KO SQLite PRAGMA table_info 결과에서 열 이름만 매핑하는 내부 모델입니다. \endif \if EN Represents the internal name-only mapping of a SQLite PRAGMA table_info row. \endif

AnonymousAuthenticationStateProvider

GetAuthenticationStateAsync Method

\if KO 캐시된 익명 인증 상태를 반환합니다. \endif \if EN Returns the cached anonymous authentication state. \endif

반환: \if KO 익명 ClaimsPrincipal을 포함한 완료된 작업입니다. \endif \if EN A completed task containing an anonymous ClaimsPrincipal. \endif

AnonymousState Field

\if KO Anonymous State 값을 보관합니다. \endif \if EN Stores the anonymous state value. \endif

AuthEndpoints

BuildAccountHtml Method

\if KO 사용자 프로필과 로그인 방식에 맞는 계정 관리 HTML을 만듭니다. \endif \if EN Builds account-management HTML appropriate for the user's profile and login method. \endif

user— \if KO 표시할 사용자입니다. \endif \if EN The user to display. \endif
returnUrl— \if KO 계정 화면에서 돌아갈 안전한 URL입니다. \endif \if EN The safe URL to return to from the account page. \endif
message— \if KO 선택적 성공 메시지입니다. \endif \if EN The optional success message. \endif
error— \if KO 선택적 오류 메시지입니다. \endif \if EN The optional error message. \endif
routePrefix— \if KO 폼 및 링크 경로 접두사입니다. \endif \if EN The form and link route prefix. \endif

반환: \if KO 완성된 계정 HTML입니다. \endif \if EN The completed account HTML. \endif

BuildConsentHtml Method

\if KO 이용약관, 개인정보 및 연령 확인 입력을 포함한 필수 동의 HTML을 만듭니다. \endif \if EN Builds required-consent HTML containing terms, privacy, and age-confirmation inputs. \endif

returnUrl— \if KO 동의 후 이동할 안전한 URL입니다. \endif \if EN The safe URL to visit after consent. \endif
error— \if KO 선택적 오류 메시지입니다. \endif \if EN The optional error message. \endif
routePrefix— \if KO 폼 작업 경로 접두사입니다. \endif \if EN The form-action route prefix. \endif

반환: \if KO 완성된 동의 HTML입니다. \endif \if EN The completed consent HTML. \endif

BuildLoginHtml Method

\if KO 로그인 또는 가입 모드의 독립 실행형 HTML 문서를 만듭니다. \endif \if EN Builds a standalone HTML document in login or signup mode. \endif

returnUrl— \if KO 인증 후 이동할 안전한 URL입니다. \endif \if EN The safe URL to visit after authentication. \endif
mode— \if KO signup이면 가입 화면을 선택하는 모드입니다. \endif \if EN The mode selecting signup when equal to signup. \endif
message— \if KO 선택적 안내 메시지입니다. \endif \if EN The optional informational message. \endif
error— \if KO 선택적 오류 메시지입니다. \endif \if EN The optional error message. \endif
routePrefix— \if KO 폼 작업 경로 접두사입니다. \endif \if EN The form-action route prefix. \endif

반환: \if KO 완성된 로그인 또는 가입 HTML입니다. \endif \if EN The completed login or signup HTML. \endif

GetCurrentUserId Method

\if KO 현재 사용자 클레임에서 내부 사용자 ID를 읽습니다. \endif \if EN Reads the internal user ID from the current user's claims. \endif

http— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif

반환: \if KO 파싱된 사용자 ID 또는 없으면 입니다. \endif \if EN The parsed user ID, or when absent. \endif

HandleAccountPageAsync Method

\if KO 현재 사용자를 조회하여 계정 페이지를 반환하거나 로그인을 요구합니다. \endif \if EN Loads the current user and returns the account page or requires login. \endif

http— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif
userStore— \if KO 사용자 저장소입니다. \endif \if EN The user store. \endif
returnUrl— \if KO 계정 화면에서 돌아갈 URL입니다. \endif \if EN The URL to return to from the account page. \endif
message— \if KO 선택적 성공 메시지입니다. \endif \if EN The optional success message. \endif
error— \if KO 선택적 오류 메시지입니다. \endif \if EN The optional error message. \endif
routePrefix— \if KO 인증 경로 접두사입니다. \endif \if EN The authentication route prefix. \endif

반환: \if KO 계정 HTML 또는 리디렉션 결과입니다. \endif \if EN The account HTML or redirect result. \endif

HandleAccountPostAsync Method

\if KO 계정 폼에서 표시 이름 또는 로컬 비밀번호 변경 요청을 처리합니다. \endif \if EN Handles a display-name or local-password change submitted from the account form. \endif

http— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif
userStore— \if KO 사용자 저장소입니다. \endif \if EN The user store. \endif
routePrefix— \if KO 인증 경로 접두사입니다. \endif \if EN The authentication route prefix. \endif

반환: \if KO 계정 갱신 또는 오류 리디렉션 결과입니다. \endif \if EN The account-update or error-redirect result. \endif

HandleConsentPageAsync Method

\if KO 현재 사용자의 필수 동의를 확인하고 필요할 때 동의 페이지를 반환합니다. \endif \if EN Checks the current user's required consents and returns the consent page when needed. \endif

http— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif
userStore— \if KO 사용자 저장소입니다. \endif \if EN The user store. \endif
returnUrl— \if KO 동의 후 이동할 URL입니다. \endif \if EN The URL to visit after consent. \endif
error— \if KO 선택적 오류 메시지입니다. \endif \if EN The optional error message. \endif
routePrefix— \if KO 인증 경로 접두사입니다. \endif \if EN The authentication route prefix. \endif

반환: \if KO 동의 HTML 또는 리디렉션 결과입니다. \endif \if EN The consent HTML or redirect result. \endif

HandleConsentPostAsync Method

\if KO 제출된 필수 동의를 검증하고 사용자 레코드 및 로그인 쿠키를 갱신합니다. \endif \if EN Validates submitted required consents and updates the user record and login cookie. \endif

http— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif
userStore— \if KO 사용자 저장소입니다. \endif \if EN The user store. \endif
routePrefix— \if KO 인증 경로 접두사입니다. \endif \if EN The authentication route prefix. \endif

반환: \if KO 동의 처리 또는 리디렉션 결과입니다. \endif \if EN The consent-processing or redirect result. \endif

HandleLocalLoginAsync Method

\if KO 로컬 로그인 폼을 읽고 사용자를 검증하여 쿠키 로그인 또는 오류 리디렉션을 반환합니다. \endif \if EN Reads a local-login form, validates the user, and returns a cookie sign-in or error redirect. \endif

http— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif
userStore— \if KO 사용자 저장소입니다. \endif \if EN The user store. \endif
routePrefix— \if KO 인증 경로 접두사입니다. \endif \if EN The authentication route prefix. \endif

반환: \if KO 로그인 결과입니다. \endif \if EN The login result. \endif

HandleSignupAsync Method

\if KO 가입 폼의 필수 동의와 비밀번호 확인을 검증하고 로컬 계정을 생성합니다. \endif \if EN Validates required consents and password confirmation in a signup form, then creates a local account. \endif

http— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif
userStore— \if KO 사용자 저장소입니다. \endif \if EN The user store. \endif
routePrefix— \if KO 인증 경로 접두사입니다. \endif \if EN The authentication route prefix. \endif

반환: \if KO 가입, 로그인 또는 오류 리디렉션 결과입니다. \endif \if EN The signup, sign-in, or error-redirect result. \endif

HasAcceptedRequiredSignupConsents Method

\if KO 가입 폼의 세 필수 동의 확인란이 모두 선택되었는지 확인합니다. \endif \if EN Determines whether all three required consent checkboxes are selected in a signup form. \endif

form— \if KO 검사할 가입 폼입니다. \endif \if EN The signup form to inspect. \endif

반환: \if KO 모두 선택되었으면 입니다. \endif \if EN when all are selected. \endif

Html Method

\if KO 선택적 값을 HTML 텍스트 또는 특성에 안전하게 인코딩합니다. \endif \if EN Safely HTML-encodes an optional value for text or attribute use. \endif

value— \if KO 인코딩할 값입니다. \endif \if EN The value to encode. \endif

반환: \if KO HTML 인코딩된 문자열입니다. \endif \if EN The HTML-encoded string. \endif

IsAllowedReturnHost Method

\if KO 호스트가 CodeMaru 도메인 또는 허용된 로컬 개발 호스트인지 확인합니다. \endif \if EN Determines whether a host is a CodeMaru domain or an allowed local development host. \endif

host— \if KO 검사할 호스트 이름입니다. \endif \if EN The host name to inspect. \endif

반환: \if KO 허용된 호스트이면 입니다. \endif \if EN for an allowed host. \endif

IsChecked Method

\if KO 폼 값이 일반적인 선택 상태 표현인지 확인합니다. \endif \if EN Determines whether a form value represents a common checked state. \endif

value— \if KO 폼 값입니다. \endif \if EN The form value. \endif

반환: \if KO true, on 또는 1이면 입니다. \endif \if EN for true, on, or 1. \endif

IsEmbeddedMobileBrowser Method

\if KO 사용자 에이전트가 알려진 모바일 앱 내부 브라우저인지 확인합니다. \endif \if EN Determines whether a user agent belongs to a known embedded mobile-app browser. \endif

userAgent— \if KO 검사할 User-Agent 헤더 값입니다. \endif \if EN The User-Agent header value to inspect. \endif

반환: \if KO 알려진 앱 내부 브라우저이면 입니다. \endif \if EN for a known embedded app browser. \endif

MapAuthEndpoints Method

\if KO 접두사가 있는 경로와 짧은 호환 경로에 모든 Dreamine 인증 엔드포인트를 등록합니다. \endif \if EN Registers all Dreamine authentication endpoints under prefixed and short compatibility routes. \endif

endpoints— \if KO 경로를 등록할 엔드포인트 작성기입니다. \endif \if EN The endpoint builder receiving the routes. \endif
SafeReturnUrl Method

\if KO 오픈 리디렉션을 막기 위해 로컬 경로 또는 허용된 CodeMaru/개발 호스트 URL만 반환합니다. \endif \if EN Prevents open redirects by accepting only local paths or allowed CodeMaru and development-host URLs. \endif

returnUrl— \if KO 검증할 반환 URL입니다. \endif \if EN The return URL to validate. \endif

반환: \if KO 안전한 반환 URL이며 유효하지 않으면 루트 경로입니다. \endif \if EN The safe return URL, or the root path when invalid. \endif

SignInAsync Method

\if KO 사용자 프로필과 내부 식별 클레임으로 지속 인증 쿠키를 발급합니다. \endif \if EN Issues a persistent authentication cookie with profile and internal-identity claims. \endif

http— \if KO 쿠키를 발급할 HTTP 컨텍스트입니다. \endif \if EN The HTTP context receiving the cookie. \endif
user— \if KO 로그인할 사용자입니다. \endif \if EN The user to sign in. \endif

반환: \if KO 쿠키 로그인 작업입니다. \endif \if EN A task representing cookie sign-in. \endif

Url Method

\if KO 선택적 값을 URL 쿼리 구성 요소로 이스케이프합니다. \endif \if EN Escapes an optional value for use as a URL query component. \endif

value— \if KO 이스케이프할 값입니다. \endif \if EN The value to escape. \endif

반환: \if KO URL 이스케이프된 문자열입니다. \endif \if EN The URL-escaped string. \endif

LocalProvider Field

\if KO Local Provider 값을 보관합니다. \endif \if EN Stores the local provider value. \endif

AuthOptions

CookieDomain Property

\if KO 서브도메인 간 로그인 공유용 쿠키 도메인을 가져오거나 설정합니다. \endif \if EN Gets or sets the cookie domain used to share login across subdomains. \endif

CookieName Property

\if KO 서브도메인 애플리케이션이 공유할 인증 쿠키 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the authentication-cookie name shared by subdomain applications. \endif

DataProtectionApplicationName Property

\if KO 공유 로그인 애플리케이션이 동일하게 사용해야 하는 Data Protection 애플리케이션 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the Data Protection application name that must match across shared-login applications. \endif

DataProtectionKeysPath Property

\if KO 여러 프로세스가 동일한 인증 쿠키를 해독하는 데 사용할 Data Protection 키 디렉터리를 가져오거나 설정합니다. \endif \if EN Gets or sets the Data Protection key directory used by multiple processes to decrypt the same authentication cookie. \endif

Google Property

\if KO Google OAuth 자격 증명을 가져오거나 설정합니다. \endif \if EN Gets or sets the Google OAuth credentials. \endif

Kakao Property

\if KO Kakao OAuth 자격 증명을 가져오거나 설정합니다. \endif \if EN Gets or sets the Kakao OAuth credentials. \endif

Naver Property

\if KO Naver OAuth 자격 증명을 가져오거나 설정합니다. \endif \if EN Gets or sets the Naver OAuth credentials. \endif

SectionName Field

\if KO 기본 구성 섹션 이름을 가져옵니다. \endif \if EN Gets the default configuration-section name. \endif

AuthUser

AgeConfirmedAtUtc Property

\if KO 만 14세 이상임을 확인한 UTC 시각을 가져오거나 설정합니다. \endif \if EN Gets or sets the UTC time at which the minimum-age confirmation was recorded. \endif

AvatarUrl Property

\if KO 프로필 이미지 URL을 가져오거나 설정합니다. \endif \if EN Gets or sets the profile-image URL. \endif

CreatedAt Property

\if KO 최초 가입 UTC 시각을 가져오거나 설정합니다. \endif \if EN Gets or sets the UTC registration time. \endif

DisplayName Property

\if KO 사용자 표시 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the user's display name. \endif

Email Property

\if KO 사용자 이메일 주소를 가져오거나 설정합니다. \endif \if EN Gets or sets the user's email address. \endif

Id Property

\if KO 데이터베이스에서 생성된 내부 사용자 식별자를 가져오거나 설정합니다. \endif \if EN Gets or sets the database-generated internal user identifier. \endif

LastLoginAt Property

\if KO 마지막 로그인 UTC 시각을 가져오거나 설정합니다. \endif \if EN Gets or sets the UTC time of the most recent login. \endif

PasswordHash Property

\if KO 로컬 이메일 로그인용 비밀번호 해시를 가져오거나 설정합니다. \endif \if EN Gets or sets the password hash used for local email login. \endif

PrivacyPolicyAcceptedAtUtc Property

\if KO 개인정보처리방침에 동의한 UTC 시각을 가져오거나 설정합니다. \endif \if EN Gets or sets the UTC time at which the privacy policy was accepted. \endif

Provider Property

\if KO 로그인 공급자 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the login-provider name. \endif

ProviderKey Property

\if KO 공급자가 부여한 사용자 식별자를 가져오거나 설정합니다. \endif \if EN Gets or sets the user identifier assigned by the provider. \endif

TermsAcceptedAtUtc Property

\if KO 이용약관에 동의한 UTC 시각을 가져오거나 설정합니다. \endif \if EN Gets or sets the UTC time at which the terms were accepted. \endif

DreamineIdentityExtensions

AddClaimIfNotEmpty Method

\if KO 값이 있고 같은 형식의 클레임이 없을 때만 클레임을 추가합니다. \endif \if EN Adds a claim only when its value is present and no claim of the same type exists. \endif

identity— \if KO 수정할 클레임 ID입니다. \endif \if EN The claims identity to modify. \endif
type— \if KO 클레임 형식입니다. \endif \if EN The claim type. \endif
value— \if KO 클레임 값입니다. \endif \if EN The claim value. \endif
AddDreamineIdentity Method

\if KO 일반 ASP.NET Core 웹 애플리케이션에 Dreamine Identity 공유 쿠키와 로그인 서비스를 등록합니다. \endif \if EN Registers Dreamine Identity shared-cookie and login services in a regular ASP.NET Core web application. \endif

options— \if KO 수정할 Blazor Server 호스트 옵션입니다. \endif \if EN The Blazor Server host options to modify. \endif
authOptions— \if KO 인증 공급자와 쿠키 옵션입니다. \endif \if EN The authentication-provider and cookie options. \endif
databasePath— \if KO 사용자 SQLite 데이터베이스 파일 경로입니다. \endif \if EN The user SQLite database-file path. \endif

반환: \if KO 수정된 동일한 호스트 옵션입니다. \endif \if EN The same modified host options. \endif

AddDreamineIdentityWeb Method

\if KO 일반 ASP.NET Core 웹 애플리케이션에 Dreamine Identity 공유 쿠키와 로그인 서비스를 등록합니다. \endif \if EN Registers Dreamine Identity shared-cookie and login services in a regular ASP.NET Core web application. \endif

services— \if KO 인증 서비스를 추가할 컬렉션입니다. \endif \if EN The collection receiving authentication services. \endif
authOptions— \if KO 인증 구성 옵션입니다. \endif \if EN The authentication options. \endif
databasePath— \if KO 사용자 SQLite 파일 경로입니다. \endif \if EN The user SQLite-file path. \endif

반환: \if KO 동일한 서비스 컬렉션입니다. \endif \if EN The same service collection. \endif

AddDreamineIdentityWpfHost Method

\if KO 포함된 BlazorWebView가 AuthorizeView를 사용할 수 있도록 WPF 호스트 DI에 익명 인증 상태를 등록합니다. \endif \if EN Registers anonymous authentication state in WPF host DI so an embedded BlazorWebView can use AuthorizeView. \endif

services— \if KO 인증 서비스를 추가할 컬렉션입니다. \endif \if EN The collection receiving authentication services. \endif

반환: \if KO 동일한 서비스 컬렉션입니다. \endif \if EN The same service collection. \endif

BuildCurrentUrl Method

\if KO 현재 요청의 경로 기준 반환 URL을 만듭니다. \endif \if EN Builds a path-based return URL for the current request. \endif

request— \if KO 현재 HTTP 요청입니다. \endif \if EN The current HTTP request. \endif

반환: \if KO 경로, PathBase 및 쿼리를 포함한 반환 URL입니다. \endif \if EN The return URL containing PathBase, path, and query. \endif

EnforceRequiredConsentsAsync Method

\if KO 인증된 사용자의 필수 동의를 확인하고 미완료 사용자를 동의 화면으로 보냅니다. \endif \if EN Checks required consents for an authenticated user and redirects incomplete users to the consent page. \endif

context— \if KO 현재 HTTP 컨텍스트입니다. \endif \if EN The current HTTP context. \endif
next— \if KO 다음 미들웨어입니다. \endif \if EN The next middleware delegate. \endif

반환: \if KO 동의 검사 또는 다음 미들웨어 실행 작업입니다. \endif \if EN A task representing consent inspection or execution of the next middleware. \endif

MapDreamineIdentityEndpoints Method

\if KO Dreamine Identity의 로컬 로그인, 가입, 동의 및 계정 엔드포인트를 현재 웹 애플리케이션에 매핑합니다. \endif \if EN Maps Dreamine Identity local-login, signup, consent, and account endpoints into the current web application. \endif

endpoints— \if KO 인증 경로를 추가할 엔드포인트 작성기입니다. \endif \if EN The endpoint builder receiving authentication routes. \endif

반환: \if KO 동일한 엔드포인트 작성기입니다. \endif \if EN The same endpoint builder. \endif

OnCreatingTicketAsync Method

\if KO 일반 OAuth 로그인 성공 시 공급자 클레임을 읽어 사용자를 저장하고 내부 클레임을 추가합니다. \endif \if EN On a general OAuth login success, reads provider claims, persists the user, and adds internal claims. \endif

context— \if KO OAuth 티켓 생성 컨텍스트입니다. \endif \if EN The OAuth ticket-creation context. \endif
providerName— \if KO 저장할 공급자 이름입니다. \endif \if EN The provider name to persist. \endif

반환: \if KO 사용자 저장 및 클레임 추가 작업입니다. \endif \if EN A task representing user persistence and claim addition. \endif

OnKakaoCreatingTicketAsync Method

\if KO Kakao 사용자 정보 API를 호출하여 프로필 클레임을 만들고 사용자를 저장합니다. \endif \if EN Calls the Kakao user-information API, creates profile claims, and persists the user. \endif

context— \if KO Kakao OAuth 티켓 생성 컨텍스트입니다. \endif \if EN The Kakao OAuth ticket-creation context. \endif

반환: \if KO 사용자 정보 조회와 저장 작업입니다. \endif \if EN A task representing user-information retrieval and persistence. \endif

ReadString Method

\if KO JSON 객체 속성의 문자열 또는 숫자 표현을 읽습니다. \endif \if EN Reads the string or numeric representation of a JSON object property. \endif

element— \if KO JSON 객체입니다. \endif \if EN The JSON object. \endif
name— \if KO 읽을 속성 이름입니다. \endif \if EN The property name to read. \endif

반환: \if KO 문자열 값이며 지원하지 않거나 없으면 빈 문자열입니다. \endif \if EN The string value, or an empty string when absent or unsupported. \endif

RegisterAuthServices Method

\if KO 사용자 저장소, 공유 쿠키, 구성된 OAuth 공급자 및 권한 서비스를 등록합니다. \endif \if EN Registers the user store, shared cookie, configured OAuth providers, and authorization services. \endif

services— \if KO 등록 대상 서비스 컬렉션입니다. \endif \if EN The target service collection. \endif
authOptions— \if KO 인증 및 쿠키 구성입니다. \endif \if EN The authentication and cookie configuration. \endif
databasePath— \if KO 사용자 SQLite 파일 경로입니다. \endif \if EN The user SQLite-file path. \endif
ShouldSkipConsentGate Method

\if KO 인증, 정적 자산 및 프레임워크 경로가 동의 게이트를 건너뛰어야 하는지 확인합니다. \endif \if EN Determines whether authentication, static-asset, or framework paths bypass the consent gate. \endif

path— \if KO 검사할 요청 경로입니다. \endif \if EN The request path to inspect. \endif

반환: \if KO 게이트를 건너뛰면 입니다. \endif \if EN when the gate should be skipped. \endif

TryGetProperty Method

\if KO JSON 객체에서 선택적 속성을 안전하게 읽습니다. \endif \if EN Safely reads an optional property from a JSON object. \endif

element— \if KO 검사할 JSON 요소입니다. \endif \if EN The JSON element to inspect. \endif
name— \if KO 속성 이름입니다. \endif \if EN The property name. \endif

반환: \if KO 속성 값 또는 없으면 입니다. \endif \if EN The property value, or when absent. \endif

UpsertExternalUserAsync Method

\if KO 외부 로그인 사용자를 저장하고 내부 사용자 및 공급자 클레임을 현재 ID에 추가합니다. \endif \if EN Persists an external-login user and adds internal user and provider claims to the current identity. \endif

context— \if KO OAuth 티켓 생성 컨텍스트입니다. \endif \if EN The OAuth ticket-creation context. \endif
providerName— \if KO 공급자 이름입니다. \endif \if EN The provider name. \endif
providerKey— \if KO 공급자 사용자 키입니다. \endif \if EN The provider user key. \endif
email— \if KO 사용자 이메일입니다. \endif \if EN The user's email. \endif
displayName— \if KO 사용자 표시 이름입니다. \endif \if EN The user's display name. \endif
avatarUrl— \if KO 프로필 이미지 URL입니다. \endif \if EN The profile-image URL. \endif

반환: \if KO 사용자 저장 및 클레임 추가 작업입니다. \endif \if EN A task representing persistence and claim addition. \endif

ProviderClaimType Field

\if KO 로그인 공급자 이름을 저장하는 사용자 지정 클레임 형식을 가져옵니다. \endif \if EN Gets the custom claim type that stores the login-provider name. \endif

ProviderGoogle Field

\if KO Provider Google 값을 보관합니다. \endif \if EN Stores the provider google value. \endif

ProviderKakao Field

\if KO Provider Kakao 값을 보관합니다. \endif \if EN Stores the provider kakao value. \endif

ProviderNaver Field

\if KO Provider Naver 값을 보관합니다. \endif \if EN Stores the provider naver value. \endif

UserIdClaimType Field

\if KO 내부 사용자 ID를 저장하는 사용자 지정 클레임 형식을 가져옵니다. \endif \if EN Gets the custom claim type that stores the internal user ID. \endif

DreaminePasswordHasher

FixedTimeEquals Method

\if KO UTF-8 문자열을 길이 노출을 최소화하는 고정 시간 비교로 검사합니다. \endif \if EN Compares UTF-8 strings using fixed-time byte comparison after a length check. \endif

left— \if KO 첫 번째 값입니다. \endif \if EN The first value. \endif
right— \if KO 두 번째 값입니다. \endif \if EN The second value. \endif

반환: \if KO 값이 같으면 입니다. \endif \if EN when the values are equal. \endif

HashPassword Method

\if KO 임의 솔트와 현재 반복 횟수를 사용하여 비밀번호를 PBKDF2-SHA256 형식으로 해시합니다. \endif \if EN Hashes a password in the PBKDF2-SHA256 format using a random salt and the current iteration count. \endif

password— \if KO 해시할 평문 비밀번호입니다. \endif \if EN The plain-text password to hash. \endif

반환: \if KO 버전, 반복 횟수, 솔트 및 해시를 포함한 저장 문자열입니다. \endif \if EN A storage string containing the version, iteration count, salt, and hash. \endif

HashPlainTextForStorage Method

\if KO 입력이 이미 지원되는 해시가 아니면 저장용 PBKDF2 해시로 변환합니다. \endif \if EN Converts input to a PBKDF2 storage hash unless it is already a supported hash. \endif

passwordOrHash— \if KO 평문 비밀번호 또는 기존 해시입니다. \endif \if EN A plain-text password or existing hash. \endif

반환: \if KO 그대로 유지한 기존 해시 또는 새 PBKDF2 해시입니다. \endif \if EN The preserved existing hash or a new PBKDF2 hash. \endif

IsDreamineHash Method

\if KO 값이 현재 Dreamine 버전 지정 해시 접두사로 시작하는지 확인합니다. \endif \if EN Determines whether a value starts with the current versioned Dreamine hash prefix. \endif

value— \if KO 검사할 값입니다. \endif \if EN The value to inspect. \endif

반환: \if KO Dreamine 해시 형식이면 입니다. \endif \if EN when the value has the Dreamine hash format. \endif

IsLegacySha256Hash Method

\if KO 값이 64자 SHA-256 16진수 형식인지 확인합니다. \endif \if EN Determines whether a value has the 64-character SHA-256 hexadecimal form. \endif

storedHash— \if KO 검사할 값입니다. \endif \if EN The value to inspect. \endif

반환: \if KO 레거시 형식이면 입니다. \endif \if EN for the legacy format. \endif

VerifyLegacySha256 Method

\if KO 비밀번호를 레거시 소문자 SHA-256 16진수 해시와 비교합니다. \endif \if EN Compares a password with a legacy lowercase SHA-256 hexadecimal hash. \endif

password— \if KO 평문 비밀번호입니다. \endif \if EN The plain-text password. \endif
storedHash— \if KO 저장된 레거시 해시입니다. \endif \if EN The stored legacy hash. \endif

반환: \if KO 일치하면 입니다. \endif \if EN when the values match. \endif

VerifyPassword Method

\if KO PBKDF2, 레거시 SHA-256 또는 이전 평문 저장값과 비밀번호를 비교하고 필요하면 새 해시를 제공합니다. \endif \if EN Verifies a password against PBKDF2, legacy SHA-256, or former plain-text storage and supplies an upgraded hash when needed. \endif

password— \if KO 검증할 평문 비밀번호입니다. \endif \if EN The plain-text password to verify. \endif
storedHash— \if KO 저장된 해시 또는 레거시 값입니다. \endif \if EN The stored hash or legacy value. \endif
upgradedHash— \if KO 재해시가 필요하면 새 PBKDF2 해시를 받습니다. \endif \if EN Receives a new PBKDF2 hash when rehashing is required. \endif

반환: \if KO 실패, 성공 또는 재해시 필요 상태입니다. \endif \if EN The failed, successful, or rehash-required verification state. \endif

VerifyPassword Method

\if KO 비밀번호가 저장된 값과 일치하는지 확인합니다. \endif \if EN Determines whether a password matches the stored value. \endif

password— \if KO 검증할 평문 비밀번호입니다. \endif \if EN The plain-text password to verify. \endif
storedHash— \if KO 저장된 해시 또는 레거시 값입니다. \endif \if EN The stored hash or legacy value. \endif

반환: \if KO 일치하면 , 그렇지 않으면 입니다. \endif \if EN when the password matches; otherwise, . \endif

VerifyPbkdf2 Method

\if KO 버전 지정 PBKDF2 저장 문자열을 구문 분석하고 고정 시간으로 검증합니다. \endif \if EN Parses and fixed-time verifies a versioned PBKDF2 storage string. \endif

password— \if KO 평문 비밀번호입니다. \endif \if EN The plain-text password. \endif
storedHash— \if KO 저장된 PBKDF2 문자열입니다. \endif \if EN The stored PBKDF2 string. \endif
needsRehash— \if KO 검증 성공 후 반복 횟수 업그레이드가 필요한지 받습니다. \endif \if EN Receives whether the iteration count needs upgrading after successful verification. \endif

반환: \if KO 해시가 일치하면 입니다. \endif \if EN when the hash matches. \endif

CurrentIterations Field

\if KO Current Iterations 값을 보관합니다. \endif \if EN Stores the current iterations value. \endif

HashSize Field

\if KO Hash Size 값을 보관합니다. \endif \if EN Stores the hash size value. \endif

SaltSize Field

\if KO Salt Size 값을 보관합니다. \endif \if EN Stores the salt size value. \endif

Version Field

\if KO Version 값을 보관합니다. \endif \if EN Stores the version value. \endif

IUserStore

AcceptRequiredConsentsAsync Method

\if KO 필수 약관, 개인정보 및 연령 확인 동의를 기록합니다. \endif \if EN Records required terms, privacy, and age-confirmation consent. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
acceptedAtUtc— \if KO 모든 필수 동의를 수락한 UTC 시각입니다. \endif \if EN The UTC time at which all required consents were accepted. \endif
cancellationToken— \if KO 갱신 취소 토큰입니다. \endif \if EN A token used to cancel the update. \endif

반환: \if KO 갱신된 사용자 또는 없으면 입니다. \endif \if EN The updated user, or when absent. \endif

ChangeLocalPasswordAsync Method

\if KO 로컬 계정의 현재 비밀번호를 검증하고 새 비밀번호로 변경합니다. \endif \if EN Verifies and changes the password of a local account. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
currentPassword— \if KO 현재 평문 비밀번호입니다. \endif \if EN The current plain-text password. \endif
newPassword— \if KO 새 평문 비밀번호입니다. \endif \if EN The new plain-text password. \endif
cancellationToken— \if KO 변경 취소 토큰입니다. \endif \if EN A token used to cancel the change. \endif

반환: \if KO 갱신된 사용자 또는 없으면 입니다. \endif \if EN The updated user, or when absent. \endif

CreateLocalAsync Method

\if KO 이메일과 비밀번호를 사용하는 로컬 계정을 만듭니다. \endif \if EN Creates a local account backed by an email address and password. \endif

email— \if KO 정규화할 이메일 주소입니다. \endif \if EN The email address to normalize. \endif
displayName— \if KO 선택한 표시 이름입니다. \endif \if EN The chosen display name. \endif
password— \if KO 해시할 평문 비밀번호입니다. \endif \if EN The plain-text password to hash. \endif
cancellationToken— \if KO 생성 취소 토큰입니다. \endif \if EN A token used to cancel creation. \endif

반환: \if KO 생성된 로컬 사용자입니다. \endif \if EN The created local user. \endif

GetByIdAsync Method

\if KO 내부 식별자로 사용자를 조회합니다. \endif \if EN Finds a user by internal identifier. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
cancellationToken— \if KO 조회 취소 토큰입니다. \endif \if EN A token used to cancel the lookup. \endif

반환: \if KO 찾은 사용자 또는 없으면 입니다. \endif \if EN The matching user, or when absent. \endif

UpdateDisplayNameAsync Method

\if KO 사용자의 표시 이름을 갱신합니다. \endif \if EN Updates a user's display name. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
displayName— \if KO 저장할 표시 이름입니다. \endif \if EN The display name to store. \endif
cancellationToken— \if KO 갱신 취소 토큰입니다. \endif \if EN A token used to cancel the update. \endif

반환: \if KO 갱신된 사용자 또는 사용자가 없으면 입니다. \endif \if EN The updated user, or when the user is absent. \endif

UpsertAsync Method

\if KO 공급자가 제공한 정보로 사용자를 추가하거나 갱신하고 최신 레코드를 반환합니다. \endif \if EN Inserts or updates a user from provider data and returns the current record. \endif

provider— \if KO 로그인 공급자 이름입니다. \endif \if EN The login-provider name. \endif
providerKey— \if KO 공급자 사용자 식별자입니다. \endif \if EN The provider user identifier. \endif
email— \if KO 공급자가 제공한 이메일입니다. \endif \if EN The email supplied by the provider. \endif
displayName— \if KO 공급자가 제공한 표시 이름입니다. \endif \if EN The display name supplied by the provider. \endif
avatarUrl— \if KO 공급자가 제공한 프로필 이미지 URL입니다. \endif \if EN The profile-image URL supplied by the provider. \endif
cancellationToken— \if KO 저장 작업 취소 토큰입니다. \endif \if EN A token used to cancel persistence. \endif

반환: \if KO 추가되거나 갱신된 사용자입니다. \endif \if EN The inserted or updated user. \endif

ValidateLocalAsync Method

\if KO 이메일과 비밀번호로 로컬 계정을 검증합니다. \endif \if EN Validates a local account using an email address and password. \endif

email— \if KO 정규화할 이메일 주소입니다. \endif \if EN The email address to normalize. \endif
password— \if KO 검증할 평문 비밀번호입니다. \endif \if EN The plain-text password to verify. \endif
cancellationToken— \if KO 검증 취소 토큰입니다. \endif \if EN A token used to cancel validation. \endif

반환: \if KO 인증된 사용자 또는 실패하면 입니다. \endif \if EN The authenticated user, or when validation fails. \endif

OAuthProviderOptions

ClientId Property

\if KO 공급자가 발급한 클라이언트 ID를 가져오거나 설정합니다. \endif \if EN Gets or sets the client ID issued by the provider. \endif

ClientSecret Property

\if KO 공급자가 발급한 클라이언트 비밀을 가져오거나 설정합니다. \endif \if EN Gets or sets the client secret issued by the provider. \endif

IsConfigured Property

\if KO 클라이언트 ID와 비밀이 모두 구성되었는지 여부를 가져옵니다. \endif \if EN Gets whether both the client ID and client secret are configured. \endif

PasswordHashVerificationResult

Failed Field

\if KO 비밀번호가 일치하지 않습니다. \endif \if EN The password does not match. \endif

Success Field

\if KO 비밀번호가 일치하며 현재 형식입니다. \endif \if EN The password matches and uses the current format. \endif

SuccessRehashNeeded Field

\if KO 비밀번호는 일치하지만 새 형식으로 다시 해시해야 합니다. \endif \if EN The password matches but should be rehashed in the current format. \endif

RequiredConsentPolicy

HasRequiredConsents Method

\if KO 이용약관, 개인정보처리방침 및 연령 확인 시각이 모두 기록되었는지 확인합니다. \endif \if EN Determines whether terms, privacy, and age-confirmation timestamps are all recorded. \endif

user— \if KO 검사할 사용자이며 없을 수 있습니다. \endif \if EN The user to inspect, which may be absent. \endif

반환: \if KO 모든 필수 동의가 있으면 , 그렇지 않으면 입니다. \endif \if EN when every required consent is present; otherwise, . \endif

SqliteUserStore

#ctor Method

\if KO 데이터베이스 공급자로 저장소를 초기화하고 사용자 테이블과 필수 열을 보장합니다. \endif \if EN Initializes the store with a database provider and ensures the user table and required columns. \endif

database— \if KO 사용자 데이터를 저장할 데이터베이스 공급자입니다. \endif \if EN The database provider used to store user data. \endif
AcceptRequiredConsentsAsync Method

\if KO 사용자의 세 필수 동의 시각을 동일한 UTC 값으로 기록합니다. \endif \if EN Records the same UTC value for all three required user consents. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
acceptedAtUtc— \if KO 동의를 수락한 UTC 시각입니다. \endif \if EN The UTC acceptance time. \endif
cancellationToken— \if KO 갱신 취소 토큰입니다. \endif \if EN A token used to cancel the update. \endif

반환: \if KO 갱신된 사용자 또는 없으면 입니다. \endif \if EN The updated user, or when absent. \endif

AddNullableDateColumnIfMissing Method

\if KO 열 집합에 없으면 nullable 날짜 텍스트 열을 Users 테이블에 추가합니다. \endif \if EN Adds a nullable date-text column to Users when it is absent from the column set. \endif

columns— \if KO 현재 열 이름 집합입니다. \endif \if EN The current set of column names. \endif
columnName— \if KO 확인하고 추가할 열 이름입니다. \endif \if EN The column name to check and add. \endif
ChangeLocalPasswordAsync Method

\if KO 로컬 사용자의 현재 비밀번호를 검증하고 강도가 확인된 새 해시를 저장합니다. \endif \if EN Verifies a local user's current password and stores a strength-checked new hash. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
currentPassword— \if KO 현재 평문 비밀번호입니다. \endif \if EN The current plain-text password. \endif
newPassword— \if KO 새 평문 비밀번호입니다. \endif \if EN The new plain-text password. \endif
cancellationToken— \if KO 변경 취소 토큰입니다. \endif \if EN A token used to cancel the change. \endif

반환: \if KO 갱신된 사용자 또는 없으면 입니다. \endif \if EN The updated user, or when absent. \endif

CreateLocalAsync Method

\if KO 이메일을 정규화하고 중복 및 비밀번호 길이를 검증한 뒤 로컬 계정을 만듭니다. \endif \if EN Normalizes the email, validates uniqueness and password length, then creates a local account. \endif

email— \if KO 로컬 계정 이메일입니다. \endif \if EN The local-account email. \endif
displayName— \if KO 선택적 표시 이름이며 비어 있으면 이메일을 사용합니다. \endif \if EN The optional display name; the email is used when empty. \endif
password— \if KO 해시할 평문 비밀번호입니다. \endif \if EN The plain-text password to hash. \endif
cancellationToken— \if KO 생성 취소 토큰입니다. \endif \if EN A token used to cancel creation. \endif

반환: \if KO 데이터베이스에서 다시 읽은 생성 사용자입니다. \endif \if EN The created user read back from the database. \endif

EnsureSchema Method

\if KO 기존 Users 테이블에 비밀번호 및 필수 동의 열이 존재하도록 마이그레이션합니다. \endif \if EN Migrates an existing Users table to ensure password and required-consent columns exist. \endif

FindLocalByEmailAsync Method

\if KO 정규화된 이메일을 로컬 공급자 키로 사용해 사용자를 조회합니다. \endif \if EN Finds a local user using the normalized email as the provider key. \endif

email— \if KO 정규화된 이메일입니다. \endif \if EN The normalized email. \endif
cancellationToken— \if KO 조회 취소 토큰입니다. \endif \if EN A token used to cancel the lookup. \endif

반환: \if KO 찾은 로컬 사용자 또는 없으면 입니다. \endif \if EN The matching local user, or when absent. \endif

GetByIdAsync Method

\if KO 내부 식별자로 사용자를 비동기 조회합니다. \endif \if EN Asynchronously finds a user by internal identifier. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
cancellationToken— \if KO 조회 취소 토큰입니다. \endif \if EN A token used to cancel the lookup. \endif

반환: \if KO 찾은 사용자 또는 없으면 입니다. \endif \if EN The matching user, or when absent. \endif

NormalizeEmail Method

\if KO 이메일 양끝 공백을 제거하고 소문자 불변 문화권 형식으로 정규화합니다. \endif \if EN Normalizes an email by trimming it and converting it to invariant lowercase. \endif

email— \if KO 정규화할 이메일입니다. \endif \if EN The email to normalize. \endif

반환: \if KO 정규화된 이메일입니다. \endif \if EN The normalized email. \endif

UpdateDisplayNameAsync Method

\if KO 사용자의 공백 제거된 표시 이름을 갱신합니다. \endif \if EN Updates a user's trimmed display name. \endif

id— \if KO 내부 사용자 식별자입니다. \endif \if EN The internal user identifier. \endif
displayName— \if KO 저장할 표시 이름입니다. \endif \if EN The display name to store. \endif
cancellationToken— \if KO 갱신 취소 토큰입니다. \endif \if EN A token used to cancel the update. \endif

반환: \if KO 갱신된 사용자 또는 없으면 입니다. \endif \if EN The updated user, or when absent. \endif

UpsertAsync Method

\if KO 외부 공급자 키로 사용자를 추가하거나 프로필과 마지막 로그인 시각을 갱신합니다. \endif \if EN Inserts a user by external provider key or updates the profile and last-login time. \endif

provider— \if KO 로그인 공급자 이름입니다. \endif \if EN The login-provider name. \endif
providerKey— \if KO 공급자 사용자 키입니다. \endif \if EN The provider user key. \endif
email— \if KO 사용자 이메일입니다. \endif \if EN The user's email. \endif
displayName— \if KO 사용자 표시 이름입니다. \endif \if EN The user's display name. \endif
avatarUrl— \if KO 프로필 이미지 URL입니다. \endif \if EN The profile-image URL. \endif
cancellationToken— \if KO 저장 취소 토큰입니다. \endif \if EN A token used to cancel persistence. \endif

반환: \if KO 저장된 최신 사용자 레코드입니다. \endif \if EN The current persisted user record. \endif

ValidateLocalAsync Method

\if KO 로컬 이메일과 비밀번호를 검증하고 마지막 로그인 및 필요한 해시 업그레이드를 저장합니다. \endif \if EN Validates a local email and password, persisting the last-login time and any required hash upgrade. \endif

email— \if KO 정규화할 이메일입니다. \endif \if EN The email to normalize. \endif
password— \if KO 검증할 평문 비밀번호입니다. \endif \if EN The plain-text password to verify. \endif
cancellationToken— \if KO 검증 취소 토큰입니다. \endif \if EN A token used to cancel validation. \endif

반환: \if KO 인증된 사용자 또는 실패하면 입니다. \endif \if EN The authenticated user, or on failure. \endif

_database Field

\if KO database 값을 보관합니다. \endif \if EN Stores the database value. \endif

LocalProvider Field

\if KO Local Provider 값을 보관합니다. \endif \if EN Stores the local provider value. \endif

SelectSql Field

\if KO Select Sql 값을 보관합니다. \endif \if EN Stores the select sql value. \endif

TableColumn

Name Property

\if KO 데이터베이스 열 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the database column name. \endif