• asp-net-core
  • c-sharp
  • tutorial
  • auth
  • authentication
  • oauth
  • oidc
  • identity

Logto와 함께 ASP.NET Core 인증 구현하기

Logto SDK를 통합하여 ASP.NET Core에서 사용자 인증 흐름을 구축하는 방법을 배워보세요.

Gao
Gao
Founder

소개

  • Logto는 최소한의 노력으로 고객 아이덴티티 인프라를 구축하기 위한 현대적인 Auth0 대안입니다. 사용자 이름, 이메일, 전화 번호, Google 및 GitHub과 같은 인기 있는 소셜 로그인을 포함하여 다양한 로그인 방법을 지원합니다.
  • ASP.NET Core는 합시플랫폼, 고성능, 오픈소스 프레임워크로 현대적인, 클라우드 기반, 인터넷 연결 애플리케이션을 구축합니다.

이 튜토리얼에서는, Logto SDK를 통합하여 ASP.NET Core에서 사용자 인증 흐름을 구축하는 방법을 보여줍니다. 이 튜토리얼에서는 프로그래밍 언어로 C#을 사용합니다.

사전 요구 사항

시작하기 전에 다음을 확인해야 합니다:

Logto 애플리케이션 작성

시작하려면, "전통적인 웹" 유형의 Logto 애플리케이션을 작성합니다. Logto 애플리케이션을 만들려면 다음 단계를 따르십시오:

  1. Logto 콘솔에 로그인합니다.
  2. 왼쪽 내비게이션 바에서 애플리케이션을 클릭합니다.
  3. 애플리케이션 작성을 클릭합니다.
  4. 열린 페이지에서 "전통적 웹 앱" 섹션을 찾아 "ASP.NET Core" 카드를 찾습니다.
  5. 빌드 시작을 클릭하고, 애플리케이션 이름을 입력합니다.
  6. 작성을 클릭합니다.

그런 다음 ASP.NET Core 애플리케이션과 Logto SDK를 통합하는 프로세스를 안내하는 대화식 튜토리얼을 볼 수 있습니다. 다음 내용은 차후 참조를 위한 것입니다.

Logto SDK와 통합

설치

ASP.NET Core의 최소 지원 버전은 6.0입니다.

Logto 인증 미들웨어 추가

Startup.cs(또는 Program.cs)를 열고 Logto 인증 미들웨어를 등록하는 다음 코드를 추가합니다:

AddLogtoAuthentication 메서드는 다음 기능을 수행합니다:

  • 기본 인증 체계를 LogtoDefaults.CookieScheme으로 설정합니다.
  • 기본 챌린지 체계를 LogtoDefaults.AuthenticationScheme으로 설정합니다.
  • 기본 로그아웃 체계를 LogtoDefaults.AuthenticationScheme으로 설정합니다.
  • 쿠키 및 OpenID Connect 인증 핸들러를 인증 체계에 추가합니다.

로그인

Logto 애플리케이션 상세 페이지의 리다이렉트 URI 목록에 다음 URI를 추가합니다:

Logto와 함께 로그인하려면 ChallengeAsync 메서드를 사용할 수 있습니다:

ChallengeAsync 메서드는 사용자를 Logto 로그인 페이지로 리다이렉트합니다.

RedirectUri 속성은 인증 후 웹 애플리케이션으로 사용자를 다시 리다이렉트하는 데 사용됩니다. 이것은 Logto 애플리케이션 상세 페이지에서 구성한 리다이렉트 URI와는 다르다는 점에 유의하십시오:

  1. Logto 애플리케이션 상세 페이지의 리다이렉트 URI는 사용자가 로그인한 후 Logto가 사용자를 다시 리다이렉트할 URI입니다.
  2. RedirectUri 속성은 Logto 인증 미들웨어에서 필요한 조치가 취해진 후 리다이렉트될 URI입니다.

동작 순서는 1 -> 2입니다. 명확함을 위해 Logto 애플리케이션 상세 페이지의 리다이렉트 URI를 Logto 리다이렉트 URI라고 하고 RedirectUri 속성을 애플리케이션 리다이렉트 URI라고 부르겠습니다.

