繁體中文(香港)
  • asp-net-core
  • c-sharp
  • 教程
  • 認證
  • oauth
  • oidc
  • 身份

使用 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 帳戶。如果你還沒有,可以免費註冊
  • 擁有 .NET 開發環境和 ASP.NET Core 項目。如果你還沒有,可以下載 .NET 並按照 ASP.NET 教程 設置你的項目。

創建 Logto 應用程序

首先,創建一個 Logto 應用程序,選擇 "傳統網頁" 類型。如需創建 Logto 應用程序,請按照以下步驟操作:

  1. 登錄到 Logto 控制台
  2. 在左側導航欄中,點擊 Applications
  3. 點擊 Create application
  4. 在打開的頁面中,找到 "Traditional web app" 部分並找到 "ASP.NET Core" 卡片。
  5. 點擊 Start building,並輸入你的應用程序名稱。
  6. 點擊 Create

然後,你應該會看到一個互動教程,指導你完成和你的 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
  • 為認證方案添加 cookie 和 OpenID Connect 認證處理程序。

登錄

將以下 URI 添加到 Logto 應用程序詳情頁面的 Redirect URIs 列表:

要使用 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 應用程序詳情頁面中相應更新。

登出

將以下 URI 添加到 Logto 應用程序詳情頁面的 Post sign-out redirect URIs 列表:

要使用 Logto 登出,你可以使用 SignOutAsync 方法:

SignOutAsync 方法將清除認證 cookie 並將用戶重定向到 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>已認證:@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. 在你的瀏覽器中打開網頁應用程序,你應該會看到 "已認證:False" 和 "登錄" 按鈕。
  2. 點擊 "登錄" 按鈕,你應該會被重定向到 Logto 登錄頁。
  3. 完成登錄後,你應該會被重定向回網頁應用程序,並看到 "已認證:True" 和 "登出" 按鈕。
  4. 點擊 "登出" 按鈕,你應該會被重定向到 Logto 登出頁,然後重定向回網頁應用程序。

如果在整合過程中遇到任何問題,請隨時通過電郵 [email protected] 聯繫我們或加入我們的 Discord 伺服器

進一步閱讀