Logto와 함께 ASP.NET Core 인증 구현하기
Logto SDK를 통합하여 ASP.NET Core에서 사용자 인증 흐름을 구축하는 방법을 배워보세요.
소개
- Logto는 최소한의 노력으로 고객 아이덴티티 인프라를 구축하기 위한 현대적인 Auth0 대안입니다. 사용자 이름, 이메일, 전화 번호, Google 및 GitHub과 같은 인기 있는 소셜 로그인을 포함하여 다양한 로그인 방법을 지원합니다.
- ASP.NET Core는 합시플랫폼, 고성능, 오픈소스 프레임워크로 현대적인, 클라우드 기반, 인터넷 연결 애플리케이션을 구축합니다.
이 튜토리얼에서는, Logto SDK를 통합하여 ASP.NET Core에서 사용자 인증 흐름을 구축하는 방법을 보여줍니다. 이 튜토리얼에서는 프로그래밍 언어로 C#을 사용합니다.
사전 요구 사항
시작하기 전에 다음을 확인해야 합니다:
- Logto 계정. 계정이 없으면 무료로 가입할 수 있습니다.
- .NET 개발 환경 및 ASP.NET Core 프로젝트. 프로젝트가 없으면 .NET을 설치하고 ASP.NET 튜토리얼을 따라 프로젝트를 설정할 수 있습니다.
Logto 애플리케이션 작성
시작하려면, "전통적인 웹" 유형의 Logto 애플리케이션을 작성합니다. Logto 애플리케이션을 만들려면 다음 단계를 따르십시오:
- Logto 콘솔에 로그인합니다.
- 왼쪽 내비게이션 바에서 애플리케이션을 클릭합니다.
- 애플리케이션 작성을 클릭합니다.
- 열린 페이지에서 "전통적 웹 앱" 섹션을 찾아 "ASP.NET Core" 카드를 찾습니다.
- 빌드 시작을 클릭하고, 애플리케이션 이름을 입력합니다.
- 작성을 클릭합니다.
그런 다음 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와는 다르다는 점에 유의하십시오:
- Logto 애플리케이션 상세 페이지의 리다이렉트 URI는 사용자가 로그인한 후 Logto가 사용자를 다시 리다이렉트할 URI입니다.
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와는 다르다는 점에 유의하십시오:
- Logto 애플리케이션 상세 페이지의 로그아웃 후 리다이렉트 URI는 사용자가 로그아웃 한 후 Logto가 사용자를 다시 리다이렉트할 URI입니다.
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로 로그인/로그아웃을 시도할 수 있습니다:
- 브라우저에서 웹 애플리케이션을 열면, "Is authenticated: False"와 "로그인" 버튼이 나타납니다.
- "로그인" 버튼을 클릭하면, Logto 로그인 페이지로 리다이렉트됩니다.
- 로그인 한 후, 웹 애플리케이션으로 리다이렉트되어 "Is authenticated: True"와 "로그아웃" 버튼이 나타납니다.
- "로그아웃" 버튼을 클릭하면, Logto 로그아웃 페이지로 리다이렉트되고, 다시 웹 애플리케이션으로 리디렉트됩니다.
통합 중 문제가 있으면 망설이지 마시고 [email protected]로 이메일을 보내거나 Discord 서버에 가입하세요!