這很重要
自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解。
此示例文章使用示例 Node.js 應用程式來演示如何將 Azure Active Directory B2C (Azure AD B2C) 身份驗證添加到 Node.js Web 應用程式。 範例應用程式使用戶能夠使用 Azure AD B2C 使用者流登錄、註銷、更新配置檔和重置密碼。 示例 Web 應用程式使用 適用於 Node 的 Microsoft 身份驗證庫 (MSAL) 來處理身份驗證和授權。
在本文中,您將執行以下任務:
- 在 Azure 門戶中註冊 Web 應用程式。
- 在 Azure 門戶中為應用創建組合的 登錄和註冊、 配置檔編輯和 密碼重置 使用者流。
- 更新範例 Node 應用程式以使用你自己的 Azure AD B2C 應用程式和使用者流。
- 測試範例應用程式。
先決條件
- Node.js。
- Visual Studio Code 或其他程式碼編輯器。
- Azure AD B2C 租戶。 如果尚未創建自己的租戶,請按照 教程:創建 Azure Active Directory B2C 租戶 中的步驟作並記錄租戶名稱。
步驟 1:配置使用者流
當使用者嘗試登入應用程式時,應用程式會透過使用者流程,啟動對授權端點的驗證要求。 使用者流程會定義並控制使用者體驗。 當使用者完成使用者流程之後,Azure AD B2C 會產生權杖,然後將使用者重新導向回到您的應用程式。
如果您尚未這麼做,請建立使用者流程或自訂原則。 重複步驟,以建立下列三個不同的使用者流程:
- 合併的登入和註冊使用者流程 (例如
susi
)。 這個使用者流程也支援忘記密碼體驗。 -
設定檔編輯使用者流程 (例如
edit_profile
)。 -
密碼重設使用者流程 (例如
reset_password
)。
Azure AD B2C 會在使用者流程名稱前面加上 B2C_1_
。 例如,susi
會成為 B2C_1_susi
。
步驟 2:註冊 Web 應用程式
若要使用 Azure AD B2C 啟用應用程式登錄,請在 Azure AD B2C 目錄中註冊應用。 應用註冊在應用和 Azure AD B2C 之間建立信任關係。
在應用程式註冊期間,您將指定 Redirect URI。 重定向 URI 是 Azure AD B2C 在使用 Azure AD B2C 進行身份驗證後,Azure AD B2C 將使用者重定向到的終結點。 應用程式註冊過程會生成一個 應用程式ID,也稱為 用戶端ID,用於唯一標識您的應用程式。 註冊應用后,Azure AD B2C 會使用應用程式 ID 和重定向 URI 來創建身份驗證請求。
步驟 2.1:註冊應用程式
要註冊 Web 應用程式,請執行以下步驟:
登入 Azure 入口網站。
如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
選取 [應用程式註冊],然後選取 [[新增註冊]。
在 Name (名稱) 下,輸入應用程式的名稱 (例如, webapp1)。
在 支援的帳戶類型下,選取 任何身分提供者或組織目錄中的帳戶(用於驗證具有使用者流程的使用者)。
在 [重新導向 URI] 下,選取 [Web],然後在 [URL] 方塊中輸入
http://localhost:3000/redirect
。在 Permissions (許可權) 下,選中 授予管理員同意 openid 和 offline_access 權限 的複選框。
選取 註冊。
選取 概觀。
當您設定 Web 應用程式時,請記錄 [應用程式 (用戶端) 識別碼],以供稍後使用。
步驟 2.2:創建 Web 應用程式用戶端金鑰
為已註冊的 Web 應用程式創建用戶端金鑰。 Web 應用程式在請求令牌時使用用戶端密鑰來證明其身份。
- 在 [管理] 下,選取 [ 憑證與秘密]。
- 選取 [新用戶端密碼]。
- 在 [ 描述 ] 方塊中,輸入客戶端密碼的描述(例如 clientsecret1)。
- 在 [到期] 下,選取祕密的有效持續時間,然後選取 [新增]。
- 記錄秘密的 值。 您將在稍後的步驟中使用此值進行設定。
步驟 3:獲取範例 Web 應用程式
下載 zip 檔,或從 GitHub 克隆示例 Web 應用程式。
git clone https://github.com/Azure-Samples/active-directory-b2c-msal-node-sign-in-sign-out-webapp.git
將範例檔解壓縮到資料夾中。 您將取得以下目錄結構的 Web 應用程式:
active-directory-b2c-msal-node-sign-in-sign-out-webapp/
├── index.js
└── package.json
└── .env
└── views/
└── layouts/
└── main.hbs
└── signin.hbs
該 views
資料夾包含應用程式使用者介面的 Handlebars 檔案。
步驟 4:安裝依賴項
打開主控台視窗,然後切換到包含 Node.js 範例應用程式的目錄。 例如:
cd active-directory-b2c-msal-node-sign-in-sign-out-webapp
執行下列命令來安裝應用程式相依性:
npm install && npm update
步驟 5:配置範例 Web 應用程式
在程式代碼編輯器中開啟 Web 應用程式,例如 Visual Studio Code。 在專案根資料夾下,打開 .env 檔。 此檔案包含 Azure AD B2C 識別提供者的相關信息。 更新以下應用程式設定屬性:
鑰匙 | 價值觀 |
---|---|
APP_CLIENT_ID |
您在步驟 2.1 中註冊的 Web 應用程式的應用程式(用戶端)ID。 |
APP_CLIENT_SECRET |
您在步驟 2.2 中建立的 Web 應用程式的用戶端金鑰值 |
SIGN_UP_SIGN_IN_POLICY_AUTHORITY |
登入和註冊使用者流許可權,例如 https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name> . 請將<your-tenant-name> 取代為您的承租者名稱,並將<sign-in-sign-up-user-flow-name> 取代為您的登入和註冊使用者流程名稱,例如B2C_1_susi 。 瞭解如何 取得您的租戶名稱。 |
RESET_PASSWORD_POLICY_AUTHORITY |
Reset password (重置密碼) 使用者流許可權,例如 https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<reset-password-user-flow-name> . 將 <your-tenant-name> 替換為您的租戶名稱,將 <reset-password-user-flow-name> 替換為您重設密碼的使用流程名稱,例如 B2C_1_reset_password_node_app 。 |
EDIT_PROFILE_POLICY_AUTHORITY |
Profile editing 使用者流程權限(例如 https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<profile-edit-user-flow-name> )。 將 <your-tenant-name> 替換為您的租戶名稱,將 <reset-password-user-flow-name> 替換為重置密碼使用流程的名稱,例如 B2C_1_edit_profile_node_app 。 |
AUTHORITY_DOMAIN |
Azure AD B2C 授權域,例如 https://<your-tenant-name>.b2clogin.com 。 以您的租使用者名稱取代 <your-tenant-name> 。 |
APP_REDIRECT_URI |
應用程式重新導向 URI,其中 Azure AD B2C 會傳回驗證回應(令牌)。 它與你在 Azure 門戶中註冊應用時設置的 重定向 URI 匹配,並且必須可公開訪問。 將值保留為 。 |
LOGOUT_ENDPOINT |
Azure AD B2C 註銷端點,例如 https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name>/oauth2/v2.0/logout?post_logout_redirect_uri=http://localhost:3000 . 請將<your-tenant-name> 取代為您的承租者名稱,並將<sign-in-sign-up-user-flow-name> 取代為您的登入和註冊使用者流程名稱,例如B2C_1_susi 。 |
您的最終設定檔應類似於以下範例:
#HTTP port
SERVER_PORT=3000
#web apps client ID
APP_CLIENT_ID=<You app client ID here>
#session secret
SESSION_SECRET=sessionSecretHere
#web app client secret
APP_CLIENT_SECRET=<Your app client secret here>
#B2C sign up and sign in user flow/policy authority
SIGN_UP_SIGN_IN_POLICY_AUTHORITY=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name>
#B2C password reset user flow/policy authority
RESET_PASSWORD_POLICY_AUTHORITY=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<reset-password-user-flow-name>
#B2C edit profile user flow/policy authority
EDIT_PROFILE_POLICY_AUTHORITY=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<profile-edit-user-flow-name>
#B2C authority domain
AUTHORITY_DOMAIN=https://<your-tenant-name>.b2clogin.com
#client redirect url
APP_REDIRECT_URI=http://localhost:3000/redirect
#Logout endpoint
LOGOUT_ENDPOINT=https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<sign-in-sign-up-user-flow-name>/oauth2/v2.0/logout?post_logout_redirect_uri=http://localhost:3000
執行範例 Web 應用程式
您現在可以測試範例應用程式。 您需要啟動 Node 伺服器並透過瀏覽器 http://localhost:3000
存取它。
在您的終端中,執行以下代碼以啟動 Node.js Web 伺服器:
node index.js
在瀏覽器中,前往
http://localhost:3000
。 您應該會看到帶有 Sign in (登錄) 按鈕的頁面。
測試登入
帶有 Sign in (登錄) 按鈕的頁面完成載入後,選擇 Sign in (登錄)。 系統會提示您登入。
輸入您的登入認證,例如電子郵件地址和密碼。 如果您沒有帳戶,請選取 [ 立即註冊 ] 以建立帳戶。 成功登錄或註冊后,您應該會看到以下顯示登錄狀態的頁面。
測試個人檔案編輯
- 登錄后,選擇 Edit profile (編輯檔案)。
- 根據需要輸入新的更改,然後選擇 Continue (繼續)。 您應該會看到具有新變更的登入狀態頁面,例如Given Name。
測試密碼重置
- 登錄后,選擇 Reset password(重置密碼)。
- 在出現的下一個對話框中,您可以通過選擇 Cancel (取消) 來取消作。 或者,輸入您的電子郵件地址,然後選擇 Send verification code(發送驗證碼)。 您的電子郵件帳戶將收到驗證碼。 複製電子郵件中的驗證碼,將其輸入到密碼重置對話方塊中,然後選擇 Verify code(驗證代碼)。
- 選取繼續。
- 輸入您的新密碼,確認,然後選擇 Continue (繼續)。 您應該會看到顯示登錄狀態的頁面。
測試登出
登錄后,選擇 Sign out(註銷)。您應該會看到具有 Sign in (登錄) 按鈕的頁面。