共用方式為


存取 Azure AD B2C 稽核記錄

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

備註

這項功能處於公開預覽狀態。

Azure Active Directory B2C (Azure AD B2C) 會發出稽核記錄,其中包含關於 B2C 資源、發行的權杖和系統管理員存取的活動資訊。 本文提供稽核記錄中可用資訊的簡短概觀,以及如何存取 Azure AD B2C 租使用者此數據的指示。

稽核記錄事件只會保留 七天。 如果您需要較長的保留期間,請規劃使用下列其中一種方法來下載和儲存您的記錄。

備註

您無法在 Azure 入口網站中Microsoft Entra IDAzure AD B2C 頁面的 [使用者] 區段底下看到個別 Azure AD B2C 應用程式的使用者登入。 該處的登入事件會顯示用戶活動,但無法與使用者登入的 B2C 應用程式相互關聯。 您必須使用此稽核記錄,如本文進一步說明。

稽核記錄 B2C 類別中可用的活動概觀

稽核記錄中的 B2C 類別包含下列類型的活動:

活動類型 說明
授權 關於授權使用者存取 B2C 資源的活動(例如,存取 B2C 原則清單的系統管理員)。
目錄 當系統管理員使用 Azure 入口網站登入時所擷取的目錄屬性相關活動。
應用程式 在 B2C 應用程式上進行建立、讀取、更新和刪除 (CRUD) 操作。
鑰匙 B2C 金鑰容器中儲存之金鑰的 CRUD 作業。
資源 B2C 資源的 CRUD 作業。 例如,政策和識別提供者。
認證 驗證使用者認證和令牌發行。

如需用戶物件 CRUD 活動,請參閱 Core Directory 類別。

範例活動

來自 Azure 入口網站的此範例影像會顯示當使用者使用外部身分識別提供者登入時所擷取的數據,在此案例中為 Facebook:

Azure 入口網站中的 [稽核記錄活動詳細數據] 頁面範例

活動詳細資料面板包含下列相關信息:

章節 領域 說明
活動 名稱 發生了哪些活動。 例如, 對應用程式發出id_token,這會結束實際的使用者登入。
由 (參與者)啟動 ObjectId (物件識別碼) 使用者登入之 B2C 應用程式 的物件識別碼 。 Azure 入口網站中看不到此標識符,但可透過 Microsoft Graph API 存取。
由 (參與者)啟動 Spn 使用者正在登入的 B2C 應用程式的 應用程式識別碼
目標(秒) ObjectId (物件識別碼) 正在登入之用戶 的物件標識碼
其他詳細資料 租戶識別碼 (TenantId) Azure AD B2C 租戶的 租戶 ID
其他詳細資料 PolicyId(政策識別碼) 用於用戶登入的使用者流程政策 標識碼
其他詳細資料 ApplicationId 使用者正在登入的 B2C 應用程式的 應用程式識別碼

在 Azure 入口網站中檢視稽核記錄

Azure 入口網站可讓您存取 Azure AD B2C 租使用者中的稽核記錄事件。

  1. 登入 Azure 入口網站
  2. 切換至包含 Azure AD B2C 租使用者的目錄,然後流覽至 Azure AD B2C
  3. 在左側功能表中的 [ 活動] 下,選取 [ 稽核記錄]。

會顯示過去七天記錄的活動事件清單。

在 Azure 入口網站中使用兩個活動事件的範例篩選

有數個篩選選項可供使用,包括:

  • 活動資源類型 - 依 可用活動概觀 一節中表格中顯示的活動類型進行篩選。
  • Date - 篩選所顯示活動的日期範圍。

如果您選取清單中的數據列,就會顯示事件的活動詳細數據。

若要在逗號分隔值 (CSV) 檔案中下載活動事件清單,請選取 [ 下載]。

使用 Microsoft Entra 報告 API 取得稽核記錄

稽核記錄會發佈至與其他 Microsoft活動相同的管線,以便透過 Microsoft Entra 報告 API 來存取。 如需詳細資訊,請參閱 開始使用 Microsoft Entra 報告 API

啟用報告 API 存取

若要透過腳本或應用程式來存取 Microsoft Entra 報表 API,您需要在您的 Azure AD B2C 租使用者中註冊一個具有下列 API 許可權的應用程式。 您可以在 B2C 租使用者內的現有應用程式註冊上啟用這些許可權,或建立特別用於稽核記錄自動化的新許可權。

  • Microsoft Graph > 應用程式權限 > 稽核日誌 AuditLog.Read.All >

請遵循下列文章中的步驟,以必要的許可權註冊應用程式:

使用 Microsoft Graph 管理 Azure AD B2C

註冊具有適當許可權的應用程式之後,請參閱本文稍後的PowerShell腳本一節,以取得如何使用腳本取得活動事件的範例。

