Exploring Microsoft and Cloud Identity: An Introduction of Azure Active Directory B2C

JJ Chen
6 min readFeb 12, 2024

--

本篇文章將探索微軟如何為雲端和混合環境提供身分識別與存取權管理結合Oauth2與OpenID概念,理解Microsoft Entra ID和Azure Active Directory B2C 服務。

在應用程式開發的現代領域,保障使用者身份的認證和授權流程是不可或缺的。本文將先介紹 Microsoft Identity 的概念,尤其著重於 Azure AD B2C,以及它如何自動處理授權碼、令牌,並整合 Microsoft Graph API,為開發者提供更強大的身份管理解決方案。

# 認證和授權

在應用程式中,認證(Authentication)和授權(Authorization)是確保安全的兩大支柱。認證確保使用者是誰他們聲稱是,而授權確保他們有權訪問的適當資源。Microsoft Identity 提供了豐富的工具和服務,使得實現這兩個過程變得更加容易。

1. 認證 (Authentication):

  • 認證是確認實體(例如使用者、應用程式或服務)的身分的過程。
  • 它通常涉及使用者名稱和密碼,以驗證實體是否是其聲稱的身分。
  • 認證確保只有授權的實體可以存取特定資源。

2. 授權 (Authorization):

  • 授權是設定許可權,以評估實體對資源的存取權或功能。
  • 它指定了允許實體存取的功能、資源或資料,並規定如何使用這些資源。

# OAuth 2.0 Authorization Code Flow

  1. 客戶端應用程序攜帶必要參數,向授權伺服器(Authorization Server)發送請求
  2. 將用戶重新定向到Redirection URI,以獲得授權並取得 Authorization Code。
  3. 客戶端使用 Authorization Code 向令牌端點(Token Endpoint)要求 Access Token。
  4. 將 Access Token 發送給客戶端,用於訪問受保護的資源。
https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow

# OpenID Connect

OpenID Connect 在 OAuth 2.0 授權碼流程的基礎上,加入了身份驗證的功能。當客戶端應用程式獲得 Access Token 的同時,也會獲得一個 ID Token。

ID Token 是一個已簽署的 JWT,其中包含了關於使用者身份的資訊,例如使用者的唯一識別碼、姓名、電子郵件地址等。 客戶端應用程式可以利用這個 ID Token 來驗證使用者的身份。

# Microsoft Identity 整合 Authorize、Token 和 Graph API

Microsoft Identity 幫助開發者簡化身份管理的複雜性。透過 Azure AD B2C,你可以自動取得授權碼(Auth Code)和存取令牌(Access Token),並輕鬆整合 Microsoft Graph API,以檢索或更新有關使用者的資訊。

這使得在使用者完成身份驗證或註冊時,應用程式可以方便地獲取有關使用者的資料,而不需要額外的程式碼。不僅讓開發者專注於核心業務邏輯,同時確保身份管理的高度安全性。

https://learn.microsoft.com/zh-tw/azure/active-directory-b2c/b2c-global-identity-solutions

在 Azure AD B2C 中,有兩種方式可以提供身分識別使用者體驗:

  • 使用者流程(User Flows)是預先定義的內建、可設定原則,可讓您在短短幾分鐘內建立註冊、登入和原則編輯體驗。
  • 自訂原則可讓您建立自己的使用者旅程圖,以進行使用者流程未支援的複雜身分識別體驗案例。 Azure AD B2C 使用自訂原則來提供擴充性。

# Microsoft Entra ID(原Azure Active Directory)和Azure AD B2C

Azure 所提供的Microsoft Entra ID(原Azure Active Directory 已更名為 Microsoft Entra ID)和Azure AD B2C 服務皆可做到身分識別,那這兩個服務有差在哪呢?為什麼今天要選用B2C 作為範例?

兩者服務在技術上並無太大差異,但其用途上卻截然不同!

Microsoft Entra ID 主要針對企業內部使用者,提供統一的身份管理和存取控制。相反地,Azure AD B2C 專注於面向大量消費者的身份管理,除了固定流程模組(User flow)外,也提供開發者可客製化的解決方案,同時支援第三方身份識別提供者(IDP),以適應多元的使用者。

也就是說,對於自行開發網站,欲將服務開放給用戶存取使用的,就會選用B2C做認證和授權。

1. Azure AD B2C:

  • 用途:Azure AD B2C 是一個面向客戶的身分識別和存取管理 (CIAM) 解決方案。它允許企業為消費者和客戶建立應用程式,並使用 Azure AD B2C 進行身分識別和存取權管理。
  • 適用對象:開發人員可以使用 Azure AD B2C 為數百萬名消費者、客戶或公民建立應用程式。

2. Microsoft Entra ID

  • 用途:Microsoft Entra ID 是一個組織整合式的身分識別和存取管理 (CIAM) 解決方案,用於管理所有外部身分識別。
  • 適用對象:Microsoft Entra ID 適用於與外部組織互動的場景,例如與合作夥伴、經銷商、供應商或廠商共同作業,或者是應用程式的開發人員。

Azure Active Directory B2C to a Spring web app

第三方登入 OpenID

若喜歡我在 Medium 的內容,可以拍個手(Claps)讓我知道你/妳喜不喜歡這篇文章:
拍 5 下:我們一起加加油👏
拍 10 下:覺得文章內容對你很有幫助

--

--