diff --git a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx
index d02c3e6c..a12b2eea 100644
--- a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx
+++ b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx
@@ -65,6 +65,7 @@ test('deduplicates vehicle candidates by VIN and renders granted vehicles plate
expect(directoryMetrics).toHaveTextContent('车辆授权1当前范围合计');
expect(customer).toHaveClass('semi-button', 'v2-user-list-item');
expect(customer.closest('.semi-list-item')).toHaveClass('v2-user-list-row');
+ expect(customer.querySelector('.v2-user-provider-tag')).toHaveTextContent('本地');
expect(customer).toHaveAttribute('aria-pressed', 'false');
expect(customer).toHaveAttribute('aria-expanded', 'false');
expect(document.querySelector('.v2-user-editor-sidesheet')).not.toBeInTheDocument();
diff --git a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx
index 16dd1976..e4b790c2 100644
--- a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx
+++ b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx
@@ -113,6 +113,12 @@ function accessBadgeColor(color: CustomerAccessState['color']): WorkspaceSideShe
return color;
}
+function authProviderMeta(provider?: string) {
+ const normalized = provider?.trim();
+ if (!normalized || normalized === 'local') return { label: '本地', color: 'grey' as const, title: '本地账号' };
+ return { label: normalized, color: 'cyan' as const, title: `外部身份源:${normalized}` };
+}
+
export default function UsersPage() {
const queryClient = useQueryClient();
const mobileLayout = useMobileLayout();
@@ -545,6 +551,7 @@ export default function UsersPage() {
emptyContent={}
renderItem={(user) => {
const accessState = customerAccessState(user.status, user.menuKeys.length, user.vehicles.length);
+ const authProvider = authProviderMeta(user.authProvider);
return