Release notes: (v6.3)
v3.1.0:
- Added attribute merging capabilities for the user profile: multiple attributes with the same name and value of the collection type can be merged into a single attribute
- Added Weibo, QQ and Wechat (OAuth) supports
v3.0.3:
AzureAdClientuses thePathParameterCallbackUrlResolverby default
v3.0.2:
- Properly handles all the HTTP codes in the
setResponseStatusmethod of theJ2EContext - Added the
setExcludedPathandsetExcludedPatternmethods to thePathMatcherclass (for Shiro)
v3.0.1:
- The
ProfileHelper.flatIntoOneProfilemethod returns anAnonymousProfile(instead of empty) if it’s the only profile
v3.0.0:
- Handle AJAX requests in the OpenID Connect logout
- All session interactions are done via the
SessionStore(retrieved from theWebContext) - All exceptions (especially
HttpAction) are unchecked - Upgraded dependencies
- Added “multi-tenancy” capabilities: you can dynamically define multiple callback URLs for the same client, except for SAML for which you need as many
SAML2Clientas the number of different callback URLs you want - The
CallbackUrlResolvercomputes the callback URL (using a query parameter or a path parameter to define the client), based on theUrlResolverwhich computes a URL - You can define an error (page) URL at the logics’ level to handle unexpected exceptions
- The SAML Keystore alias can be defined via a property; SAML date comparisons are now UTC-based
- The client name is not set at the credential’s level
- The username of the
AzureAdProfileis the UPN - The issue time is generated and an expiration date can be used for a JWT
- The OpenID Connect user profile can be expired
- In the
J2EContext, header names are checked in a case-insensitive way - Supports the
javax.faces.partial.ajaxparameter for AJAX requests - If only one client is defined in the configuration, it is used as a fallback on the security and callback endpoints
v2.3.1:
- Saving the profile in session can be disabled on the callback endpoint
v2.2.1:
- Improve SAML support: fix generated binding, handle AttributeConsumingServiceIndex in authentication request, add capability to add authentication-related attributes to the user profile with specific attributes added to the profile…
v2.1.0:
- Added Kerberos support
- Removed Stormpath support
- The password encoders and LDAP/SQL authenticators can be defined via properties through the
PropertiesConfigFactory - Supports CouchDB for authentication and user management
- REST API
Authenticator - In case of an unauthorized AJAX request, the redirection URL to the identity server is added as the
Locationheader to the 401 error - Allow passive authentication for SAML
v2.0.0:
- All clients are built using sub-components (
RedirectActionBuilder,CredentialsExtractor,Authenticator,ProfileCreatorandLogoutActionBuilder): theIndirectClientV2andDirectClientV2are renamed asIndirectClientandDirectClient(and the existingIndirectClientandDirectClientcomponents are removed) - The
LdapProfileService,DbProfileServiceandMongoProfileServicereplace the deprecatedLDapAuthenticator,DbAuthenticatorandMongoAuthenticatorto validate username/password and create, update or delete users in a LDAP, in a relational database and in a MongoDB database - A user profile can be linked to another user profile
- The
LogoutLogic(formerlyApplicationLogoutLogic) handles the application and identity provider logout - The
WebContextdirectly relies on theSessionStorewhose capabilities are upgraded to handle back-channel logout - The
AuthorizationGeneratortakes theWebContextas input and can return a new built profile - Using Spring framework
Resourcecomponents for SAML files/URLs - The session renewal is properly handled by clients (and especially CAS)
- Caches are backed via a
Storecomponent - Upgrade the OAuth support with Scribe v3.3 and rebuild all clients on the generic
OAuth10ClientandOAuth20Client - User profiles are simple POJOs, the
AttributesDefinitionis replaced by theProfileDefinition - CAS specificities (Kryo serialization,
toStringservice ticket validation) are handled via theInternalAttributeHandler - Authenticators may throw the checked
CredentialsException - Only two
PasswordEncoderwrappers are available: one for Spring Security Crypto, the other one for Shiro - Added new matcher
PathMatcherand deprecatedExcludedPathMatcher
v1.9.7:
- Security fix on
JwtAuthenticator
v1.9.6:
- Added LinkedIn support in
PropertiesConfigFactory CallbackLogicandApplicationLogoutLogiccan be set at theConfiglevel
v1.9.5:
- Various bug fixes
v1.9.4:
- Critical security issue since the version 1.9.2 on the
NopPasswordEncoderregarding theMongoAuthenticatorand theDbAuthenticator: upgrading is mandatory
v1.9.3:
- Bug fixes (
Authenticatorinitialization,resource:/classpath:prefixes in the SAML support…) - New
HeaderMatcherandHttpMethodMatcher - The
Configholds aSecurityLogic - The OpenID Connect configuration can be done without a discovery URL
- The Dropbox support uses the OAuth protocol v2.0
- The expiration time is checked on JWT, as well as the existence of the subject
- The
IpExtractorcan work on an alternative header name - A specific profile can be built by the
AuthenticatorProfileCreator
v1.9.2:
- the CAS support has been upgraded: the CAS configuration is defined via the
CasConfiguration, the newDirectCasProxyClientmust be used to validate proxy tickets, the front channel logout is supported by theCasSingleSignOutHandler, the OAuth support is compatible with CAS v5 - the JWT support has been upgraded:
SignatureConfigurationclasses allow to define HMac, RSA or Elliptic Curve signatures - the OpenID Connect support has been upgraded: the OIDC configuration is defined via the
OidcConfiguration, all standard claims are supported in theOidcProfile, most flows are supported - CORS (AJAX) requests can be controlled via the
CorsAuthorizerand its default pre-definedallowAjaxRequestsname - Profile attribute can be checked via the
RequireAnyAttributeAuthorizer - the
AjaxRequestResolver,CallbackUrlResolverandAuthorizationGeneratorcan be defined at theClientslevel for all defined clients - new implementations for the
PasswordEncoderare available for Spring Security, Shiro or JBCrypt.
v1.9.1:
- the
AuthenticatorandProfileCreatorhave access to the web context - the signature of the SAML authentication requests can be disabled
v1.9.0:
- Upgraded to Java 8 as well as all most dependency versions
- Removed useless concepts: client type, client cloning capabilities, raw data, direct/indirect redirection, proxy configuration for OAuth clients (to be set at the JVM level or by overriding the
OAuthRequestclass) - All security logics are now available in the core via the
SecurityLogic,CallbackLogicandApplicationLogoutLogiccomponents - Any client can be built using the
RedirectActionBuilder,CredentialsExtractor,AuthenticatorandProfileCreatorconcepts (DirectClientV2andIndirectClientV2): to be re-used to build asynchronous clients CredentialsExtractor,Authenticator,ProfileCreatorandAuthorizercan throwHttpAction(previously namedRequiresHttpAction) to break the flow and handle custom use cases- Typed id are now defined using the full class name (with package): “org.pac4j.oauth.profile.facebook.FacebookProfile#id” instead of “FacebookProfile#id” (use the
getOldTypedId()method to get the old value) - Comparisons for clients/authorizers names are case insensitive and trimmed
- Most integration tests have been replaced by manual tests (RunXXX classes)
- Updated OpenID Connect support (
GoogleOidClientandAzureAdClient)