# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

This is not an official release notes document.  It exists for Shiro developers
to jot down their notes while working in the source code.  These notes will be
combined with Jira's auto-generated release notes during a release for the
total set.

###########################################################
# 1.7.1
###########################################################

Bug

    [SHIRO-797] - Shiro 1.7.0 is lower than using springboot version 2.0.7 dependency error


###########################################################
# 1.7.0
###########################################################

Bug

    [SHIRO-767] - org.apache.shiro.util.ClassUtil cannot load the array of Primitive DataType when use undertown as web container
    [SHIRO-792] - ShiroWebFilterConfiguration seems to conflict with other FilterRegistrationBean

New Feature

    [SHIRO-789] - Also add cookie SameSite option to Spring

Improvement

    [SHIRO-740] - SslFilter with HTTP Strict Transport Security (HSTS)
    [SHIRO-794] - Add system property to enable backslash path normalization
    [SHIRO-795] - Disable session path rewriting by default

Task

    [SHIRO-793] - deleteMe cookie should use the defined "sameSite"


###########################################################
# 1.6.0
###########################################################

Bug

    [SHIRO-610] - Incorrect filterchainResolver in 1.4.0-RC2
    [SHIRO-762] - SecurityUtils.securityManager should be volatile
    [SHIRO-766] - ArrayIndexOutOfBoundsException in Base64#decode

New Feature

    [SHIRO-788] - Add support for Global Filters

Wish

    [SHIRO-780] - NOTICE files of shiro components don't match NOTICE in source code repository


###########################################################
# 1.5.3
###########################################################

Bug

    [SHIRO-530] - INI parser does not properly handled backslashes at end of values
    [SHIRO-751] - SimplePrincipalMap and SimplePrincipalCollection throw different exceptions for the same problem
    [SHIRO-753] - Regression in URI parsing in Shiro 1.5.2

Dependency upgrade

    [SHIRO-754] - Upgrade to Apache Commons Codec 1.14
    [SHIRO-755] - Upgrade to Hazelcast 3.12.6
    [SHIRO-756] - Upgrade to Spring 5.2.5.RELEASE and Spring boot 2.2.6.RELEASE
    [SHIRO-757] - Upgrade to Htmlunit 2.39.0
    [SHIRO-758] - Upgrade to Jetty 9.4.27.v20200227
    [SHIRO-759] - Upgrade to Karaf 4.2.8


###########################################################
# 1.5.2
###########################################################

Bug

    [SHIRO-747] - FirstSuccessfulStrategy doesn't properly short circuit
    [SHIRO-749] - shiro-all jar is missing cache package

Improvement

    [SHIRO-748] - Update Commons Configuration to 2.7


###########################################################
# 1.5.1
###########################################################

Bug

    [SHIRO-736] - DefaultCipherInstance is an alias which is not available in every JVM or JCA Provider
    [SHIRO-739] - Bean reflection property failed with Enum values
    [SHIRO-741] - Matching of / (root) is broken
    [SHIRO-742] - fix throw exception when request uri is /

Dependency upgrade

    [SHIRO-738] - Upgrade to Spring 5.2.3.RELEASE and Spring boot 2.2.4.RELEASE


###########################################################
# 1.5.0
###########################################################

Notes: this release require a JRE 8 minimum.

Bug

    [SHIRO-458] - Possible leaked timing information from DefaultPasswordService
    [SHIRO-469] - Wrong description of JdbcRealm#setPermissionsQuery
    [SHIRO-552] - JdbcRealm in SaltStyle.COLUMN assumes that password column is Base64 but salt column is utf8 bytes
    [SHIRO-661] - Add check for the principal of subject whether is null
    [SHIRO-682] - fix the potential threat when use "uri = uri + '/' " to bypassed shiro protect
    [SHIRO-684] - INI parser keeps escape characters in keys and values
    [SHIRO-685] - Potential NullPointerException if PermissionResolver return null/empty string
    [SHIRO-687] - Additional Servlet Filters are not available to ShiroFilterFactorBean (unless using XML based beans)

New Feature

    [SHIRO-694] - Adds BearerToken support
    [SHIRO-722] - Add SameSite option to cookies

