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 서버에 가입하세요!