共用方式為


快速入門:在範例 Web 應用程式中登入使用者

在本快速入門中,您將使用範例 Web 應用程式,展示如何在您的工作租戶中登入使用者並呼叫 Microsoft Graph API。 範例應用程式會使用 Microsoft 驗證連結庫 來處理驗證。

開始之前,請使用此頁面頂端的 租用戶類型選取器 選擇租用戶類型。 Microsoft Entra ID 提供兩個租戶設定:員工外部。 工作群組租戶配置適用於員工、內部應用程式和其他組織資源。 外部租戶是為客戶使用的應用程式而設計的。

先決條件

  • 具有有效訂閱的 Azure 帳戶。 如果您還沒有帳戶,免費建立帳戶
  • 此 Azure 帳戶必須具有管理應用程式的權限。 下列任何 Microsoft Entra 角色都包含必要的權限:
    • 應用程式管理員
    • 應用程式開發人員
    • 雲端應用程式管理員
  • 員工租戶。 您可以使用預設目錄 或設立新的租戶
  • Visual Studio Code 或其他程式碼編輯器。
  • 使用下列設定,在 Microsoft Entra 系統管理中心註冊新的應用程式。 如需詳細資訊,請參閱 註冊應用程式
    • 名稱identity-client-web-app
    • 支援的帳戶類型僅限此組織目錄中的帳戶(單一租使用者)
    • 平台組態: Web
    • 重新導向 URIhttp://localhost:3000/auth/redirect
    • 前端通道註銷 URLhttps://localhost:5001/signout-callback-oidc
  • Node.js

新增應用程式用戶端密碼或憑證