Improvement

    [SHIRO-668] - Catch unexpected errors which can lead to oom
    [SHIRO-669] - Included a boolean flag in FirstSuccessfulStrategy to break after first successful authentication
    [SHIRO-670] - ByteSource Serializable
    [SHIRO-681] - Upgrade to compiler Java 8
    [SHIRO-693] - Update plugins
    [SHIRO-700] - Minor spring updates
    [SHIRO-706] - Switch to Guice4 by default in the build
    [SHIRO-709] - Fix Shiro Spring feature
    [SHIRO-710] - Update Commons Lang3 + remove older Commons Lang
    [SHIRO-711] - Deprecate JavaEnvironment
    [SHIRO-712] - Add BasicIniEnvironment
    [SHIRO-715] - Remove old JSTL jars
    [SHIRO-720] - Update Commons BeanUtils
    [SHIRO-724] - Update Jetty, Spring, Spring Boot, Htmlunit dependencies
    [SHIRO-726] - Add dynamic import package
    [SHIRO-728] - Update Spring Boot to 2.1.10
    [SHIRO-729] - Update Quartz
    [SHIRO-730] - Updates the default Cipher mode to GCM in AesCipherService
    [SHIRO-731] - Use OWasp Java Encoder to escape user supplied content to the logs

Test

    [SHIRO-697] - Reduce shiro test logging level to INFO

Task

    [SHIRO-690] - Validate JDK11 compatibility
    [SHIRO-692] - Upgrade and enforce min buid maven version to 3.5.0
    [SHIRO-698] - Improve build with maven profile
    [SHIRO-734] - Remove Spring-client sample
    [SHIRO-735] - Shiro does not support servlet-3.1 void method(@Suspended AsyncResponse)

Dependency upgrade

    [SHIRO-688] - Upgrade to commons-cli 1.4
    [SHIRO-689] - Upgrade to commons-codec 1.12
    [SHIRO-691] - Upgrade to maven-jar-plugin 3.1.1
    [SHIRO-695] - Update Hazelcast
    [SHIRO-696] - Update Jetty
    [SHIRO-699] - Fix maven warning for exec-maven-plugin and upgrade to 1.6.0
    [SHIRO-701] - Update logback
    [SHIRO-702] - Upgrade to jacoco-maven-plugin 0.8.4
    [SHIRO-703] - Update HSQL
    [SHIRO-704] - Update Spring, Spring Boot, Hibernate
    [SHIRO-705] - Update Easymock + Powermock
    [SHIRO-707] - Misc dependency updates
    [SHIRO-716] - Upgrade to commons-codec 1.13
    [SHIRO-717] - Upgrade to maven-pmd-plugin 3.12.0
    [SHIRO-718] - Upgrade to xmlsec 2.1.4
    [SHIRO-719] - Upgrade to Karaf 4.2.6

Request

    [SHIRO-723] - Provide Minor Shiro Release that includes CVE-2019-10086 Fix


###########################################################
# 1.4.2
###########################################################

Bug

    [SHIRO-721] - RememberMe Padding Oracle Vulnerability

Improvement

    [SHIRO-730] - Updates the default Cipher mode to GCM in AesCipherService


###########################################################
# 1.4.1
###########################################################

Bug

    [SHIRO-457] - Login without static VM security manager cause exception in debug
    [SHIRO-563] - shiro-aspectj karaf feature can't be installed
    [SHIRO-624] - OSGI: commons configuration import should be optional
    [SHIRO-626] - Bundle symbolic name conflict
    [SHIRO-637] - Refresh cached session in HTTP request after user logs out
    [SHIRO-650] - Shiro JAX-RS is not an OSGi bundle
    [SHIRO-653] - Spring-boot registers shiro filter only on REQUEST dispatcher
    [SHIRO-655] - shiro-core has an undesirable runtime OSGi dependency to spring-beans
    [SHIRO-658] - Problems building shiro on openjdk-8 on current debian stable (9.6 "stretch")
    [SHIRO-660] - Bug in FirstSuccessfulStrategy
    [SHIRO-680] - Duplicate Bundle-SymbolicName for Different Shiro Modules

New Feature

    [SHIRO-638] - Update osgi bundle manifest to support Spring 4.x

Improvement

    [SHIRO-560] - Shiro-web feature can't be installed in karaf 4.0.4
    [SHIRO-652] - Upgrade Shiro Feature to Karaf 4.x
    [SHIRO-664] - Upgrade to Apache pom parent 21
    [SHIRO-665] - Upgrade to maven-bundle-plugin 4.1.0
    [SHIRO-667] - Upgrade to Spring 4.3.22-RELEASE
    [SHIRO-672] - Upgrade to jacoco-maven-plugin 0.8.3
    [SHIRO-673] - Upgrade to maven-compiler-plugin 3.8.0
    [SHIRO-674] - Upgrade to maven-dependency-plugin to 3.1.1
    [SHIRO-675] - Upgrade to maven-surefire-plugins 3.0.0-M3
    [SHIRO-676] - Upgrade to maven-jar-plugin 3.1.0
    [SHIRO-677] - Upgrade to versions-maven-plugin 2.7
    [SHIRO-683] - Upgrade to spring-boot 1.5.19.RELEASE

