Merged
Conversation
- Fix #1615/#1667: Change LinksResend.resend to array type (List<HrefObject>) - Fix #1618: Add type validation for cached objects to prevent ClassCastException - Fix #1619: Set default name for OIDCApplicationBuilder to OIDC_CLIENT - Fix #1622: Correct expirePasswordWithTempPassword return type to TempPassword - Fix #1642: Enable custom attributes for GroupProfile (OktaUserGroupProfile) - Fix #1666: Change JUnit dependency scope from compile to test - Fix #1657: Upgrade httpclient5 to 5.5.1 to fix connection pool leak - Fix #1653: Add missing rootSessionId field to LogAuthenticationContext - Fix #1650: Enable super.equals() call in PasswordPolicyRule for proper parent comparison - Fix #1600: Implement resource-specific cache lookup in ApiClient - Update SDK version to 25.0.1-SNAPSHOT All fixes verified and tested. Resource-specific caching demonstrated with User cache (5s TTL) showing 0ms cache hits vs 500ms API calls.
…1600) - Fixed cache invalidation for DELETE operations on nested resources - Added support for FederatedClaimRequestBody cache invalidation - Fixed path matching for /federated-claims/ and /group-push/mappings/ - Implemented multi-cache invalidation to remove from all matching caches - Added defensive exception handling to prevent cache errors from interfering with API operations Resolves: - #1618: Cache ClassCastException with type validation - #1600: Resource-specific cache configuration All integration tests passing (431 tests, 0 failures)
- Modified DPoPInterceptor to check nonce expiration on ALL requests, not just token requests - When nonce expires during regular API calls, remove Authorization header to force token refresh - Resolves intermittent invalid session errors after 22 hours - Updated CHANGELOG and README for v25.0.1
…ation - Fix #1568: Changed unique property from boolean to string in UserSchemaAttribute and GroupSchemaAttribute to support values like UNIQUE_VALIDATED - Fix #1608: Added automatic DPoP nonce expiration handling with transparent token refresh - DPoPInterceptor now checks nonce on all requests and throws DPoPNonceExpiredException when expired - ApiClient automatically catches exception, clears access token, and retries with fresh token/nonce - Zero client code changes required - fully backward compatible - Upgraded Bouncy Castle from 1.78.1 to 1.79 (security fix) - Improved GroupsIT test reliability with increased retry count and delays
…ndMethods' to 'methods'
…ndMethods' to 'methods'
…overloading - Cast wrapper types (Integer, Long, Double) to primitives to resolve ambiguity - Affected 8 test files with assertEquals calls comparing wrapper objects - All 147 tests now pass in impl module
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix Issues: Schema API, DPoP Nonce Expiration, and Test Infrastructure
📋 Summary
This PR addresses bug fixes for v25.0.1 release, including schema API breaking changes, DPoP authentication issues, cache improvements, security updates, and test infrastructure fixes.
🎯 Key Issues Fixed
1. Schema API Breaking Change (#1568)
uniqueproperty changed from string to boolean in v25.0.0, causing deserialization errors'UNIQUE_VALIDATED'uniqueproperty type from boolean to string inUserSchemaAttributeandGroupSchemaAttributesrc/swagger/api.yaml2. DPoP Nonce Expiration (#1608)
DPoPInterceptorchecks nonce on ALL requests and throwsDPoPNonceExpiredExceptionwhen expiredApiClient.executeWithDPoPRetry()catches exception, clears access token, and retries requestDPoPInterceptor.java,DPoPNonceExpiredException.java(new),ApiClient.mustache3. Cache System Improvements (#1618, #1600)
ClassCastExceptionwith proper type validation/federated-claims/,/group-push/mappings/)4. Integration Test Improvements
GroupsITretry count from 10 to 15 for search operations5. Security Updates 🔒
6. Test Infrastructure Fixes
classesAndMethodsparallel mode causing CircleCI failuresassertEqualsambiguous method overloading by casting wrapper types (Integer, Long, Double) to primitives🔄 Breaking Changes
None - All fixes are backward compatible
📝 Files Changed
Core Changes:
src/swagger/api.yaml- Schema API unique property type fiximpl/.../oauth2/DPoPInterceptor.java- DPoP nonce checking on all requestsimpl/.../oauth2/DPoPNonceExpiredException.java- New exception for nonce expirationapi/.../custom_templates/ApiClient.mustache- Automatic retry logic for DPoP nonce expirationTest Fixes:
pom.xml- Removed unsupported TestNG parallel configuration, Bouncy Castle upgradeimpl/src/test/groovy/**/*Test.groovy- 8 test files with assertEquals casting fixesDocumentation:
CHANGELOG.md- Comprehensive v25.0.1 release notes