建立已註冊應用程式的客戶端密碼。 應用程式會在要求令牌時,使用用戶端密碼來證明其身分識別:

  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 Web 應用程式用戶端密碼),以開啟其 概觀 頁面。
  2. 在 [管理] 底下,選取 [憑證 & 密碼>[客戶端密碼]>[新增客戶端密碼]
  3. 在 [描述] 方塊中,輸入客戶端密碼的描述(例如,Web 應用程式用戶端密碼)。
  4. 在 [[到期] 的下方,選擇秘密有效的持續時間(依照您的組織安全性規則),然後選擇 [[新增]。
  5. 記錄秘密的 。 您可以在稍後的步驟中使用此值進行設定。 在您離開 憑證和秘密之後,秘密的值將不會再顯示,而且無法透過任何方式擷取。 請確定您把它錄下來。

當您建立機密用戶端應用程式的認證時:

  • 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 資料夾中,開啟 App/.env 檔案,然後取代下列佔位符:

變數 描述 範例
Enter_the_Cloud_Instance_Id_Here 註冊應用程式的 Azure 雲端實例 https://login.microsoftonline.com/ (包括尾端正斜線)
Enter_the_Tenant_Info_here 租用戶標識碼或主要網域名稱 contoso.microsoft.comaaaabbbb-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 應用程式

您已設定範例應用程式。 您可以繼續執行並測試它。

  1. 若要啟動伺服器,請從專案目錄內執行下列命令:

    cd App
    npm install
    npm start
    
  2. 移至 http://localhost:3000/

  3. 選取 登入 以開始登入過程。

第一次登入時,系統會提示您提供同意,以允許應用程式登入並存取配置檔。 成功登入之後,系統會將您重新導向回應用程式首頁。

應用程式的運作方式

範例會在localhost埠3000上裝載網頁伺服器。 當網頁瀏覽器存取此位址時,應用程式會轉譯首頁。 一旦用戶選取 [登入],應用程式就會透過 MSAL 節點連結庫所產生的 URL,將瀏覽器重新導向至Microsoft Entra 登入畫面。 在使用者同意之後,瀏覽器會將使用者重新導向回應用程式首頁,以及標識碼和存取令牌。

在本快速入門中,您會使用範例網頁應用程式來示範如何在外部租戶中讓使用者登入。 範例應用程式會使用 Microsoft 驗證連結庫 來處理驗證。

開始之前,請使用此頁面頂端的 租用戶類型選取器 選擇租用戶類型。 Microsoft Entra ID 提供兩個租戶設定:員工外部。 工作群組租戶配置適用於員工、內部應用程式和其他組織資源。 外部租戶是為客戶使用的應用程式而設計的。

先決條件

  • 使用下列設定在 Microsoft Entra 系統管理中心註冊新的應用程式,並從應用程式 概觀 頁面記錄其標識符。 如需詳細資訊,請參閱 註冊應用程式
    • 名稱identity-client-web-app
    • 支援的帳戶類型僅限此組織目錄中的帳戶(單一租使用者)
    • 平台組態: Web
    • 重新導向 URIhttp://localhost:3000/auth/redirect
  • 將您的應用程式新增至使用者流程
  • Node.js

新增應用程式客戶端密碼

建立已註冊應用程式的客戶端密碼。 應用程式會在要求令牌時,使用用戶端密碼來證明其身分識別:

  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 Web 應用程式用戶端密碼),以開啟其 概觀 頁面。
  2. 在 [管理] 底下,選取 [憑證 & 密碼>[客戶端密碼]>[新增客戶端密碼]
  3. 在 [描述] 方塊中,輸入客戶端密碼的描述(例如,Web 應用程式用戶端密碼)。
  4. 在 [[到期] 的下方,選擇秘密有效的持續時間(依照您的組織安全性規則),然後選擇 [[新增]。
  5. 記錄秘密的 。 您可以在稍後的步驟中使用此值進行設定。 在您離開 憑證和秘密之後,秘密的值將不會再顯示,而且無法透過任何方式擷取。 請確定您把它錄下來。

當您建立機密用戶端應用程式的認證時:

  • Microsoft建議您先使用憑證,而不是客戶端密碼,再將應用程式移至生產環境。 如需如何使用憑證的詳細資訊,請參閱 Microsoft身分識別平臺應用程式驗證憑證認證中的指示,

  • 基於測試目的,您可以建立自我簽署憑證,並將您的應用程式設定為向它進行驗證。 不過,在 生產時,您應該購買由知名憑證授權機構簽署的憑證,然後使用 Azure Key Vault 來管理憑證的存取和存續時間。

註冊應用程式之後,就會獲指派 User.Read 許可權。 不過,由於租使用者是外部租使用者,因此客戶使用者本身無法同意此許可權。 身為租戶管理員,您必須代表所有租戶中的使用者同意此許可權:

  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 ciam-client-app),以開啟其 [概觀] 頁面。

  2. 在 [管理] 下,選取 [API 許可權]

    1. 選取 [為 <你的租用戶名稱>授予系統管理員同意],然後選取 []。
    2. 選取 重新整理,然後確認 已授與 您的租戶名稱 的狀態顯示在許可權狀態下。

複製或下載範例 Web 應用程式

若要取得範例應用程式,您可以從 GitHub 複製它,或將它下載為 .zip 檔案:

  • 若要複製範例,請開啟命令提示字元並流覽至您想要建立專案的位置,然後輸入下列命令:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • 或者,下載範例 .zip 檔案,然後將它解壓縮到名稱長度少於 260 個字元的檔案路徑。

安裝專案相依性

  1. 開啟主控台視窗,並變更為包含 Node.js 範例應用程式的目錄:

    cd 1-Authentication\5-sign-in-express\App
    
  2. 執行下列命令來安裝應用程式相依性:

    npm install
    

設定範例 Web 應用程式

若要使用範例應用程式登入使用者,您必須使用您的應用程式和租戶詳細資訊來更新範例應用程式。

  1. 在您的程式代碼編輯器中,開啟 應用程式\authConfig.js 檔案。

  2. 尋找佔位符:

    • 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透過瀏覽器存取伺服器。

  1. 在您的終端機中,執行下列命令:

    npm start 
    
  2. 開啟瀏覽器,然後移至 http://localhost:3000。 您應該會看到類似下列螢幕快照的頁面:

    登入節點 Web 應用程式的螢幕快照。

  3. 在頁面完成載入後,當出現提示時,選取 [登入]。

  4. 在登入頁面上,輸入 電子郵件地址,選取 [下一步],輸入 密碼,然後選取 [登入]。 如果您沒有帳戶,請選取 [沒有帳戶?建立一個 連結,以啟動註冊流程。

  5. 如果您選擇註冊選項,請在填寫電子郵件、單次密碼、新密碼和更多帳戶詳細數據之後,完成整個註冊流程。 您會看到類似下列螢幕快照的頁面。 如果您選擇登入選項,您會看到類似的頁面。

    檢視識別碼令牌聲明的螢幕快照。

  6. 選取 註銷 將使用者註銷 Web 應用程式,或選取 檢視標識符令牌宣告 以檢視 Microsoft Entra 所傳回的標識符令牌宣告。

運作方式

當使用者選取 登入 連結時,應用程式會起始驗證要求,並將使用者重新導向至Microsoft Entra External ID。 在出現的登入或註冊頁面上,一旦使用者成功登入或建立帳戶,Microsoft Entra External ID 會將標識元令牌傳回給應用程式。 應用程式會驗證標識碼令牌、讀取宣告,並將安全頁面傳回給使用者。

當使用者選取 [註銷 連結時,應用程式會清除其會話,然後將使用者重新導向至Microsoft Entra External ID 註銷端點,以通知使用者已註銷。

如果您想要建置類似您所執行範例的應用程式,請完成在您自己的 Node.js Web 應用程式登入使用者一文 中的步驟