feat(auth): Complete Auth Service implementation and fix Consul health checks
- Add VerifyPassword RPC to Identity Service - Added to proto file and generated code - Implemented in Identity Service gRPC server - Added to Identity Service client interface and gRPC client - Complete RefreshToken implementation - Store refresh tokens in database using RefreshToken entity - Validate refresh tokens with expiration checking - Revoke refresh tokens on logout and token rotation - Integrate Authz Service for role retrieval - Added AuthzServiceClient to Auth Service - Get user roles during login and token refresh - Gracefully handle Authz Service failures - Require JWT secret in configuration - Removed default secret fallback - Service fails to start if JWT secret is not configured - Fix Consul health checks for Docker - Services now register with Docker service names (e.g., audit-service) - Allows Consul (in Docker) to reach services via Docker DNS - Health checks use gRPC service names instead of localhost This completes all TODOs in auth_service_fx.go and fixes the Consul health check failures in Docker environments.
This commit is contained in:
@@ -119,6 +119,11 @@ func main() {
|
||||
return factory.GetIdentityClient()
|
||||
}),
|
||||
|
||||
// Authz Service client
|
||||
fx.Provide(func(factory *client.ServiceClientFactory) (services.AuthzServiceClient, error) {
|
||||
return factory.GetAuthzClient()
|
||||
}),
|
||||
|
||||
// Provide auth service and gRPC server (defined in auth_service_fx.go)
|
||||
provideAuthService(),
|
||||
|
||||
@@ -188,15 +193,13 @@ func registerLifecycle(
|
||||
|
||||
// Register with service registry
|
||||
serviceID := fmt.Sprintf("auth-service-%d", time.Now().Unix())
|
||||
// In Docker, always use the Docker service name for health checks
|
||||
// Consul (also in Docker) needs to reach the service via Docker DNS
|
||||
host := cfg.GetString("services.auth.host")
|
||||
if host == "" {
|
||||
// In Docker, use service name for Consul to reach the service
|
||||
// For local development, use localhost
|
||||
if os.Getenv("ENVIRONMENT") == "production" || os.Getenv("DOCKER") == "true" {
|
||||
host = "auth-service" // Docker service name
|
||||
} else {
|
||||
host = "localhost"
|
||||
}
|
||||
if os.Getenv("ENVIRONMENT") == "production" || os.Getenv("DOCKER") == "true" {
|
||||
host = "auth-service" // Docker service name - required for Consul health checks
|
||||
} else if host == "" {
|
||||
host = "localhost" // Local development
|
||||
}
|
||||
port := grpcServer.Port()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user