Task

    [SHIRO-662] - Constant Name Change in AuthenticationRealm
    [SHIRO-663] - Clean up pom parent relative path

Dependency upgrade

    [SHIRO-659] - Upgrade to OWASP dependency-check-maven plugin 4.0.0


###########################################################
# 1.4.0
###########################################################

Bug

    [SHIRO-559] - shiro-guice violates the JEE specification
    [SHIRO-579] - Permission filter is validating last matched path
    [SHIRO-603] - Endless recursion in ShiroSecurityContext.getUserPrincipal()
    [SHIRO-605] - ShiroWebModule creates out of order filter chain.
    [SHIRO-607] - AuthorizationAttributeSourceAdvisor ignores type-annotations
    [SHIRO-608] - Use a ServiceLoader to discover WebEnvironments
    [SHIRO-611] - Spring web module does not load correct SessionStorageEvaluator

Improvement

    [SHIRO-596] - shiro-tools-hasher needs private salt option
    [SHIRO-618] - Spring Boot Web Starter- Autoconfiguration for Realm and ShiroFilterChainDefinition


###########################################################
# 1.4.0-RC2
###########################################################

Bug

    [SHIRO-493] - shiro-guice not working with the guice 4.x
    [SHIRO-576] - Commons-beanutils dependency is not security compliant
    [SHIRO-586] - Can't Search For Groups In Active Directory Without A System User
    [SHIRO-587] - Can't Access Groups If userPrincipalName Doesn't Exist
    [SHIRO-591] - Basic Auth Filter permissive mode does NOT work
    [SHIRO-592] - ModularRealmAuthenticator causes log spam when one realm throws exception
    [SHIRO-593] - Allow for IniWebEnvironment subclasses to specify defaults objects to ReflectionBuilder
    [SHIRO-594] - Update Hazelcast version to latest supported version (3.7.2)
    [SHIRO-595] - Allow for POST only logout requests
    [SHIRO-612] - Need to upgrade BeanUtils to avoid vulnerability

New Feature

    [SHIRO-501] - Add ability to set system properties in shiro.ini
    [SHIRO-589] - Add Servlet 3.x fragment
    [SHIRO-590] - Add Spring Boot support / starters

Improvement

    [SHIRO-296] - Typo fixes
    [SHIRO-301] - Call permissionResolver directly in AuthorizingRealm
    [SHIRO-392] - Shiro Extension for JAX-RS
    [SHIRO-599] - Fix file encoding warnings during maven build and reporting


###########################################################
# 1.3.2
###########################################################

Bug

    [SHIRO-584] - URL Path matching issue with WebUtils.getPathWithinApplication


###########################################################
# 1.3.1
###########################################################

Bug

    [SHIRO-577] - Regression - Unable to set custom SessionValidationScheduler
    [SHIRO-581] - Improve log message when remember me cipher has changed


###########################################################
# 1.3.0
###########################################################

Bug

    [SHIRO-373] - Complete CAS remember-me support
    [SHIRO-397] - SingleArgumentMethodEventListenerTest fails
    [SHIRO-421] - Unable to set long timeouts on HttpServletSession
    [SHIRO-435] - SecurityManager is not a singleton in ShiroWebModule
    [SHIRO-473] - DefaultAnnotationResolver.getAnnotation throws NullPointerException
    [SHIRO-480] - setTarget method in DomainPermission does not set targets
    [SHIRO-483] - passwordsMatch() returns false with right plain password-encrypted password in JVM with default locale tr_TR
    [SHIRO-502] - OSGi import of com.google.inject in shiro-guice has incorrect version range
    [SHIRO-513] - Misleading error message when using custom WebEnvironment
    [SHIRO-515] - ExecutorServiceSessionValidationScheduler leaks resources due to improper synchronization
    [SHIRO-547] - Use MessageDigest#isEqual() instead of Arrays#equals() for comparing digests
    [SHIRO-568] - hash iterations is calculated wrongly in SimpleHash
    [SHIRO-570] - SimpleCookie should check the path of the cookie

New Feature

    [SHIRO-200] - Add ability to configure basic authentication for specific HTTP methods
    [SHIRO-395] - Add an Event Bus for event publishing and low-coupling for custom components/plugins.
    [SHIRO-412] - Hazelcast-based caching and session clustering
    [SHIRO-436] - Add EnvironmentLoader finalizeEnvironment method

