Security Feature Troubleshooting Guide¶
文档版本: 1.0.2
最后更新: 2026-05-21
Git 提交: 61384b4a
作者:
Overview¶
This document provides diagnosis and solutions for common JAiRouter security feature issues, including authentication failures, sanitization problems, performance issues, and more.
Quick Diagnosis¶
1. Check Security Feature Status¶
# Check system health
curl http://localhost:8080/actuator/health
# Check security configuration
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/status
2. View Logs¶
# View application logs
tail -f logs/jairouter.log
# View security audit logs
tail -f logs/security-audit.log
# View error logs
grep ERROR logs/jairouter.log
3. Check Monitoring Metrics¶
# View Prometheus metrics
curl http://localhost:8080/actuator/prometheus | grep security
# View authentication metrics
curl http://localhost:8080/actuator/prometheus | grep authentication
# View sanitization metrics
curl http://localhost:8080/actuator/prometheus | grep sanitization
Authentication Issues¶
Issue 1: API Key Authentication Failure¶
Symptoms¶
- Client receives
401 Unauthorizederror - Logs show
Invalid API KeyorAPI Key not found
Possible Causes¶
- API Key is incorrect or does not exist
- API Key has expired
- API Key has been disabled
- Request header name is incorrect
- API Key format is wrong
Diagnosis Steps¶
# 1. Check API Key configuration
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/api-keys
# 2. Verify request header
curl -v -H "X-API-Key: your-api-key" \
http://localhost:8080/v1/models
# 3. Check API Key status
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/api-keys/your-key-id/status
Solutions¶
Check API Key value
Check expiration time
Enable API Key
Issue 2: JWT Authentication Failure¶
Symptoms¶
- Client receives
401 Unauthorizederror - Logs show
Invalid JWT tokenorJWT signature verification failed
Possible Causes¶
- JWT token format is incorrect
- Signature verification failed
- Token has expired
- Token is in the blacklist
- Secret key configuration is wrong
Diagnosis Steps¶
# 1. Parse JWT token
echo "your-jwt-token" | cut -d'.' -f2 | base64 -d | jq
# 2. Check token status
curl -H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json" \
-d '{"token": "your-jwt-token"}' \
http://localhost:8080/admin/security/jwt/validate
# 3. Check blacklist
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/jwt/blacklist
Solutions¶
Check JWT configuration
Refresh token
Clear blacklist
Issue 3: Insufficient Permissions¶
Symptoms¶
- Client receives
403 Forbiddenerror - Logs show
Insufficient permissions
Diagnosis Steps¶
# Check user permissions
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/permissions/your-user-id
# Check endpoint permission requirements
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/endpoints
Solutions¶
# Update user permissions
curl -X PUT -H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json" \
-d '{"permissions": ["read", "write", "admin"]}' \
http://localhost:8080/admin/security/api-keys/your-key-id/permissions
Data Sanitization Issues¶
Issue 4: Sanitization Not Working¶
Symptoms¶
- Sensitive data is not being sanitized
- Logs show sanitization rules not matched
Possible Causes¶
- Sanitization feature is not enabled
- Regular expression does not match
- User is in the whitelist
- Rule priority issue
Diagnosis Steps¶
# 1. Check sanitization configuration
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/sanitization/config
# 2. Test sanitization rules
curl -X POST -H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json" \
-d '{"text": "My phone number is 13812345678", "rules": ["phone"]}' \
http://localhost:8080/admin/security/sanitization/test
# 3. Check whitelist
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/sanitization/whitelist
Solutions¶
Enable sanitization feature
Fix regular expression
Check whitelist
Issue 5: False Positive Sanitization¶
Symptoms¶
- Normal data is incorrectly sanitized
- Business functionality is affected
Diagnosis Steps¶
# Test sanitization result for specific text
curl -X POST -H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json" \
-d '{"text": "your-test-text"}' \
http://localhost:8080/admin/security/sanitization/test
Solutions¶
Make regular expression more precise
Adjust rule priority
Add exception rules
Performance Issues¶
Issue 6: Slow Authentication Response¶
Symptoms¶
- Authentication takes too long
- System response is slow
Diagnosis Steps¶
# Check authentication performance metrics
curl http://localhost:8080/actuator/prometheus | grep authentication_duration
# Check cache hit rate
curl http://localhost:8080/actuator/prometheus | grep cache_hit_rate
# Check thread pool status
curl http://localhost:8080/actuator/prometheus | grep thread_pool
Solutions¶
Enable caching
Optimize thread pool
Reduce API Key count
Issue 7: Sanitization Performance Issues¶
Symptoms¶
- Sanitization operation takes too long
- Memory usage is too high
Diagnosis Steps¶
# Check sanitization performance metrics
curl http://localhost:8080/actuator/prometheus | grep sanitization_duration
# Check memory usage
curl http://localhost:8080/actuator/metrics/jvm.memory.used
# Check regex cache
curl http://localhost:8080/actuator/prometheus | grep regex_cache
Solutions¶
Enable parallel processing
Optimize regular expressions
Enable streaming processing
Configuration Issues¶
Issue 8: Configuration Not Taking Effect¶
Symptoms¶
- Features don't change after modifying configuration
- System uses default configuration
Diagnosis Steps¶
# Check current configuration
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/config/current
# Check configuration file
cat src/main/resources/application.yml | grep -A 20 security
# Check environment variables
env | grep -i security
Solutions¶
Restart application
Check configuration priority
Validate YAML format
Issue 9: Environment Variables Not Working¶
Symptoms¶
- Environment variable values are not read
- Default values are used instead of environment variable values
Solutions¶
Check environment variable format
Check configuration reference
Reload environment variables
Monitoring and Alerting Issues¶
Issue 10: Missing Monitoring Metrics¶
Symptoms¶
- Prometheus metrics not showing
- Monitoring dashboard has no data
Solutions¶
Enable monitoring feature
Check Actuator configuration
Verify metrics endpoint
Issue 11: Alerts Not Triggering¶
Symptoms¶
- Threshold reached but no alert received
- Alert configuration not working
Solutions¶
Check alert configuration
Test alert notification
Check notification configuration
Debugging Tools and Tips¶
1. Enable Verbose Logging¶
logging:
level:
org.unreal.modelrouter.security: DEBUG
org.springframework.security: DEBUG
org.springframework.web: DEBUG
2. Use Debug Endpoints¶
# Security status check
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/debug
# Configuration check
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/config/validate
# Performance analysis
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/performance/analyze
3. Log Analysis Script¶
#!/bin/bash
# security-log-analyzer.sh
LOG_FILE="logs/jairouter.log"
AUDIT_FILE="logs/security-audit.log"
echo "=== Authentication Failure Statistics ==="
grep "authentication failed" $LOG_FILE | wc -l
echo "=== Recent Authentication Errors ==="
grep "authentication failed" $LOG_FILE | tail -10
echo "=== Sanitization Operation Statistics ==="
grep "sanitization applied" $AUDIT_FILE | wc -l
echo "=== Performance Issue Check ==="
grep "timeout\|slow\|performance" $LOG_FILE | tail -10
4. Health Check Script¶
#!/bin/bash
# security-health-check.sh
BASE_URL="http://localhost:8080"
ADMIN_TOKEN="your-admin-token"
echo "=== System Health Check ==="
curl -s "$BASE_URL/actuator/health" | jq '.status'
echo "=== Security Feature Status ==="
curl -s -H "Authorization: Bearer $ADMIN_TOKEN" \
"$BASE_URL/admin/security/status" | jq
echo "=== Authentication Performance Metrics ==="
curl -s "$BASE_URL/actuator/prometheus" | \
grep "jairouter_security_authentication_duration_seconds"
echo "=== Sanitization Performance Metrics ==="
curl -s "$BASE_URL/actuator/prometheus" | \
grep "jairouter_security_sanitization_duration_seconds"
Common Commands Reference¶
Configuration Management¶
# Reload configuration
curl -X POST -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/config/reload
# Validate configuration
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/config/validate
# Backup configuration
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/config/backup > config-backup.json
Cache Management¶
# Clear authentication cache
curl -X DELETE -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/cache/authentication
# Clear sanitization cache
curl -X DELETE -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/cache/sanitization
# View cache statistics
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/security/cache/stats
Log Management¶
# Set log level
curl -X POST -H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json" \
-d '{"level": "DEBUG"}' \
http://localhost:8080/admin/logging/org.unreal.modelrouter.security
# Download logs
curl -H "Authorization: Bearer admin-token" \
http://localhost:8080/admin/logs/security-audit.log > audit.log
Contact Support¶
If the above solutions cannot resolve your issue, please contact technical support:
- GitHub Issues: https://github.com/Lincoln-cn/JAiRouter/issues
- Email Support: support@jairouter.com
- Documentation Center: https://jairouter.com
When submitting an issue, please include the following information: 1. Detailed description of the problem 2. Error logs 3. Configuration file (after sanitization) 4. System environment information 5. Steps to reproduce