bapp_auth 0.2.1
bapp_auth: ^0.2.1 copied to clipboard
Cross-platform authentication for BAPP framework platforms with Keycloak SSO and automatic token management
0.2.1 #
- Updated
bapp_api_clientdependency from ^0.4.4 to ^0.5.0
0.2.0 #
- BREAKING: Replaced built-in API client with
bapp_api_clientpackage- Removed
BappApiClient,ApiError,RetryConfigclasses - Added dependency on
bapp_api_client^0.4.4 - Re-exports
BappApiClientandPagedListfor convenience
- Removed
- New
BappAuthorchestrator class- Single entry point for auth lifecycle: initialize → login → refresh → logout
- Pre-configured
BappApiClientwith automatic bearer token injection - Reactive
authStateStreamfor driving UI (initial, loading, authenticated, unauthenticated) - Configurable BAPP API host per project, fixed Keycloak hostname (
id.bapp.ro)
- New
BappAuthConfigconfigurationhost: BAPP API base URL (configurable per project)ssoAutoLogin: silent SSO login on initialize usingprompt=nonesessionId: user-scoped token storage for shared devices (kiosk/POS)
- Silent SSO with
prompt=none- Non-interactive SSO passes
prompt=noneto Keycloak for instant response - No login form shown — if session exists, authenticates silently
- Minimal browser flash on all platforms
- Non-interactive SSO passes
- Shared device support
sessionIdscopes token storage per user (key:bapp_auth_token_{clientId}_{sessionId})switchSession()method for switching users at runtime- Multiple users on same device never overwrite each other's tokens
AuthenticatedHttpClient- Transparent bearer token injection on all requests
- Proactive refresh when token expiring within 30 seconds
- Automatic retry on 498 (Token Expired) responses
- Concurrent refresh prevention with lock
- Android compatibility fix for
flutter_web_auth_2v5- Forces
preferEphemeral: trueon Android to trigger CustomTabsIntent fallback - Ensures compatibility with all Chrome versions (including Chrome 56+ on Android 7)
- Forces
- Bug fix:
TokenResponse.fromJsonnow restoresissuedAt- Previously, deserialized tokens always had
issuedAt = DateTime.now(), making expired tokens appear valid
- Previously, deserialized tokens always had
- Updated dependencies: http ^1.6.0, flutter_web_auth_2 ^5.0.1, url_launcher ^6.3.2, crypto ^3.0.7
- Integration tests: Cross-platform tests for macOS, iOS, Android (automated + interactive SSO)
- 45 unit tests, 7 integration tests
0.1.5 #
- Automatic Token Refresh: API client now automatically refreshes expired tokens
- Proactive refresh when token is expiring within 30 seconds
- Handles 498 (Token Expired) responses by refreshing and retrying
- Concurrent refresh prevention with lock mechanism
onAuthRequiredcallback when refresh fails
- Updated Dependencies: flutter_web_auth_2 ^4.1.0, shared_preferences ^2.5.4, flutter_lints ^6.0.0
- Improved Documentation: Added dartdoc comments to 20%+ of public API
- Code Quality: Fixed dart format issues, comprehensive test coverage (47 tests)
0.1.4 #
- Fixed JSON handling in CI credentials
0.1.3 #
- Fixed pub.dev token path for newer Dart versions
0.1.2 #
- Fixed GitLab CI credentials handling for pub.dev publishing
0.1.1 #
- Added GitLab CI/CD pipeline for automated publishing to pub.dev
- Added
.pubignoreto exclude development files from published package
0.1.0 #
- Initial release
- Cross-platform OAuth Support:
- Android (custom URL schemes)
- iOS (custom URL schemes)
- macOS (custom URL schemes)
- Web (origin-based redirects)
- Windows (localhost redirects)
- Linux (localhost redirects)
- Keycloak OAuth Integration:
- SSO OpenID Connect flow with PKCE
- Browser session reuse - Users already logged in to Keycloak in browser won't need to log in again!
- Private/ephemeral mode option for fresh logins
- Device authentication flow support
- Automatic platform detection for redirect URIs
- Token Management:
- Token persistence with SharedPreferences
- Automatic token refresh
- Token expiration detection
- Comprehensive API Client:
- Inspired by Python SDK patterns
- Token and Bearer authentication
- CRUD operations for content types
- Task, Action, and Widget APIs
- Pagination support (streaming and bulk)
- Multi-tenancy support
- Automatic retry with exponential backoff
- Error handling
- Developer Experience:
- PlatformConfig helper for automatic redirect URI detection
- Complete platform configuration guide
- Working example app with UI for all platforms
- Comprehensive test coverage (12 tests)