Improvement

    [SHIRO-278] - Rename JndiLdapRealm to DefaultLdapRealm
    [SHIRO-300] - WildcardPermission: change visibility of field 'parts' to protected
    [SHIRO-361] - HttpServletResponse.encodeURL: only append JSESSIONID when necessary
    [SHIRO-428] - AuthorizingRealm "no cache" logging should be at DEBUG level, not INFO, OR is should log only once
    [SHIRO-437] - WildcardPermission: conformed toString
    [SHIRO-514] - ExecutorServiceSessionValidationScheduler should create threads with a configurable name
    [SHIRO-564] - WildcardPermission case-insensitive makes parts collections twice
    [SHIRO-566] - CollectionUtils should use Collections wrappers of arrays if possible

Task

    [SHIRO-208] - Correct JDK 1.5 / 1.6 incompatibilities
    [SHIRO-320] - Add an example for using Guice integration.
    [SHIRO-571] - Mark shiro-cas deprecated (replaced with buji-pac4j)


###########################################################
# 1.2.6
###########################################################

Bug

    [SHIRO-545] - JavaEnvironment version getter
    [SHIRO-567] - shiro-root-1.2.5.pom uses invalid encoding, fails to parse with Gradle 2.14


###########################################################
# 1.2.5
###########################################################

Bug

    [SHIRO-443] - SessionValidationScheduler created multiple times, enabling it is not thread safe
    [SHIRO-462] - Authentication exceptions are swallowed
    [SHIRO-467] - Authentication exception gets swallowed
    [SHIRO-550] - Randomize default remember me cipher

Improvement

    [SHIRO-504] - Java 8 support
    [SHIRO-516] - Explicitly specify the version of aspectjtools to avoid build warning
    [SHIRO-562] - WildcardPermission calls String.trim() twice in setParts()


###########################################################
# 1.2.4
###########################################################

Bug

    [SHIRO-517] - Caused by: java.lang.NoClassDefFoundError: Lcom/google/inject/internal/util/$ImmutableList;
    [SHIRO-518] - Shiro-CAS: Security Problem in cas-client-core versions older than 3.3.2
    [SHIRO-556] - https://shiro.apache.org/realm.html appears to link to the javadoc under static/current/apidocs not static/latest

Improvement

    [SHIRO-332] - Change access level of method 'isPermitted' in org.apache.shiro.realm.AuthorizingRealm (line 461) from private to protected
    [SHIRO-496] - Update shiro.guice dependency
    [SHIRO-498] - ThreadLocal should not be created when not necessary


###########################################################
# 1.2.2
###########################################################

Bug:

    [SHIRO-316] - Annotations in samples-aspectj Project Does not Work
    [SHIRO-351] - Shiro Native Session implementation cannot extract JSESSIONID From URL if JSESSIONID is URL parameter (not HTTP parameter)
    [SHIRO-379] - SimpleAccoutRealm concurrency access to roles and users
    [SHIRO-380] - runAs feature (still) doesn't work
    [SHIRO-387] - EnvironmentLoader destroys wrong environment
    [SHIRO-388] - Stackoverflow org.apache.shiro.session.SessionListener.onStop()
    [SHIRO-389] - Fix OSGI Exports for shiro-ehcache
    [SHIRO-390] - OSGi Import for JSP (javax.servlet.jsp) should be declared optional
    [SHIRO-394] - PropertiesRealm reloading not working when loading from file
    [SHIRO-399] - Memory leak for invalid sessions
    [SHIRO-403] - Trunk will not build under JDK 1.7 due to webstart plugin
    [SHIRO-413] - init() method is not called on class that implements org.apache.shiro.util.Initializable
    [SHIRO-415] - isLoginAttempt method in BasicHttpAuthenticationFilter class fails if used in any locale other than English
    [SHIRO-418] - Javadoc typo in JdbcRealm.SaltStyle
    [SHIRO-423] - INI ReflectionBuilder should not wrap reference values
    [SHIRO-429] - perms filter parsing is too sensitive to a trailing space
    [SHIRO-431] - please use git ignore
    [SHIRO-447] - Broken Javadoc links


###########################################################
# 1.2.1
###########################################################

