public ApiAuditSubject(IHttpContextAccessor accessor, AuditLoggingConfiguration auditLoggingConfiguration) { var subClaim = accessor.HttpContext.User.FindFirst(auditLoggingConfiguration.SubjectIdentifierClaim); var nameClaim = accessor.HttpContext.User.FindFirst(auditLoggingConfiguration.SubjectNameClaim); var clientIdClaim = accessor.HttpContext.User.FindFirst(auditLoggingConfiguration.ClientIdClaim); SubjectIdentifier = subClaim == null ? clientIdClaim.Value : subClaim.Value; SubjectName = subClaim == null ? clientIdClaim.Value : nameClaim?.Value; SubjectType = subClaim == null ? AuditSubjectTypes.Machine : AuditSubjectTypes.User; SubjectAdditionalData = new { RemoteIpAddress = accessor.HttpContext.Connection?.RemoteIpAddress?.ToString(), LocalIpAddress = accessor.HttpContext.Connection?.LocalIpAddress?.ToString(), Claims = accessor.HttpContext.User.Claims?.Select(x => new { x.Type, x.Value }) }; }
public static IServiceCollection AddAuditEventLogging <TAuditLoggingDbContext, TAuditLog>(this IServiceCollection services, AuditLoggingConfiguration auditLoggingConfiguration) where TAuditLog : AuditLog, new() where TAuditLoggingDbContext : IAuditLoggingDbContext <TAuditLog> { services.AddAuditLogging(options => { options.Source = auditLoggingConfiguration.Source; }) .AddDefaultHttpEventData(subjectOptions => { subjectOptions.SubjectIdentifierClaim = auditLoggingConfiguration.SubjectIdentifierClaim; subjectOptions.SubjectNameClaim = auditLoggingConfiguration.SubjectNameClaim; }, actionOptions => { actionOptions.IncludeFormVariables = auditLoggingConfiguration.IncludeFormVariables; }) .AddAuditSinks <DatabaseAuditEventLoggerSink <TAuditLog> >(); // repository for library services.AddTransient <IAuditLoggingRepository <TAuditLog>, AuditLoggingRepository <TAuditLoggingDbContext, TAuditLog> >(); // repository and service for admin services.AddTransient <IAuditLogRepository <TAuditLog>, AuditLogRepository <TAuditLoggingDbContext, TAuditLog> >(); services.AddTransient <IAuditLogService, AuditLogService <TAuditLog> >(); return(services); }
public MockApiAuditSubject(IHttpContextAccessor accessor, AuditLoggingConfiguration auditLoggingConfiguration) { }