存取 API

若要透過 API 下載 Azure AD B2C 稽核記錄事件,請篩選類別上的 B2C 記錄。 若要依類別篩選,請在呼叫 Microsoft Entra 報告 API 端點時,使用 filter 查詢字串參數。

https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?$filter=loggedByService eq 'B2C' and activityDateTime gt 2019-09-10T02:28:17Z

PowerShell 指令碼

下列 PowerShell 腳本示範如何查詢Microsoft Entra 報告 API 的範例。 查詢 API 之後,它會將記錄的事件列印至標準輸出,然後將 JSON 輸出寫入檔案。

您可以在 Azure Cloud Shell 中嘗試此腳本。 請務必使用您的應用程式標識碼、客戶端密碼,以及 Azure AD B2C 租使用者的名稱來更新它。

# This script requires an application registration that's granted Microsoft Graph API permission
# https://learn.microsoft.com/azure/active-directory-b2c/microsoft-graph-get-started

# Constants
$ClientID       = "your-client-application-id-here"       # Insert your application's client ID, a GUID
$ClientSecret   = "your-client-application-secret-here"   # Insert your application's client secret value
$tenantdomain   = "your-b2c-tenant.onmicrosoft.com"       # Insert your Azure AD B2C tenant domain name

$loginURL       = "https://login.microsoftonline.com"
$resource       = "https://graph.microsoft.com"           # Microsoft Graph API resource URI
$7daysago       = "{0:s}" -f (get-date).AddDays(-7) + "Z" # Use 'AddMinutes(-5)' to decrement minutes, for example
Write-Output "Searching for events starting $7daysago"

# Create HTTP header, get an OAuth2 access token based on client id, secret and tenant domain
$body       = @{grant_type="client_credentials";resource=$resource;client_id=$ClientID;client_secret=$ClientSecret}
$oauth      = Invoke-RestMethod -Method Post -Uri $loginURL/$tenantdomain/oauth2/token?api-version=1.0 -Body $body

# Parse audit report items, save output to file(s): auditX.json, where X = 0 through n for number of nextLink pages
if ($oauth.access_token -ne $null) {
    $i=0
    $headerParams = @{'Authorization'="$($oauth.token_type) $($oauth.access_token)"}
    $url = "https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?`$filter=loggedByService eq 'B2C' and activityDateTime gt  " + $7daysago

    # loop through each query page (1 through n)
    Do {
        # display each event on the console window
        Write-Output "Fetching data using Uri: $url"
        $myReport = (Invoke-WebRequest -UseBasicParsing -Headers $headerParams -Uri $url)
        foreach ($event in ($myReport.Content | ConvertFrom-Json).value) {
            Write-Output ($event | ConvertTo-Json)
        }

        # save the query page to an output file
        Write-Output "Save the output to a file audit$i.json"
        $myReport.Content | Out-File -FilePath audit$i.json -Force
        $url = ($myReport.Content | ConvertFrom-Json).'@odata.nextLink'
        $i = $i+1
    } while($url -ne $null)
} else {
    Write-Host "ERROR: No Access Token"
}

以下是本文稍早所示範例活動事件的 JSON 表示法:

{
    "id": "B2C_DQO3J_4984536",
    "category": "Authentication",
    "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
    "result": "success",
    "resultReason": "N/A",
    "activityDisplayName": "Issue an id_token to the application",
    "activityDateTime": "2019-09-14T18:13:17.0618117Z",
    "loggedByService": "B2C",
    "operationType": "",
    "initiatedBy": {
        "user": null,
        "app": {
            "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
            "displayName": null,
            "servicePrincipalId": null,
            "servicePrincipalName": "00000000-0000-0000-0000-000000000000"
        }
    },
    "targetResources": [
        {
            "id": "00000000-0000-0000-0000-000000000000",
            "displayName": null,
            "type": "User",
            "userPrincipalName": null,
            "groupType": null,
            "modifiedProperties": []
        }
    ],
    "additionalDetails": [
        {
            "key": "TenantId",
            "value": "test.onmicrosoft.com"
        },
        {
            "key": "PolicyId",
            "value": "B2C_1A_signup_signin"
        },
        {
            "key": "ApplicationId",
            "value": "00000000-0000-0000-0000-000000000000"
        },
        {
            "key": "Client",
            "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
        },
        {
            "key": "IdentityProviderName",
            "value": "facebook"
        },
        {
            "key": "IdentityProviderApplicationId",
            "value": "0000000000000000"
        },
        {
            "key": "ClientIpAddress",
            "value": "127.0.0.1"
        }
    ]
}

後續步驟

您可以自動化其他系統管理工作,例如使用 Microsoft Graph 管理 Azure AD B2C 用戶帳戶