快速入門:在範例 Web 應用程式中登入使用者
在本快速入門中,您將使用範例 Web 應用程式,展示如何在您的工作租戶中登入使用者並呼叫 Microsoft Graph API。 範例應用程式會使用 Microsoft 驗證連結庫 來處理驗證。
開始之前,請使用此頁面頂端的 租用戶類型選取器 選擇租用戶類型。 Microsoft Entra ID 提供兩個租戶設定:員工 和 外部。 工作群組租戶配置適用於員工、內部應用程式和其他組織資源。 外部租戶是為客戶使用的應用程式而設計的。
先決條件
- Azure 訂用帳戶。 建立免費的 Azure 訂用帳戶。
- Node.js
- Visual Studio Code 或其他程式碼編輯器。
- Microsoft Entra 工作團隊租戶。 如需詳細資訊,請參閱 取得 Microsoft Entra 租戶的方法。
註冊 Web 應用程式
若要讓應用程式能夠讓使用者登入,必須讓 Microsoft Entra ID 知道您所建立的應用程式。 應用程式註冊會建立應用程式與 Microsoft Entra 之間的信任關係。 當您註冊應用程式時,外部標識碼會產生稱為「應用程式」(用戶端)標識碼的唯一標識碼,這個值可用來在建立驗證要求時識別您的應用程式。
若要完成註冊,請提供應用程式名稱,並指定支援的帳戶類型。 註冊之後,應用程式 概觀 窗格會顯示應用程式原始碼中所需的標識碼。
如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示
,切換至您想要從 [目錄 + 訂用帳戶] 功能表註冊應用程式的租使用者。
瀏覽至 [身分識別>應用程式>應用程式註冊],然後選取 [新增註冊]。
輸入應用程式的 名稱,例如 identity-client-web-app。
針對 支援的帳戶類型,請選取 此組織目錄中的 [帳戶]。 如需不同帳戶類型的資訊,請選取 協助我選擇 選項。
選取 登錄。
註冊完成時,會顯示應用程式的 [概觀] 窗格。 記錄 目錄(租使用者)標識碼 和 應用程式(用戶端)標識碼,以用於您的應用程式原始程式碼。
注意
支援的帳戶類型 可以藉由參考 修改應用程式所支援的帳戶來變更。
新增平臺和 URL
平臺會指定您想要整合的應用程式類型。 重新導向 URI 是身分識別平台驗證伺服器在成功授權並獲授與安全性令牌後,傳送使用者的位置。
若要登入使用者,您的應用程式必須傳送具有指定為參數之重新導向 URI 的登入要求,而且它必須符合您在應用程式註冊中新增的任何重新導向 URI。
若要將您的應用程式類型指定至您的應用程式註冊,請遵循下列步驟:
- 在 [管理] 下,選取 [驗證]。
- 在 [平臺組態] 頁面上,選取 [[新增平臺],然後選取 [Web] 選項。
- 針對重新導向 URI ,請輸入,
http://localhost:3000/auth/redirect
。 - 在 Front-channel 註銷 URL下,輸入
https://localhost:5001/signout-callback-oidc
以進行註銷。 - 選擇 [設定] 以儲存變更。
新增應用程式用戶端密碼或憑證
建立已註冊應用程式的客戶端密碼。 應用程式會在要求令牌時,使用用戶端密碼來證明其身分識別:
- 從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 Web 應用程式用戶端密碼),以開啟其 概觀 頁面。
- 在 [管理] 底下,選取 [憑證 & 密碼>[客戶端密碼]>[新增客戶端密碼]。
- 在 [描述] 方塊中,輸入客戶端密碼的描述(例如,Web 應用程式用戶端密碼)。
- 在 [[到期] 的下方,選擇秘密有效的持續時間(依照您的組織安全性規則),然後選擇 [[新增]。
- 記錄秘密的 值。 您可以在稍後的步驟中使用此值進行設定。 在您離開 憑證和秘密之後,秘密的值將不會再顯示,而且無法透過任何方式擷取。 請確定您把它錄下來。
當您建立機密用戶端應用程式的認證時:
Microsoft建議您先使用憑證,而不是客戶端密碼,再將應用程式移至生產環境。 如需如何使用憑證的詳細資訊,請參閱 Microsoft身分識別平臺應用程式驗證憑證認證中的指示,。
基於測試目的,您可以建立自我簽署憑證,並將您的應用程式設定為向它進行驗證。 不過,在 生產時,您應該購買由知名憑證授權機構簽署的憑證,然後使用 Azure Key Vault 來管理憑證的存取和存續時間。
複製或下載範例 Web 應用程式
若要取得範例應用程式,您可以從 GitHub 複製它,或將它下載為 .zip 檔案。
下載 .zip 檔案,然後將它解壓縮到名稱長度少於 260 個字元或複製存放庫的檔案路徑:
若要複製範例,請開啟命令提示字元並流覽至您想要建立專案的位置,然後輸入下列命令:
git clone https://github.com/Azure-Samples/ms-identity-node.git
設定範例 Web 應用程式
若要使用範例應用程式登入使用者,您必須使用您的應用程式和租戶詳細資訊來更新範例應用程式。
在 ms-identity-node-main 資料夾中,開啟 App 資料夾中的 .env 檔案。 取代下列佔位符號:
變數 | 描述 | 範例 |
---|---|---|
Enter_the_Cloud_Instance_Id_Here |
註冊應用程式的 Azure 雲端實例 |
https://login.microsoftonline.com/ (包括尾端正斜線) |
Enter_the_Tenant_Info_here |
租用戶標識碼或主要網域 |
contoso.microsoft.com 或 aaaabbbb-0000-cccc-1111-dddd2222eeee |
Enter_the_Application_Id_Here |
您註冊之應用程式的用戶端識別碼 | 00001111-aaaa-2222-bbbb-3333cccc4444 |
Enter_the_Client_Secret_Here |
您註冊之應用程式的客戶端密碼 | A1b-C2d_E3f.H4i,J5k?L6m!N7o-P8q_R9s.T0u |
Enter_the_Graph_Endpoint_Here |
您的應用程式所呼叫的 Microsoft Graph API 雲端實例 |
https://graph.microsoft.com/ (包括結尾的正斜線符號) |
Enter_the_Express_Session_Secret_Here |
用來簽署 Express 會話 Cookie 的隨機字元字串 | A1b-C2d_E3f.H4... |
進行變更之後,您的檔案看起來應該類似下列代碼段:
CLOUD_INSTANCE=https://login.microsoftonline.com/
TENANT_ID=aaaabbbb-0000-cccc-1111-dddd2222eeee
CLIENT_ID=00001111-aaaa-2222-bbbb-3333cccc4444
CLIENT_SECRET=A1b-C2d_E3f.H4...
REDIRECT_URI=http://localhost:3000/auth/redirect
POST_LOGOUT_REDIRECT_URI=http://localhost:3000
GRAPH_API_ENDPOINT=https://graph.microsoft.com/
EXPRESS_SESSION_SECRET=6DP6v09eLiW7f1E65B8k
執行和測試範例 Web 應用程式
您已設定範例應用程式。 您可以繼續執行並測試它。
若要啟動伺服器,請從專案目錄內執行下列命令:
cd App npm install npm start
移至
http://localhost:3000/
。選取 登入 以開始登入過程。
第一次登入時,系統會提示您提供同意,以允許應用程式登入並存取配置檔。 成功登入之後,系統會將您重新導向回應用程式首頁。
應用程式的運作方式
範例會在localhost埠3000上裝載網頁伺服器。 當網頁瀏覽器存取此位址時,應用程式會轉譯首頁。 一旦用戶選取 [登入],應用程式就會透過 MSAL 節點連結庫所產生的 URL,將瀏覽器重新導向至Microsoft Entra 登入畫面。 在使用者同意之後,瀏覽器會將使用者重新導向回應用程式首頁,以及標識碼和存取令牌。
相關內容
在本快速入門中,您會使用範例網頁應用程式來示範如何在外部租戶中讓使用者登入。 範例應用程式會使用 Microsoft 驗證連結庫 來處理驗證。
開始之前,請在此頁面頂端使用 租用戶類型選取器 來選擇租用戶類型。 Microsoft Entra ID 提供兩個租戶配置,員工 和 外部。 員工組態設定是為了員工、內部應用程式和其他組織資源而設計的。 外部租戶是為面向客戶的應用程式設計的。
先決條件
- Visual Studio Code 或其他程式碼編輯器。
- Node.js。
- 外部租戶。 若要建立一個,請從下列方法中選擇:
- (建議)使用 Microsoft Entra External ID 擴充功能 直接在 Visual Studio Code 中設定外部租使用者。
- 在 Microsoft Entra 管理中心建立新的外部租戶。
註冊 Web 應用程式
若要讓應用程式能夠使用 Microsoft Entra 登入使用者,Microsoft Entra 外部標識碼必須知道您建立的應用程式。 應用程式註冊會建立應用程式與 Microsoft Entra 之間的信任關係。 當您註冊應用程式時,外部標識碼會產生稱為「應用程式」(用戶端)標識碼的唯一標識碼,這個值可用來在建立驗證要求時識別您的應用程式。
下列步驟示範如何在 Microsoft Entra 系統管理中心註冊您的應用程式:
以至少 應用程式開發人員身分登入 Microsoft Entra 系統管理中心。
如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示
,從 [目錄 + 訂用帳戶] 功能表切換至外部租使用者。
瀏覽至 身分識別>應用程式>應用程式註冊。
選擇 + 新增註冊
在 [註冊應用程式] 頁面中出現;
- 輸入一個具有意義的應用程式 名稱,該名稱將顯示給應用程式的使用者,例如 ciam-client-app。
- 在 [支援的帳戶類型] 下,選取 [僅限此組織目錄中的帳戶]。
選取 [[註冊]。
應用程式 概觀 窗格會在成功註冊時顯示。 記錄 應用程式(用戶端)標識碼,以用於您的應用程式原始程式碼。
新增平臺和 URL
平臺會指定您想要整合的應用程式類型。 重定向 URI 是指當使用者成功授權並獲得安全性令牌後,身分識別平台驗證伺服器將使用者傳送到的位置。
若要登入使用者,您的應用程式必須傳送具有指定為參數之重新導向 URI 的登入要求,而且它必須符合您在應用程式註冊中新增的任何重新導向 URI。
若要將您的應用程式類型指定至您的應用程式註冊,請遵循下列步驟:
- 在 [管理] 下,選取 [驗證]。
- 在 [平臺組態] 頁面上,選取 [[新增平臺],然後選取 [Web] 選項。
- 針對 重新導向 URI 輸入
http://localhost:3000/auth/redirect
。 - 選取 [配置] 以儲存變更。
新增應用程式客戶端密碼
建立已註冊應用程式的客戶端密碼。 應用程式會在要求令牌時,使用用戶端密碼來證明其身分識別:
- 從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 Web 應用程式用戶端密碼),以開啟其 概觀 頁面。
- 在 [管理] 底下,選取 [憑證 & 密碼>[客戶端密碼]>[新增客戶端密碼]。
- 在 [描述] 方塊中,輸入客戶端密碼的描述(例如,Web 應用程式用戶端密碼)。
- 在 到期底下,選擇秘密有效的持續時間(根據您的組織安全規則),然後選擇 新增。
- 記錄秘密的 值。 您可以在稍後的步驟中使用此值進行設定。 在您離開 憑證和秘密之後,秘密值將不再顯示,也無法透過任何方式擷取。 確保把它錄下來。
當您建立機密用戶端應用程式的認證時:
Microsoft建議您先使用憑證,而不是客戶端密碼,再將應用程式移至生產環境。 如需如何使用憑證的詳細資訊,請參閱 Microsoft身分識別平臺應用程式驗證憑證認證中的指示,。
基於測試目的,您可以建立自我簽署憑證,並將您的應用程式設定為向它進行驗證。 不過,生產中,您應該購買由知名證書頒發機構單位簽署的憑證,然後使用 Azure Key Vault 來管理憑證存取和存留期。
授與管理員同意
註冊應用程式之後,就會獲指派 User.Read 許可權。 不過,由於租使用者是外部租使用者,因此客戶使用者本身無法同意此許可權。 身為租戶管理員,您必須代表所有租戶中的使用者同意此許可權:
從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 ciam-client-app),以開啟其 [概觀] 頁面。
在 [管理] 下,選取 [API 許可權]。
- 選取 [為 <你的租用戶名稱>授予系統管理員同意],然後選取 [是]。
- 選取 [[重新整理],然後確認 已授與 <租使用者名稱> 出現在許可權 狀態 底下。
建立使用者流程
請遵循下列步驟來建立客戶可用來登入或註冊應用程式的使用者流程。
以至少 外部 ID 使用者流程管理員身分登入 Microsoft Entra 管理中心。
如果您有多個租使用者的存取權,請使用頂端功能表中的 [設定] 圖示
,從 [目錄 + 訂用帳戶] 功能表切換至外部租使用者。
瀏覽至 身分識別>外部身分識別>使用者流程。
選取 [+ 新增使用者流程]。
在 [建立] 頁面上:
輸入使用者流程的 名稱,例如 SignInSignUpSample。
在 識別提供者 的列表中,選取 電子郵件帳戶。 此識別提供者可讓使用者使用其電子郵件位址登入或註冊。
注意
只有在您設定與他們同盟之後,才會在這裡列出其他識別提供者。 例如,如果您設定與 Google、Facebook、Apple 或 OIDC 身分識別提供者的同盟,您將能夠在這裡選取這些額外的識別提供者。
在 [電子郵件帳戶下,您可以選取兩個選項之一。 在本教學課程中,選取 [電子郵件與密碼。
- 具有密碼的電子郵件:允許新使用者以電子郵件地址作為登入名稱和密碼作為其第一個因素認證來註冊和登入。
- 電子郵件一次性密碼:允許新使用者使用電子郵件地址作為登入名稱和電子郵件一次性密碼作為其第一個因素認證來註冊和登入。 必須在租用戶層級啟用電子郵件一次性密碼(所有識別提供者>電子郵件一次性密碼),此選項才能在使用者流程層級取得。
在 [使用者屬性下,選擇您想要在註冊時從使用者收集的屬性。 選取 [顯示更多],您可以選擇 國家/地區的屬性和宣告、顯示名稱,以及 郵遞區編碼。 選取 [確定] 。 (只有在使用者第一次註冊時,才會提示使用者輸入屬性。
選取 建立。 新的使用者流程會出現在 使用者流程 清單中。 如有必要,請重新整理頁面。
若要啟用自助式密碼重設,請使用 啟用自助式密碼重設 一文中的步驟。
將 Web 應用程式與使用者流程產生關聯
若要讓客戶使用者在使用您的應用程式時看到註冊或登入體驗,您必須將您的應用程式與使用者流程產生關聯。 雖然許多應用程式可以與您的使用者流程相關聯,但單一應用程式只能與一個使用者流程相關聯。
在側邊欄選單上,選取 [身分識別]。
選取 [外部身分識別],然後 [使用者流程]。
在 [使用者流程] 頁面中,選取您稍早建立 使用者流程名稱,例如,SignInSignUpSample。
在 [使用] 下,選取 [應用程式]。
選擇 添加應用程式。
從清單中選取應用程式,例如 ciam-client-app,或使用搜尋方塊來尋找應用程式,然後加以選取。
選擇 ,選擇。
一旦您將應用程式與使用者流程產生關聯,您就可以模擬用戶註冊或登入體驗,從 Microsoft Entra 系統管理中心內模擬用戶的註冊或登入體驗,以測試您的使用者流程。 若要這樣做,請使用 測試註冊和登入使用者流程中的步驟。
複製或下載範例 Web 應用程式
若要取得範例應用程式,您可以從 GitHub 複製它,或將它下載為 .zip 檔案:
若要複製範例,請開啟命令提示字元並流覽至您想要建立專案的位置,然後輸入下列命令:
git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
或者,下載範例 .zip 檔案,然後將它解壓縮到名稱長度少於 260 個字元的檔案路徑。
安裝專案相依性
開啟主控台視窗,並變更為包含 Node.js 範例應用程式的目錄:
cd 1-Authentication\5-sign-in-express\App
執行下列命令來安裝應用程式相依性:
npm install
設定範例 Web 應用程式
若要使用範例應用程式讓使用者登入,您必須以您的應用程式和租戶詳細資料來更新程式:
在您的程式代碼編輯器中,開啟 應用程式\authConfig.js 檔案。
尋找佔位符:
-
Enter_the_Application_Id_Here
,並將它取代為您稍早註冊之應用程式的應用程式(用戶端)標識碼。 -
Enter_the_Tenant_Subdomain_Here
,並將它取代為 Directory (tenant) 子域。 例如,如果您的租戶的主要網域是contoso.onmicrosoft.com
,請使用contoso
。 如果您沒有租戶名稱,請瞭解如何 查看租戶詳細資料。 -
Enter_the_Client_Secret_Here
,接著把它替換為您稍早複製的應用程式密鑰。
-
執行和測試範例 Web 應用程式
您現在可以測試 web 應用程式 Node.js 範例。 您必須啟動 Node.js 伺服器,並在 http://localhost:3000
透過瀏覽器存取伺服器。
在您的終端機中,執行下列命令:
npm start
開啟瀏覽器,然後移至
http://localhost:3000
。 您應該會看到類似下列螢幕快照的頁面:在頁面完成載入後,當出現提示時,選取 [登入]。
在登入頁面上,輸入 電子郵件地址,選取 [下一步],輸入 密碼,然後選取 [登入]。 如果您沒有帳戶,請選取 [沒有帳戶?建立一個 連結,以啟動註冊流程。
如果您選擇註冊選項,請在填寫電子郵件、單次密碼、新密碼和更多帳戶詳細數據之後,完成整個註冊流程。 您會看到類似下列螢幕快照的頁面。 如果您選擇登入選項,您會看到類似的頁面。
選取 註銷 將使用者註銷 Web 應用程式,或選取 檢視標識符令牌宣告 以檢視 Microsoft Entra 所傳回的標識符令牌宣告。
運作方式
當使用者選取 登入 連結時,應用程式會起始驗證要求,並將使用者重新導向至Microsoft Entra External ID。 在出現的登入或註冊頁面上,一旦使用者成功登入或建立帳戶,Microsoft Entra External ID 會將標識元令牌傳回給應用程式。 應用程式會驗證標識碼令牌、讀取宣告,並將安全頁面傳回給使用者。
當使用者選取 [註銷 連結時,應用程式會清除其會話,然後將使用者重新導向至Microsoft Entra External ID 註銷端點,以通知使用者已註銷。
如果您想要建置類似您所執行範例的應用程式,請完成在您自己的 Node.js Web 應用程式登入使用者一文 中的步驟。