Bug:

    [SHIRO-341] - ReflectionBuilder has invalid log message format
    [SHIRO-342] - Running the example as described at http://shiro.apache.org/10-minute-tutorial.html fails
    [SHIRO-344] - runAs feature doesn't work
    [SHIRO-350] - Creating a subject should not create a session
    [SHIRO-353] - DefaultSecurityManager has invalid SLF4J log instruction
    [SHIRO-354] - Authentication cache
    [SHIRO-358] - Source Tarball doesn't Build
    [SHIRO-363] - PasswordMatcher should support character arrays
    [SHIRO-368] - DomainPermission(string, string) constructor sets targets to the same value as actions
    [SHIRO-375] - Basic authentication issue when using COLON character
    [SHIRO-376] - shiro-cas feature should not depend on shiro-cas
    [SHIRO-377] - PropertiesRealm unable to reload Properties


###########################################################
# 1.2.0
###########################################################

Backwards Incompatible Changes
--------------------------------
- The following org.apache.shiro.mgt.DefaultSecurityManager methods have been removed:
  bindPrincipalsToSession(principals, context)

  This logic has been moved into a SubjectDAO concept to allow end-users to control
  exactly how the Session may be used for subject state persistence.  This allows a
  single point of control rather than needing to configure Shiro in multiple places.

  If you overrode this method in Shiro 1.0 or 1.1, please look at the new
  org.apache.shiro.mgt.DefaultSubjectDAO implementation, which performs compatible logic.
  Documentation for this is covered here:
  http://shiro.apache.org/session-management.html#SessionManagement-SessionsandSubjectState

- The org.apache.shiro.web.session.mgt.ServletContainerSessionManager implementation
  (enabled by default for all web applications) no longer subclasses
  org.apache.shiro.session.mgt.AbstractSessionManager.  AbstractSessionManager existed
  originally to consolidate a 'globalSessionTimeout' configuration property for
  subclasses.  However, the ServletContainerSessionManager has been changed to always
  reflect the session configuration from web.xml (per its namesake).  Because web.xml
  is the definitive source for session timeout configuration, the 'extends' clause
  was removed to avoid configuration confusion: if someone attempted to configure
  'globalSessionTimeout' on a ServletContainerSessionManager instance, it would never
  be honored.  It was better to remove the extends clause to ensure that any
  such configuration would fail fast when Shiro starts up to reflect the invalid config.


Potential Breaking Changes
--------------------------------
- The org.apache.shiro.web.filter.mgt.FilterChainManager class's
  addFilter(String name, Filter filter) semantics have changed.  It now no longer
  attempts to initialize a filter by default before adding the filter to the chain.
  If you ever called this method, you can call the
  addFilter(name, filter, true) method to achieve the <= 1.1 behavior.

- The org.apache.shiro.crypto.SecureRandomNumberGenerator previously defaulted to generating
  128 random _bytes_ each time the nextBytes() method was called.  This is too large for most purposes, so the
  default has been changed to 16 _bytes_ (which equals 128 bits - what was originally intended).  If for some reason
  you need more than 16 bytes (128 bits) of randomly generated bits, you will need to configure the
  'defaultNextByteSize' property to match your desired size (in bytes, NOT bits).

- Shiro's Block Cipher Services (AesCipherService, BlowfishCipherService) have had the following changes:

  1) The internal Cipher Mode and Streaming Cipher Mode have been changed from CFB to the new default of CBC.
     CBC is more commonly used for block ciphers today (e.g. SSL).
     If you were using an AES or Blowfish CipherService you will want to revert to the previous defaults in your config
     to ensure you can still decrypt previously encrypted data.  For example, in code:

     blockCipherService.setMode(OperationMode.CFB);
     blockCipherService.setStreamingMode(OperationMode.CFB);

     or, in shiro.ini:

     blockCipherService.modeName = CFB
     blockCipherService.streamingModeName = CFB

  2) The internal Streaming Padding Scheme has been changed from NONE to PKCS5 as PKCS5 is more commonly used.
     If you were using an AES or Blowfish CipherService for streaming operations, you will want to revert to the
     previous padding scheme default to ensure you can still decrypt previously encrypted data.  For example, in code:

     blockCipherService.setStreamingPaddingScheme(PaddingScheme.NONE);

     or, in shiro.ini:

     blockCipherService.streamingPaddingSchemeName = NoPadding

     Note the difference in code vs shiro.ini in this last example: 'NoPadding' is the correct text value, 'NONE' is
     the correct Enum value.

###########################################################
# 1.1.0
###########################################################

Backwards Incompatible Changes
--------------------------------
- The org.apache.shiro.web.util.RedirectView class's
  appendQueryProperties(StringBuffer targetUrl, Map model, String encodingScheme)
  method has been changed to accept a StringBuilder argument instead of a
  StringBuffer per SHIRO-191.  RedirectView is considered an internal
  implementation support class and Shiro end-users should not be affected by this.