Logto 리다이렉트 URI는 기본값이 /Callback으로, 특별한 요구 사항이 없는 경우 그대로 두면 됩니다. 이를 변경하려면 LogtoOptions에 대해 CallbackPath 속성을 설정할 수 있습니다:

Logto 애플리케이션 상세 페이지에서 해당 값을 적절히 업데이트하는 것을 잊지 마십시오.

로그아웃

Logto 애플리케이션 상세 페이지의 로그아웃 후 리다이렉트 URI 목록에 다음 URI를 추가합니다:

Logto와 함께 로그아웃하려면 SignOutAsync 메서드를 사용할 수 있습니다:

SignOutAsync 메서드는 인증 쿠키를 지우고 사용자를 Logto 로그아웃 페이지로 리다이렉트합니다.

RedirectUri 속성은 로그아웃 후 웹 애플리케이션으로 사용자를 다시 리다이렉트하는 데 사용됩니다. 이것은 Logto 애플리케이션 상세 페이지에서 구성한 로그아웃 후 리다이렉트 URI와는 다르다는 점에 유의하십시오:

  1. Logto 애플리케이션 상세 페이지의 로그아웃 후 리다이렉트 URI는 사용자가 로그아웃 한 후 Logto가 사용자를 다시 리다이렉트할 URI입니다.
  2. RedirectUri 속성은 Logto 인증 미들웨어에서 필요한 조치가 취해진 후 리다이렉트될 URI입니다.

동작 순서는 1 -> 2입니다. 명확함을 위해 Logto 애플리케이션 상세 페이지의 로그아웃 후 리다이렉트 URI를 Logto 로그아웃 후 리다이렉트 URI라고 하고 RedirectUri 속성을 애플리케이션 로그아웃 후 리다이렉트 URI라고 부르겠습니다.

Logto 로그아웃 후 리다이렉트 URI는 기본값이 /SignedOutCallback으로, 특별한 요구 사항이 없는 경우 그대로 두면 됩니다. 이를 변경하려면 LogtoOptions에 대해 SignedOutCallbackPath 속성을 설정할 수 있습니다:

Logto 애플리케이션 상세 페이지에서 해당 값을 적절히 업데이트하는 것을 잊지 마십시오.

로그인/로그아웃 버튼 구현(Razor Pages)

먼저, PageModel에 핸들러 메서드를 추가합니다, 예를 들면:

그런 다음, Razor 페이지(html)에 버튼을 추가합니다:

<p>Is authenticated: @User.Identity?.IsAuthenticated</p>
<form method="post">
  @if (User.Identity?.IsAuthenticated == true)
  {
    <button type="submit" asp-page-handler="SignOut">로그아웃</button>
  } else {
    <button type="submit" asp-page-handler="SignIn">로그인</button>
  }
</form>

인증되지 않은 사용자에게는 "로그인" 버튼이 표시되고, 인증된 사용자에게는 "로그아웃" 버튼이 표시됩니다.

체크포인트: 브라우저에서 웹 애플리케이션 실행

이제 웹 애플리케이션을 실행하고 Logto로 로그인/로그아웃을 시도할 수 있습니다:

  1. 브라우저에서 웹 애플리케이션을 열면, "Is authenticated: False"와 "로그인" 버튼이 나타납니다.
  2. "로그인" 버튼을 클릭하면, Logto 로그인 페이지로 리다이렉트됩니다.
  3. 로그인 한 후, 웹 애플리케이션으로 리다이렉트되어 "Is authenticated: True"와 "로그아웃" 버튼이 나타납니다.
  4. "로그아웃" 버튼을 클릭하면, Logto 로그아웃 페이지로 리다이렉트되고, 다시 웹 애플리케이션으로 리디렉트됩니다.

통합 중 문제가 있으면 망설이지 마시고 [email protected]로 이메일을 보내거나 Discord 서버에 가입하세요!

추가 읽기