feat(web): 增加统一认证接入与运维页面

系统设置新增统一认证配对、验证、激活、重验证、回滚与禁用流程,安全事件改为统一能力状态。前端登录入口运行时读取公开配置,不再依赖 VITE_OIDC 构建变量。\n\n验证:web 31 项测试;web typecheck;pnpm lint;web production build
This commit is contained in:
2026-07-17 12:18:26 +08:00
parent b175d545ff
commit e0a356ee0c
11 changed files with 675 additions and 191 deletions
+111
View File
@@ -988,6 +988,117 @@ export interface SecurityEventConnectionResponse {
prerequisites?: SecurityEventConnectionPrerequisites;
}
export type IdentityRevisionState = 'draft' | 'validated' | 'active' | 'superseded' | 'failed';
export interface IdentityConfigurationRevision {
id: string;
state: IdentityRevisionState;
schemaVersion: number;
authCenterUrl: string;
issuer?: string;
tenantId?: string;
applicationId?: string;
audience?: string;
browserClientId?: string;
machineClientId?: string;
scopes: string[];
capabilities: string[];
rolePrefix: string;
localTenantKey: string;
publicBaseUrl: string;
webBaseUrl: string;
jitEnabled: boolean;
legacyJwtEnabled: boolean;
tokenIntrospection: boolean;
sessionRevocation: boolean;
securityEventIssuer?: string;
securityEventConfigurationUrl?: string;
securityEventAudience?: string;
sessionIdleSeconds: number;
sessionAbsoluteSeconds: number;
sessionRefreshSeconds: number;
version: number;
lastErrorCategory?: string;
lastTraceId?: string;
lastAuditId?: string;
validatedAt?: string;
activatedAt?: string;
supersededAt?: string;
createdAt: string;
updatedAt: string;
}
export type IdentityPairingStatus =
| 'metadata_pending'
| 'preparing'
| 'ready'
| 'credentials_saved'
| 'completed'
| 'failed'
| 'expired';
export interface IdentityPairingExchange {
id: string;
revisionId: string;
remoteExchangeId: string;
status: IdentityPairingStatus;
remoteVersion: number;
expiresAt: string;
version: number;
lastErrorCategory?: string;
authCenterAuditId?: string;
lastTraceId?: string;
createdAt: string;
updatedAt: string;
}
export interface IdentityRuntimeStatus {
enabled: boolean;
revisionId?: string;
login: string;
jit: string;
tokenIntrospection: string;
sessionRevocation: string;
lastTraceId?: string;
lastAuditId?: string;
lastErrorCategory?: string;
}
export interface IdentityConfigurationView {
active: IdentityConfigurationRevision | null;
draft: IdentityConfigurationRevision | null;
previous: IdentityConfigurationRevision | null;
pairing?: IdentityPairingExchange;
runtime: IdentityRuntimeStatus;
}
export interface PublicIdentityConfiguration {
enabled: boolean;
oidcLogin: boolean;
loginUrl?: string;
logoutUrl?: string;
status: string;
}
export interface IdentityPairingInput {
authCenterUrl: string;
onboardingCode: string;
publicBaseUrl: string;
webBaseUrl: string;
localTenantKey: string;
legacyJwtEnabled: boolean;
}
export interface IdentityRevisionPolicyUpdate {
localTenantKey?: string;
rolePrefix?: string;
jitEnabled?: boolean;
legacyJwtEnabled?: boolean;
sessionIdleSeconds?: number;
sessionAbsoluteSeconds?: number;
sessionRefreshSeconds?: number;
}
export interface GatewayTask {
id: string;
kind: string;