Releases: leodip/goiabada
Release 1.5.0
New Features
OIDC prompt parameter support (#57)
Full implementation of the OIDC prompt parameter on the /auth/authorize endpoint:
prompt=none— Silent authentication. Returns an error if the user is not already authenticated or if consent is required, without displaying any UI.prompt=login— Forces re-authentication even if the user has an active session.prompt=consent— Forces the consent screen even if consent was previously granted.- Combinations — Values can be combined (e.g.,
prompt=login consent), exceptnonewhich must be used alone. - Advertised in the
/.well-known/openid-configurationdiscovery endpoint viaprompt_values_supported.
Client logo management (#33)
Clients can now have a logo image displayed on authentication and consent screens:
- Upload, view, and delete logos via the admin console (Logo tab in client settings) or the REST API.
- Public endpoint
GET /client/logo/{clientIdentifier}serves logos withETagandCache-Controlheaders for efficient caching. - Supported formats: JPEG, PNG, GIF, WebP. Max dimensions: 512x512. Max size: 3MB.
Client display settings
New fields on clients to control how they appear to users during authentication:
displayName— A human-friendly name shown instead of the client identifier. Falls back to the client identifier if empty.description— A short description shown on auth/consent screens.websiteURL— A link to the client's website, shown on the consent screen.- Visibility toggles —
showLogo,showDisplayName,showDescription,showWebsiteURLcontrol which elements are visible on auth screens. - Display name can be set during client creation (admin console and API).
System-level entity editing
System-level clients (admin-console-client) and resources (authserver) can now be edited with targeted immutability guards:
- Identifiers are protected — cannot be renamed.
- Deletion is blocked — system-level entities cannot be removed.
- All other settings are editable — description, display name, redirect URIs, permissions, etc.
- Built-in permission identifiers on the
authserverresource (userinfo,manage-account,manage,admin-read,manage-users,manage-clients,manage-settings) cannot be renamed or deleted, but new permissions can be added.
Improvements
- Dockerfile reliability —
curlcommands for downloadingyqand Tailwind CLI now include--retryoptions for more resilient builds. - Dependency updates — Go module dependencies updated across all three modules (core, authserver, adminconsole). Test integration app dependencies updated.
Database Migrations
Four new migrations are included (applied automatically on startup):
| Migration | Description |
|---|---|
| 000014 | Add client_logos table |
| 000015 | Fix DATETIME2 precision on MSSQL (MSSQL only) |
| 000016 | Add website_url column to clients |
| 000017 | Add display_name and description columns to clients; add show_logo, show_display_name, show_description, show_website_url columns |
No breaking changes
Update to v1.5.0 using your preferred deployment method (Docker images or native binaries). Database migrations will run automatically on first startup.
Release 1.4.4
New Features
OIDC Claims in ID Tokens - Configurable Behavior (#56)
Added controls for including OpenID Connect scope claims (email, profile, phone, address) in ID tokens:
- New global setting:
IncludeOpenIDConnectClaimsInIdToken(default: enabled) - Per-client override available (default/on/off)
- Claims remain available via
/userinfoendpoint regardless of setting - Default behavior matches industry standards (Auth0, Microsoft, Keycloak)
- For strict OIDC Core 5.4 conformance, claims can now be restricted to
/userinfoonly
Use case: Organizations requiring strict OIDC conformance or wanting to minimize ID token size can now disable scope claims in ID tokens while maintaining full claim access via the userinfo endpoint.
Improvements
- Developer Experience: Added
make formattarget to all modules for consistent code formatting - Test Organization: Split monolithic test files into focused, maintainable modules:
authorize_test.go(5,597 lines) → 5 focused test filestoken_test.go(1,665 lines) → 7 focused test files
Changes
- Applied consistent code formatting across entire codebase
- Database migration 000013 adds new configuration columns (auto-applied on startup)
Breaking Changes
None - fully backward compatible.
Release 1.4.3
Added
- Email verification code generation for users, including a new API endpoint (thanks @Joebeurg) #54
- Timezone data generator based on IANA tzdata.
- time/tzdata fallback import for systems lacking OS timezone data. #49
Changed
- Documentation updates for profile picture and group attribute REST APIs.
- Dependency updates across the project (including docs Astro/Starlight).
Removed
- fix-ownership.sh script (no longer needed).
Release 1.4.2
Bug fixes
- Fixed AuthContext preservation when session is invalidated (#46) - The authorization flow now correctly preserves the AuthContext when a user's session is invalidated mid-flow, preventing authentication failures.
Improvements
- Replaced Mailhog with Mailpit in devcontainer and tests - Mailpit provides a more modern and actively maintained email testing solution.
- Enhanced version management script - Refactored update-versions.sh with an interactive menu for better usability.
- Added Node.js/npm to devcontainer - Enables npm package management for test integration apps.
Test integration apps
- Updated react-vite demo app - Significant improvements including new TokenInspector component, AdminArea page, improved auth context, and better styling.
- Updated go-webapp test application - Various improvements and updates.
- Updated js-only (browser-based) test application - Improved OAuth2 browser-only integration example.
Dependencies
- Updated dependencies across multiple Go modules and npm packages
Release 1.4.1
Multi-architecture docker images
Docker images now support both linux/amd64 and linux/arm64 architectures. This enables native support for:
- Intel/AMD x86_64 servers and PCs
- ARM64 devices (Raspberry Pi 4/5, Orange Pi, AWS Graviton, Apple Silicon Macs)
No more platform mismatch warnings when running on ARM64 devices.
Thanks for reporting @sehogas
Release 1.4.0
New Features
- Granular API Scopes (#43) - Fine-grained admin authorization with new scopes for precise API access control instead of the single authserver:manage permission
- OAuth2 Implicit Flow - Configurable implicit flow support for legacy clients (response_type=token, id_token, id_token token). Disabled by default, can be enabled globally or per-client
- OAuth2 Resource Owner Password Credentials (ROPC) Flow - RFC 6749 Section 4.3 implementation for direct username/password authentication. Disabled by default, can be enabled globally or per-client
- User Profile Pictures (#18) - Upload/manage profile pictures with OIDC picture claim support:
- Self-service and admin management
- Public /userinfo/picture/{subject} endpoint
- Client-side image cropping with Cropper.js
- Server-side validation (PNG, JPEG, GIF; max 2MB; 64-2000px) - Configurable PKCE - PKCE can now be configured globally or per-client (required/optional)
- Client Secret Basic Authentication - Support for client_secret_basic authentication method (Authorization header)
- POST Body Access Token for Userinfo - Support for access token in POST body per OIDC 5.3.1
Security Improvements
- Constant-time client secret comparison - Prevents timing attacks on client authentication
- Timing-safe user enumeration protection - DummyPasswordHash implementation prevents user enumeration via timing analysis
- Improved error handling for redirect URI parsing - Better validation in authorization flows
Bug Fixes & Compliance
- RFC 6749 compliant error responses - Detailed error codes and WWW-Authenticate headers for client authentication failures
- Refresh token scope compliance - Refresh tokens now match original scope per RFC 6749
- AMR claim format fix - Now correctly returns JSON array per OIDC Core 1.0 Section 2
- Session ACR/AMR step-up fix - Centralized ACR comparison logic for proper step-up authentication
- Removed typ claim from ID token - Satisfies OIDC conformance suite requirements
- auth_time handling - Properly set based on current authentication completion in implicit flow
Updated docs
Release 1.3.0
What's new in release v1.3.0
OpenAPI Specification
- Added complete OpenAPI 3.0 specification accessible at {authserver-base-url}/openapi.yaml for automatic client generation and API testing tools integration
REST API Documentation
- Complete REST API documentation with step-by-step setup instructions
Configuration simplification
- Removed internal base URL configuration for admin console and streamlined environment variable documentation
This release includes a database schema change for permission management. The migration runs automatically on startup but requires a brief downtime:
- Admin console permissions have been migrated from adminconsole resource to authserver resource
- Migration 000005_move_adminconsole_permissions will execute automatically
- Applies to all database types (MySQL, PostgreSQL, SQL Server, SQLite)
- Recommendation: backup your database before upgrading!
The migration is backward-compatible and handles the transition automatically.
Release 1.2.1
What's new in v1.2.1?
- goiabada-setup CLI tool: new interactive command line setup wizard to help users configure and deploy Goiabada with Docker Compose and Kubernetes. No more complicated two-staged bootstraps.
- New documentation site: migrated from Mkdocs to Astro Starlight with improved UX
- Updated dependency modernc.org/libc to v1.67.1
- Improved GitHub Actions workflows with Go module caching for faster builds
Check out the new website! https://goiabada.dev
Release 1.2
v1.2 introduces important architectural refactoring and enhancements.
Architecture improvements
-
Admin console refactoring: The admin console previously communicated with the database directly. In this release, it now communicates with the auth server using secure HTTP calls (OAuth2), ensuring only the auth server accesses the database directly. This separation of concerns improves security and scalability.
-
Enhanced session management: Introduced a new Chunked Cookie Store for improved HTTP session handling, enabling support for larger session data with automatic chunking and metadata management.
New features
-
Dynamic Client Registration (RFC 7591) #24 . Added standards-compliant Dynamic Client Registration, allowing OAuth2 clients to self-register programmatically. Good for MCP servers and native applications. Thanks @katesclau for the suggestion!
-
'nbf' (Not Before) claim #25 . JWT tokens now include the nbf claim (defaulting to the same value as iat) for improved token validation and security. Thanks @Henelik for the suggestion!
Bug fixes
- Session deletion handling #26 . Fixed session deletion to properly trigger logout for current sessions, ensuring users are immediately logged out when their sessions are removed. Thanks @mur4s4m3 for reporting!
Maintenance
- Dependency updates: Updated all dependencies to their latest versions, including Go 1.25.4, Tailwind CSS 4.1.12, DaisyUI 5.5.5, and PostgreSQL 18.3
⚠️ Breaking Changes - Migration from v1.1 to v1.2
Version 1.2 requires configuration changes for existing installations. Follow these migration steps carefully before upgrading.
Before upgrading to v1.2:
- Backup your database (important for rollback if needed).
- Plan for brief downtime. Users will be logged out during upgrade.
- Prepare environment variable changes (detailed below).
Step-by-step migration guide
Step 1: generate session keys
Version 1.2 requires four new session keys (previously stored in the database). Generate them using OpenSSL:
# Generate auth server authentication key (64 bytes = 128 hex characters) openssl rand -hex 64 # Generate auth server encryption key (32 bytes = 64 hex characters) openssl rand -hex 32 # Generate admin console authentication key (64 bytes = 128 hex characters) openssl rand -hex 64 # Generate admin console encryption key (32 bytes = 64 hex characters) openssl rand -hex 32 Save these keys. You'll add them to your configuration in the next steps.
Step 2: retrieve admin console OAuth credentials
The admin console now authenticates to the auth server using OAuth2. You need to retrieve the OAuth client secret from your v1.1 installation.
To get the client secret:
- Log in to your v1.1 admin console (before upgrading)
- Navigate to Clients in the menu
- Find and click on the client named admin-console-client
- Go to the Authentication tab
- Copy the client secret and save it securely
Note: The client identifier is always "admin-console-client". You only need to copy the secret. Save this secret.
Step 3: update environment variables
Auth Server - add these variables
# Session keys (generated in Step 1) - REQUIRED GOIABADA_AUTHSERVER_SESSION_AUTHENTICATION_KEY=<your-128-char-hex-key> GOIABADA_AUTHSERVER_SESSION_ENCRYPTION_KEY=<your-64-char-hex-key> # Internal base URL for container-to-container communication - REQUIRED GOIABADA_AUTHSERVER_INTERNALBASEURL=http://goiabada-authserver:9090 # Optional but recommended for production GOIABADA_AUTHSERVER_RATELIMITER_ENABLED=true Admin Console - add these variables
# Session keys (generated in Step 1) - REQUIRED GOIABADA_ADMINCONSOLE_SESSION_AUTHENTICATION_KEY=<your-128-char-hex-key> GOIABADA_ADMINCONSOLE_SESSION_ENCRYPTION_KEY=<your-64-char-hex-key> # OAuth credentials (retrieved in Step 2) - REQUIRED GOIABADA_ADMINCONSOLE_OAUTH_CLIENT_ID=admin-console-client GOIABADA_ADMINCONSOLE_OAUTH_CLIENT_SECRET=<your-client-secret> # Auth server internal URL - REQUIRED GOIABADA_AUTHSERVER_INTERNALBASEURL=http://goiabada-authserver:9090 Admin Console - remove these variables
The admin console no longer accesses the database. Remove these variables from your configuration:
GOIABADA_ADMINCONSOLE_LOG_SQL GOIABADA_ADMINCONSOLE_AUDIT_LOGS_IN_CONSOLE GOIABADA_DB_TYPE GOIABADA_DB_USERNAME GOIABADA_DB_PASSWORD GOIABADA_DB_HOST GOIABADA_DB_PORT GOIABADA_DB_NAME GOIABADA_DB_DSN Step 4: upgrade and verify
- Stop your current v1.1 deployment:
docker-compose down - Backup your database (if not already done)
- Pull the v1.2 images:
docker-compose pull - Start the services:
docker-compose up -d - Monitor the logs:
# Watch auth server logs docker-compose logs -f goiabada-authserver # Watch admin console logs docker-compose logs -f goiabada-adminconsole - Verify startup:
- Auth server should start without session key validation errors
- Database migrations (000003, 000004) should run automatically
- Admin console should successfully authenticate with auth server
- Test functionality:
- Log in to the admin console
- Verify you can access user management, client management, etc.
- Check that all features work as expected
Release 0.6
- Fixed a bug where the application crashed when admin was searching for members of a group.
- Improved error message when there's a panic.
- Added integration tests.
- Bumped dependencies.
- Other minor UI/text updates.