------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 1.2.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-1343] - Support Ganglia for Knox (Mert Hocanin via Kevin Risden)
    * [KNOX-1421] - Enable OWASP Dependency Check
    * [KNOX-1549] - KnoxSSO should support signing keys per topology

** Improvement
    * [KNOX-16] - Implement IdentityAsserterHttpServletRequestWrapper.ServletInputStreamWrapper methods for performance
    * [KNOX-1011] - Add ldap.port system property to configure LDAP demo server port (Attila Csoma via Kevin Risden)
    * [KNOX-1112] - KnoxShell support for managing simple descriptors
    * [KNOX-1291] - ssl.include|exclude.ciphers & ssl.exclude.protocols support comma or pipe separated lists
    * [KNOX-1359] - Disable kerberos debugging by default
    * [KNOX-1401] - Add HAL+JSON To the List of JSON Content Types (William Watson via Sandeep More)
    * [KNOX-1411] - WEBHBASE service discovery references incorrect property for the port
    * [KNOX-1440] - WEBHDFS: retry should not be attempted for datanode write failures
    * [KNOX-1441] - Enable spotbugs for static build checking
    * [KNOX-1442] - Enable forbiddenapis for static build checking
    * [KNOX-1443] - Add checkstyle to enforce coding style
    * [KNOX-1444] - Upgrade to ASF POM version 21
    * [KNOX-1448] - Maven pom dependency cleanup
    * [KNOX-1460] - Zookeeper tests should call close() instead of stop()
    * [KNOX-1461] - Remove JRE/JDK 1.7 check introduced by KNOX-769
    * [KNOX-1464] - Remove explicit guava dependency from gateway-server InstrUtils
    * [KNOX-1465] - Remove explicit guava dependency from gateway-provider-ha
    * [KNOX-1466] - Remove explicit guava dependency from gateway-provider-rewrite-func-inbound-query-param
    * [KNOX-1467] - Remove explicit guava dependency from gateway-provider-security-preauth
    * [KNOX-1468] - Remove explicit guava dependency from gateway-service-nifi
    * [KNOX-1474] - Bump apacheds dependency version to 2.0.0-AM24
    * [KNOX-1475] - Bump shrinkwrap dependency versions
    * [KNOX-1477] - Bump commons-* dependency versions
    * [KNOX-1478] - Support running checkstyle from submodules
    * [KNOX-1479] - Replace Mockito usage with EasyMock
    * [KNOX-1484] - Bump version dependencies Oct 2018
    * [KNOX-1501] - Upgrade hadoop to 3.1.1
    * [KNOX-1511] - Enable forbiddenapis commons-io signatures
    * [KNOX-1512] - Replace deprecated EasyMock new Capture() calls
    * [KNOX-1516] - Upgrade Jetty to 9.4.12
    * [KNOX-1518] - Large HDFS file downloads are incomplete when content is gzipped
    * [KNOX-1521] - Implement UrlRewriteRequestStream methods for performance
    * [KNOX-1522] - Add HA support for HadoopAuthProvider
    * [KNOX-1528] - Remove hadoop-common dependency from gateway-spi module
    * [KNOX-1530] - Improve Gzip Compression Handling Performance
    * [KNOX-1537] - Cleanup gateway-group no value errors
    * [KNOX-1538] - Remove TODO Auto-generated
    * [KNOX-1540] - Use StandardCharsets where possible
    * [KNOX-1544] - KnoxTokenCredentialCollector should not call System.exit()
    * [KNOX-1545] - KnoxTokenCredentialCollector should expose the type of the collected token
    * [KNOX-1546] - Fix javadoc errors and warnings
    * [KNOX-1547] - Add Ability to set the Truststore Location and Password to KnoxShell
    * [KNOX-1553] - Update documentation to reference org.apache.knox instead of org.apache.hadoop.gateway
    * [KNOX-1554] - Allow Knox site to be built with JDK 11
    * [KNOX-1555] - Update DOAP file
    * [KNOX-1630] - Generate sha256 and sha512 checksums instead of md5 and sha1

** Bug
    * [KNOX-720] - Knox DSL - Ensure that HTTP client is closed on shutdown
    * [KNOX-1093] - KNOX Not Handling safemode state of one of the NameNode In HA state
    * [KNOX-1098] - Livy proxyUser should be added when not present
    * [KNOX-1152] - Guard Against Missing Subject in Identity Assertion (Rick Kellogg via Kevin Risden)
    * [KNOX-1165] - Another unnamed CacheManager already exists in the same VM
    * [KNOX-1207] - YARN V1 UI and MapReduce Job History UI - Rewrite rule bugs
    * [KNOX-1218] - LDAP Group Lookup appears twice in User Guide TOC
    * [KNOX-1221] - WebHDFS read/write performance limitations
    * [KNOX-1222] - Discovery API requests fail against Docker Sandbox
    * [KNOX-1247] - Knox Cloud Federation
    * [KNOX-1337] - Cleanup AbstractGatewayDispatch
    * [KNOX-1405] - Download page must link to KEYS and contain verification details
    * [KNOX-1412] - Failure while executing a `curl` command using Content-Type: text/xml" "Content-Encoding: gzip"
    * [KNOX-1415] - Upgrade Jetty to 9.2.25
    * [KNOX-1416] - Upgrade Spring Framework to 4.3.17
    * [KNOX-1417] - Upgrade Bouncy Castle Dependency from Pac4J
    * [KNOX-1420] - Add app.css path for Zeppelin's style sheet (Prabhjyot Singh via Sandeep More)
    * [KNOX-1422] - Whitelisting not working as expected for knoxauth redirects
    * [KNOX-1424] - knox renaming "app" to "/gateway/ui_ns1/zeppelin/app" (Sameer Shaikh via Sandeep More)
    * [KNOX-1429] - HadoopAuthFilter avoid logging sensitive values
    * [KNOX-1430] - Potential output stream handle leak when copyLarge files in streamResponse (Guang Yang via lmccay)
    * [KNOX-1433] - RMHaBaseDispatcher Class Cleanup - SafeModeException
    * [KNOX-1434] - Visiting Knox Admin UI forces subsequent requests to other services redirect to HTTPS (Vipin Rathor via Sandeep More)
    * [KNOX-1436] - AbstractHdfsHaDispatch failoverRequest - Improve Failover Logging
    * [KNOX-1445] - Ensure that gateway-adapter module classes have @Deprecated annotation
    * [KNOX-1459] - Remove testng assertions
    * [KNOX-1505] - Knox should close CuratorFramework clients when finished
    * [KNOX-1519] - Fix 404s in the documentation
    * [KNOX-1520] - markbook refers to wrong parent-pom version
    * [KNOX-1523] - XML parsing cleanup
    * [KNOX-1526] - Upgrade Jetty to 9.2.26
    * [KNOX-1529] - gateway-shell-release doesn't include shaded jar
    * [KNOX-1541] - Rename Hadoop class in KnoxShell to KnoxSession
    * [KNOX-1556] - [Rewrite Rule] Apache Ambari Favicon and link to NOTICE.txt does not work when using Knox Gateway
    * [KNOX-1557] - Knox service cannot be added to proxied Ambari (through Knox) because master password field is readonly
    * [KNOX-1558] - KnoxToken service returns wrong content type and content length values
    * [KNOX-1577] - Knox automatically derived dispatch whitelist doesn't seem to actually match the knox domain (Phil Zampino and Vipin Rathor via Kevin Risden)
    * [KNOX-1596] - YARNUIV2 Remove policies from service.xml (Sunil Govindan via Kevin Risden)
    * [KNOX-1602] - JsonFilterReader should handle strings, numbers, booleans, and null at root
    * [KNOX-1612] - GatewayAdminTopologyFuncTest#testPutTopology ClassNotFoundException
    * [KNOX-1616] - Fix portmapping with Jetty 9.4
    * [KNOX-1639] - java.lang.IllegalStateException: No org.apache.tomcat.InstanceManager set in ServletContext
    * [KNOX-1645] - Improve JSESSIONID handling
    * [KNOX-1651] - Cleanup IdentityAsserterMessages interfaces

** Sub-task
    * [KNOX-1449] - Ensure all pom.xml files have same header
    * [KNOX-1450] - Remove redundant configurations from pom.xml
    * [KNOX-1451] - Setup base checkstyle plugin
    * [KNOX-1452] - Enable checkstyle no tabs in source file rule
    * [KNOX-1453] - Enable checkstyle no unused imports rule
    * [KNOX-1454] - Enable checkstyle no wildcard imports rule
    * [KNOX-1455] - Enable checkstyle ASF header check rule
    * [KNOX-1456] - Move dependency versions to top level pom properties
    * [KNOX-1457] - Add mailing lists to top level pom
    * [KNOX-1463] - Use maven-dependency-plugin to ensure all dependencies are declared
    * [KNOX-1470] - Remove surefire-version and failsafe-version properties
    * [KNOX-1471] - Remove unused genson dependency
    * [KNOX-1472] - Remove explicit surefire plugin block in child poms
    * [KNOX-1473] - Remove plugin versions that are from parent ASF pom
    * [KNOX-1480] - Remove cobertura-maven-plugin
    * [KNOX-1481] - Remove javancss-maven-plugin
    * [KNOX-1482] - Migrate to maven-site-plugin reportSets
    * [KNOX-1485] - Upgrade bcprov-jdk15on to 1.60
    * [KNOX-1486] - Upgrade commons-lang3 to 3.8.1
    * [KNOX-1487] - Upgrade easymock to 3.6
    * [KNOX-1488] - Upgrade curator to 4.0.1
    * [KNOX-1489] - Upgrade jericho-html to 3.4
    * [KNOX-1490] - Upgrade buildnumber-maven-plugin to 1.4
    * [KNOX-1491] - Upgrade jline to 2.14.6
    * [KNOX-1492] - Upgrade jna to 4.5.2
    * [KNOX-1493] - Upgrade joda-time to 2.10
    * [KNOX-1494] - Upgrade groovy to 2.5.2
    * [KNOX-1495] - Upgrade httpclient to 4.5.6 and httpcore to 4.4.10
    * [KNOX-1496] - Upgrade maven-bundle-plugin to 4.0.0
    * [KNOX-1497] - Upgrade jansi to 1.17.1
    * [KNOX-1498] - Upgrade maven-enforcer-plugin to 3.0.0-M2
    * [KNOX-1499] - Upgrade cors-filter to 2.6
    * [KNOX-1500] - Upgrade rest-assured to 3.1.1
    * [KNOX-1503] - Upgrade slf4j to 1.7.25
    * [KNOX-1504] - Upgrade eclipselink to 2.7.3
    * [KNOX-1506] - Upgrade protobuf-java to 3.6.1
    * [KNOX-1507] - Upgrade okhttp to 2.7.5
    * [KNOX-1508] - Upgrade taglibs-standard-spec and taglibs-standard-impl to 1.2.5
    * [KNOX-1509] - Upgrade pac4j dependencies
    * [KNOX-1510] - Upgrade nimbus-jose-jwt to 6.0.2
    * [KNOX-1513] - Upgrade spring-core to 5.0.9.RELEASE
    * [KNOX-1514] - Upgrade jackson to 2.9.7
    * [KNOX-1515] - Upgrade shiro to 1.4.0 and ehcache to 2.6.11
    * [KNOX-1531] - Remove gzip handler added by KNOX-732
    * [KNOX-1532] - Only decompress/recompress when there are rewrite rules
    * [KNOX-1533] - Disable httpclient transparent content decompression
    * [KNOX-1534] - Avoid try/catch checking for gzip stream
    * [KNOX-1535] - Remove custom gzip helper stream - use commons-compress
    * [KNOX-1578] - JobHistory UI - Broken "ResourceManager" and "NodeManager" links
    * [KNOX-1580] - YARN v1 UI - Scheduler - "Dump scheduler logs" link broken
    * [KNOX-1581] - YARN v1 UI - Application - Node and logs links broken
    * [KNOX-1587] - YARN v1 UI - Fix Spark history links

** Test
    * [KNOX-1548] - Improve ZooKeeperConfigurationMonitorTest to not use Thread.sleep()

** Wish
    * [KNOX-1435] - how to configure rewrite.xml and service.xml?

** Task
    * [KNOX-542] - Add replayBufferSize defaults to the sandbox topology (Matthew Sharp via Kevin Risden)
    * [KNOX-543] - Add documentation and configuration examples to the user guide for replaybuffersize
    * [KNOX-1402] - Upgrade to Apache parent pom version 20
    * [KNOX-1407] - Please delete old releases from mirroring system
    * [KNOX-1408] - Remove the Roadmap confluence wiki page
    * [KNOX-1524] - Hive "select *" performance evaluation
    * [KNOX-1525] - HBase "scan" performance evaluation
    * [KNOX-1536] - Replace redundant types with the diamond operator
    * [KNOX-1539] - Put the array declaration after the type
    * [KNOX-1542] - Upgrade to EasyMock 4.0.1
    * [KNOX-1543] - Update documentation for KNOX-1531
    * [KNOX-1622] - Enable the secure processing feature on all XPathFactory instances
    * [KNOX-1637] - ant verify-stage should check knoxshell artifacts

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 1.1.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-1040] - Initial new descriptor and provider config wizard support
    * [KNOX-1040] - Accommodate omission of cluster user in descriptor discovery config
    * [KNOX-1040] - Implemented the ability to add config elements to provider configurations and descriptors.
    * [KNOX-1040] - Added modification support: delete, discard changes, save changes
    * [KNOX-1040] - Separated the provider config selection modal into its own component.
    * [KNOX-1040] - Added visual indicator that a provider config has not been removed because it is referenced, and improved editable fields
    * [KNOX-1040] - Initial changes to support simple descriptors and provider configurations in the Admin UI.

** Improvement
    * [KNOX-1395] - Change Derived Whitelist logic to not use InetAddress of Localhost for getting Hostname
    * [KNOX-1394] - OOTB gateway-site.xml to Default to Demo Whitelist Scenario
    * [KNOX-1381] - Fix logging
    * [KNOX-1378] - Declare SSO params using KnoxSSO service option  knoxsso.expected.params
    * [KNOX-1379] - Default dispatch whitelist should not include localhost when the Knox host domain can be determined
    * [KNOX-1363] - Support service role-based whitelist for dispatches and redirects
    * [KNOX-1357] - Add configurable list of AutoDeploy topologies to deploy on server start
    * [KNOX-1350] - Complete centralization of manager.xml topology config in gateway-site.xml
    * [KNOX-1339] - (KIP-11 Federation)  Add support for header preauth dispatch
    * [KNOX-1350] - Centralize Group Lookup Config in gateway-site.xml
    * [KNOX-1338] - Add Config Property for Knox Admin Groups for AclsAuthz Provider Use
    * [KNOX-1326] - merge DATANODE rewrite rules into HDFSUI
    * [KNOX-1336] - Upgrade libpam4j to abstractj/1.9.1
    * [KNOX-1315] - Spark UI urls issue: Jobs, stdout/stderr and threadDump links (Guang Yang via lmccay)
    * [KNOX-1143] - Add MR job history ws rest api rewrite rule to jobhistoryui (Guang Yang via lmccay)
    * [KNOX-1089] - Upgrade Jetty
    * [KNOX-1329] - Upgrade the transitive springframework spring core to even newer version
    * [KNOX-1290] - Create gateway definition for Log Search - version 0.5.0 (Olivér Szabó via lmccay)
    * [KNOX-1329] - Upgrade the transitive springframework spring core from pac4j
    * [KNOX-1328] - Change Default Authentication to KnoxSSO for Admin UI
    * [KNOX-1320] - Upgrade JQuery in the KnoxAuth Application
    * [KNOX-1327] - Log REST invocation error exceptions encountered during service discovery at ERROR level
    * [KNOX-1322] - Support configuration property to forcibly treat topologies as read-only
    * [KNOX-1314] - SSOCookieProvider should be able to derive a default provider URL
    * [KNOX-1319] - Better logging when discovery fails to access service configurations
    * [KNOX-1318] - Update available Admin UI services to include NiFi
    * [KNOX-1317] - Ambari service discovery config handling of nested derived properties
    * [KNOX-1193] - NiFi service discovery support
    * [KNOX-1154] - Dump Kerberos settings upon startup. (Rick Kellogg via Phil Zampino)
    * [KNOX-1310] - The X-Content-Type-Options header should be set as 'nosniff'
    * [KNOX-1309] - Admin API resource names should be validated
    * [KNOX-1308] - Implement safeguards against XML entity injection/expansion in the Admin API
    * [KNOX-1227] - Add KnoxSSO and KnoxToken services to the new descriptor service options
    * [KNOX-1266] - Employ gateway-site config for default discovery address and cluster values
    * [KNOX-1275] - Add json-smart explicitly to gateway-spi (Saravanan Krishnamoorthy via lmccay)
    * [KNOX-1306] - Remove requirement for cluster when discovery address is specified in admin UI new descriptor wizard.
    * [KNOX-1193] - LOGSEARCH discovery support
    * [KNOX-1305] - Add postfix and infix rewrite functions
    * [KNOX-1236] - Support service discovery for YARNUIV2
    * [KNOX-1202] - Validate resource names
    * [KNOX-1300] - Add default provider configuration for demo LDAP to the distribution
    * [KNOX-1193] - Add service discovery support for Spark Thrift UI
    * [KNOX-1293] - Support for Ambari discovery of SPARK2 services
    * [KNOX-1294] - Upgrade Jackson-Databind to 2.9.5
    * [KNOX-1292] - Upgrade Groovy to 2.4.8
    * [KNOX-1289] - Deletion of generated topology deletes associated descriptor file
    * [KNOX-1135] - Add configuration property for allowing remote configuration to be read by unauthenticated clients
    * [KNOX-1281] - HA provider configuration wizard should require the service name property value
    * [KNOX-1279] - HaProvider wizard should include ability to specify ZooKeeper-related properties
    * [KNOX-1257] - WebAppSec provider configuration wizard
    * [KNOX-1276] - Improve HA provider configuration wizard
    * [KNOX-1269] - Generate services declared in descriptor without URLs or params, but with valid HaProvider ZK config
    * [KNOX-1267] - Add support for Ranger-related service discovery with HTTPS configurations
    * [KNOX-1268] - Add support for HDFS-related service discovery with HTTPS configurations
    * [KNOX-1258] - Add Anonymous authentication provider to provider config wizard options.
    * [KNOX-1259] - Removed height restriction on resource type and resource list tables
    * [KNOX-1263] - Admin UI provider config details should organize providers by role rather than name
    * [KNOX-1187] - Support for Distributed Alias Service
    * [KNOX-1182] - Removed lingering configuration, which is no longer used for RM-based services
    * [KNOX-1233] - Excluded lang-tag from the pac4j-oidc dependency
    * [KNOX-1243] - Normalize the required DNs that are Configured in KnoxToken Service
    * [KNOX-1220] - HostMap provider configuration wizard option in Admin UI
    * [KNOX-1212] - Support new YARN webui2 in Knox (Sunil Govindan via Phil Zampino)
    * [KNOX-1153] - Support for determining whether HA is enabled or not from the service's configuration
    * [KNOX-1215] - Hadoop Group Lookup Provider Config Wizard
    * [KNOX-1229] - Ambari service discovery REST invocations need reasonable timeout
    * [KNOX-1228] - Atlas HA ZooKeeper Config Discovery
    * [KNOX-1224] - Knox Proxy HADispatcher to support Atlas in HA (Nixon Rodrigues via Phil Zampino)
    * [KNOX-1219] - Eliminated duplicate useTwoWaySsl dispatch filter params
    * [KNOX-1216] - Admin UI and runtime validation for new descriptor provider configuration reference
    * [KNOX-1211] - Admin UI XSS/XSRF Protection
    * [KNOX-1202] - Added UI elements to indicate invalid param values
    * [KNOX-1202] - Descriptor and Provider Configuration Wizard Input Validation
    * [KNOX-1190] - Compress cookies set by Pac4J, in some cases the cookie size exceeds 4K and cause them not to set.
    * [KNOX-1200] - Update Apache parent pom version
    * [KNOX-1193] - Discovery support for SOLR, STORM and STORM-LOGVIEWER, and config for additional support
    * [KNOX-1198] - Support Ambari service discovery mappings override/augmentation with external config
    * [KNOX-1193] - Added discovery support for LIVYSERVER, SPARKHISTORYUI, JOBHISTORYUI, YARNUI, FALCON, OOZIEUI, HBASEUI, HDFSUI, DRUID-COORDINATOR-UI and DRUID-OVERLORD-UI
    * [KNOX-1194] - Safe loading and dumping of yaml, and filter empty-value properties from JSON output.
    * [KNOX-1176] - Update provider configuration references if new reference is invalid
    * [KNOX-1186] - Descriptors and Topology Generation Support for Service Versioning
    * [KNOX-1167] - Support HDFS Federation in Knox topology generation
    * [KNOX-1188] - Maintain provider parameter order in generated topologies
    * [KNOX-1181] - Add support for RANGER and RANGERUI service endpoint discovery via Ambari
    * [KNOX-1159] - Create ".sha1" files when releasing instead of ".sha"
    * [KNOX-1040] - Added ability to edit provider params, service params, and provider URLs.
    * [KNOX-1178] - Add test to ensure regex or support in RegexIdentityAssertionFilter
    * [KNOX-1169] - Clear Cluster Configuration Monitor Cache When No Relevant Descriptors Remain
    * [KNOX-1153] - Service-level overrides for HA provider configuration in generated topologies, and alternate provide config formats.

** Bug
    * [KNOX-1399] - Duplicate configuration for gateway.dispatch.whitelist in gateway-site.xml OOTB
    * [KNOX-1398] - WebHDFS and WebHBase APIs listed incorrectly as services that need whitelist enforcement
	  * [KNOX-1397] - Admin UI Topologies List needs to Refresh on New or Deleted Topologies
	  * [KNOX-1396] - Admin UI Provider Config wizard URL validation requires a port
    * [KNOX-1360] - Fix ambari broken images (Aleksandr Kovalenko via Sandeep More)
    * [KNOX-1358] - Create new version definition for SHS (Marco Gaido via lmccay)
    * [KNOX-1345] - Fix javadoc errors
    * [KNOX-1353] - SHS always showing link to incomplete applications (Marco Gaido via lmccay)
    * [KNOX-1356] - Fix X-Forwarded-Context header (Marco Gaido via Sandeep More)
    * [KNOX-1352] - Service Discovery is not honoring the enabled attribute of HA Provider configuration
    * [KNOX-1349] - Fix Knox versioning for service defs. (UnitTest to be followed in next commit)
    * [KNOX-1348] - Provider Configuration Wizard HA Provider Validation for ZooKeeper Ensemble is Wrong
    * [KNOX-1347] - X-Forwarded-Context header is not rewritten correctly
    * [KNOX-1346] - SNI Mismatch Failures due to Wrong Host Header
    * [KNOX-1344] - Atlas HA dispatch mishandling SSO redirection
    * [KNOX-1342] - Prevent Host Header from being sent to Atlas
    * [KNOX-1341] - Constrain cookies added to the HadoopAuthCookieStore
    * [KNOX-1340] - HDFSUI proxy to a host specified in query string (Bharat Viswanadham via Sandeep More)
    * [KNOX-1335] - Spark service discovery when SSL is configured
    * [KNOX-1333] - Admin UI needs to handle SSO cookie expiration
    * [KNOX-1149] - HBase High Availability Fails with Kerberos Secured Cluster
    * [KNOX-1330] - Fix favicon for Zeppelin (Prabhjyot Singh via Sandeep More)
    * [KNOX-1331] - Unable to update referenced (XML format) provider config from Admin UI
    * [KNOX-1166] - Upgrade HTTPClient due to Hostname Verification Bug
    * [KNOX-1326] - Fix the Datanode link on the Namenode page
    * [KNOX-1314] - SSOCookieProvider derive a default provider URL with configured gateway.path and fix handling of X-FORWARDED-HOST with port in it.
    * [KNOX-1324] - Remote Configuration Monitor should not log stacktrace when client is not configured
    * [KNOX-1323] - Reconcile WebAppSecurity provider X-Frame-Options and X-Content-Type-Options param names
    * [KNOX-1157] - Scoped rewrite rules are treated as global rules in some cases (Wei Han via Phil Zampino)
    * [KNOX-1313] - Contributing provider config wizards incorrectly produce config when validation fails
    * [KNOX-1310] - Handle custom param value for X-Content-Type-Options header
    * [KNOX-1312] - Zeppelin-related discovery is incorrectly configured
    * [KNOX-1311] - Ambari logos are not showing up in Ambari Web UI (Yusaku Sako via lmccay)
    * [KNOX-1244] - YARNUIV2 fix HA support (Sunil Govind via Sandeep More)
    * [KNOX-1274] - Update location headers to make sure SSO redirects are proper (Marco Gaido via Sandeep More)
    * [KNOX-1295] - X-Forwarded-Context contains not the full base path in SHS request (Atilla Csoma and Marco Gaido via lmccay)
    * [KNOX-1297] - HDFSUI requires its own HA Dispatch Provider
    * [KNOX-1296] - Fix logging for remote alias service
    * [KNOX-1114] - In case of port conflict log error and move on
    * [KNOX-1287] - Invalid federated namenode namespace declaration should not produce invalid URLs in topologies.
    * [KNOX-1288] - NPE during service discovery
    * [KNOX-1249] - Fix rewrite issues with YarnUIV2 (Sunil Govind via Sandeep More)
    * [KNOX-1283] - DefaultURLManager markFailed method throws NPE if urls is empty
    * [KNOX-1277] - make sure HDFS UI is rendered correctly without a forward slash (Bharat Viswanadham  via Sandeep More)
    * [KNOX-1282] - Update rewrite rules to reflect changes to content type (Bharat Viswanadham via Sandeep More)
    * [KNOX-1264] - Fix job link under the jobHistoryUI (Sunil Govind via Sandeep)
    * [KNOX-1278] - HaProvider wizard uses comma instead of semi-colon as delimiter
    * [KNOX-1271] - AtlasZookeeperURLManager not handling empty namespace config values correctly
    * [KNOX-1272] - ZEPPELINWS URLs are generated incorrectly
    * [KNOX-1253] - TopologyService incorrectly reports failure to delete file that has been successfully deleted.
    * [KNOX-1261] - Fix issue where listener is not decrypting the value before updating, fix  annoying error messages
    * [KNOX-1254] - Make sure Remote Alias Registry prefers remote over local
    * [KNOX-1256] - AclsAuthz provider wizard produces incorrect param
    * [KNOX-1251] - Fix NPE in RemoteAliasService#stop()
    * [KNOX-1246] - Update service config in Knox to support latest configurations for Ranger.(Vishal Suvagia via lmccay)
    * [KNOX-1248] - AtlasZookeeperURLManager handle missing namespace property from Atlas config with appropriate default value
    * [KNOX-1182] - For YARN HA, RESOURCEMANAGER service should have both active and standby endpoint URLs
    * [KNOX-1242] - Fix rewrite rules for HDFS UI] - Datanode UI link
    * [KNOX-1239] - HBaseZookeeperURLManager ignores configured ZooKeeper namespace
    * [KNOX-1238] - Fix Custom Truststore Settings for Gateway
    * [KNOX-1233] - Pac4j dependency causing intermittent compilation errors
    * [KNOX-1230] - Many Concurrent Requests to Knox causes URL Mangling
    * [KNOX-1231] - Atlas HA URL Manager must handle ZooKeeeper namespaces that begin with leading slash
    * [KNOX-1223] - Fix redirect rules for Zeppelin /api/ticket (Prabhjyot Singh  via Sandeep More)
    * [KNOX-1091] - Knox Audit Logging] - duplicate correlation ids (Kevin Risden via Sandeep More)
    * [KNOX-1210] - Update response code from 403 to 401 for token validation failures (for XHR request)
    * [KNOX-1210] - Fix token expiration for XHR request
    * [KNOX-1217] - PAM auth provider configuration wizard should allow for specifying the login module/service
    * [KNOX-1202] - Eliminate unintended persistence of UI-only provider configuration properties
    * [KNOX-1208] - Fix WEBHBASE ZooKeeper ensemble discovery when proxying HA HBase
    * [KNOX-1203] - Shiro-based provider configurations must be produced with correct param order from Admin UI
    * [KNOX-1200] - Fixing maven assembly errors
    * [KNOX-1201] - Disable DocTypes
    * [KNOX-1195] - Some misc code cleanups
    * [KNOX-1197] - Fix a bug where Anonymous auth is not picked up with federation provider
    * [KNOX-1199] - fix missing ASL header
    * [KNOX-1199] - Ambari View API for Tez View needs Double Quotes Encoded on Dispatch
    * [KNOX-1192] - Make sure config variables such as defaultUrl get picked up
    * [KNOX-1177] - Retighten the rewrite rule on oozieui to reduce false positives. Replace http with * in rule.
    * [KNOX-1177] - Retighten the rewrite rule on oozieui to reduce false positives
    * [KNOX-1108] - NiFiHaDispatch not failing over (Jeff Storck via lmccay)
    * [KNOX-1040] - Fixed refresh after descriptor saving, and added editable discovery fields to descriptor detail view

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 1.0.0
------------------------------------------------------------------------------
** New Feature
** Improvement
    * [KNOX-998]  - Rename class packages to org.apache.knox.gateway
    * [KNOX-1161] - Update hadoop dependencies to Hadoop 3 (Colm O hEigeartaigh, reviewed by Sandeep More)
    * [KNOX-1043] - Ambari Service Discovery Support for HA-Enabled Services
    * [KNOX-1144] - Establish provider configuration reference relationships for existing descriptors at gateway startup
    * [KNOX-1137] - KnoxCLI For Listing Provider Configurations and Descriptors in a Remote Configuration Registry
    * [KNOX-1145] - Upgrade Jackson due to CVE-2017-7525
** Bug
    * [KNOX-1151] - Need Explicit curator-recipes dependency in pom
    * [KNOX-1141] - Coverity Issues Reported For AmbariConfigurationMonitor
    * [KNOX-1116] - Builds of src distributions result in unexpected result from gateway version API.

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.14.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-1014] - Service Discovery and Topology Generation Framework (Phil Zampino via lmccay)
    * [KNOX-1062] - Service-Level Parameter Support in Service Discovery and Topology Generation (Phil Zampino via lmccay)
    * [KNOX-1077] - Knox should notice simple descriptors on startup (Phil Zampino via lmccay)
    * [KNOX-1063] - Simple Descriptor discovery should notice YAML file with .yaml extension (Phil Zampino via lmccay)
    * [KNOX-1105] - Provide indication that topologies were generated from simple descriptors (Phil Zampino via lmccay)
    * [KNOX-1110] - Simple Descriptors Must Accommodate Application elements (Phil Zampino via lmccay)
    * [KNOX-1039] - Added admin APIs for managing shared provider configurations and descriptors (Phil Zampino via Sandeep More)
    * [KNOX-970] - Add NiFi HA dispatch to service def (Jeff Storck via lmccay)
    * [KNOX-970] - Add support for proxying NiFi (Jeff Storck via lmccay)
    * [KNOX-842] - Add support for Livy (Spark REST Service).
    * [KNOX-1017] - Add support for enabling "Strict-Transport-Security" header in Knox responses (Latha Appanna via lmccay)
    * [KNOX-1049] - Default Service or App Context for Topologies
    * [KNOX-1041] - High Availability Support For Apache SOLR, HBase & Kafka (Rick Kellogg via Sandeep More)
    * [KNOX-1046] - Add Client Cert Wanted Capability with Configurable Validation that Checks for It
    * [KNOX-1072] - Add Client Cert Required Capability to KnoxToken
    * [KNOX-1107] - Remote Configuration Registry Client Service (Phil Zampino via lmccay)
    * [KNOX-1128] - Readonly protection for generated topologies in Knox Admin UI
    * [KNOX-1013] - Monitor Ambari for Cluster Topology changes (Phil Zampino via lmccay)
    * [KNOX-1136] - Provision Consistent Credentials For Generated Topologies (phil zampino via lmccay)
    * [KNOX-1129] - Remote Configuration Monitor Should Define The Entries It Monitors If They're Not Yet Defined (Phil Zampino via lmccay)
    * [KNOX-1125] - KNOXCLI Additions to Support Management of Knox config in remote registry (Phil Zampino via Sandeep More)
** Improvement
    * [KNOX-921] - Httpclient max connections are always set to default values
    * [KNOX-1106] - Tighten the rewrite rule on oozieui to reduce false positives (Wei Han via Sandeep More)
    * [KNOX-1104] - Test to verify behavior of HaProvider service with only a single URL ( Phil Zampino via Sandeep More)
    * [KNOX-1034] - Make Default identity-assertion provider actually be the default
    * [KNOX-1078] - Add option to preserve original string when lookup fails in regex based identity assertion provider (Wei Han via Sandeep More)
    * [KNOX-1049] - add unit test to gatewayfiltertest
    * [KNOX-1076] - Update nimbus-jose-jwt to 4.41.2
    * [KNOX-1049] - check for null topology to avoid NPE in tests
    * [KNOX-1088] - Remove LDAP BaseDirectoryService*
    * [KNOX-1073] - Upgrade PAC4J to a more recent version
    * [KNOX-1001] - Knox Shell Sqoop.Request class is Package Private (Andrei Viaryshka via lmccay)
    * [KNOX-1021] - Should handle empty string for endpoint token service audience list
    * [KNOX-1082] - Add support to validate the "nbf" claim for JWTs
    * [KNOX-1067] - Support different signature algorithms for JWTs
    * [KNOX-1045] - Knox Token Service has a trailing whitespace for the token_type attribute
    * [KNOX-1081] - Remove Picketlink Provider Module
    * [KNOX-895] - Pass Headers and Cookies to websocket backend
    * [KNOX-1064] - Externalize Hadoop Service Configuration Details and Service URL Creation (Phil Zampino via Sandeep More)
    * [KNOX-1070] - Drop support for Java 7 (Rick Kellogg via Sandeep More)
    * [KNOX-1075 and KNOX-1070] - Enforce minimum maven and Java version (Rick Kellogg via Sandeep More)
    * [KNOX-1048] - Knoxshell samples missing hadoop-examples.jar
    * [KNOX-1069] - KnoxSSO token audience config should trim values
    * [KNOX-1055] - Spark page characters &amp; should be treated as a delimiter (Mars via Sandeep More)
    * [KNOX-1074] - Workflow Manager view fails to load when using ambari through KNOX (Venkatasairam Lanka via lmccay)
    * [KNOX-1071] - Replace java.util.Random with SecureRandom
    * [KNOX-1014] - remove extraneous directory
    * [KNOX-1065] - Add some unit tests for the DefaultTokenAuthorityService
    * [KNOX-1060] - JWT.getExpires() returns null
    * [KNOX-1058] - Fix JWTToken.parseToken
    * [KNOX-1036] - Fix a number of issues relating to JWTokenAuthority
    * [KNOX-1054] - Make DefaultURLManager thread-safe (Phil Zampino via Sandeep More)
    * [KNOX-1052] - Add some tests for the Knox SSO Service
    * [KNOX-1049] - Default Service or App Context for Topologies
    * [KNOX-1042] - Fix test timeout (Phil Zampino via Sandeep More)
    * [KNOX-1047] - Add some tests for the Knox Token Service
    * [KNOX-1044] - Change Rest Assured "expect" to "then"
    * [KNOX-1038] - Replace deprecated rest-assured "content" call with "body"
    * [KNOX-1037] - Upgrade rest-assured dependency
    * [KNOX-1035] - Move JWTTokenTest to gateway-spi module + add more tests
    * [KNOX-1027] - Add support to configure the issuer for the JWT filters
    * [KNOX-1028] - X-Frame-Options and other security headers are ineffective
    * [KNOX-962] - Add signature validation tests for the JWT filters
    * [KNOX-1024] - Add Kafka test to GatewayBasicFuncTest
    * [KNOX-1020] - Minor code improvements
    * [KNOX-1019] - Remove test-driver "hack" to copy services
    * [KNOX-1018] - Remove junit.framework calls
    * [KNOX-738] - Remove references to deprecated httpclient class DefaultHttpClient
    * [KNOX-963] - Use GatewayTestDriver to configure LDAP in gateway-tests
    * [KNOX-978] - Add a test for the SOLR REST API
    * [KNOX-989] - Report metrics at service level (/webhdfs/v1) instead of url with args (/webhdfs/v1/?op=LISTSTATUS) (Mohammad Kamrul Islam via Sandeep More)
    * [KNOX-993] - The samples README for knoxshell references the 0.5.0 userguide
    * [KNOX-992] - Add README for the knoxshell distribution (Colm O hEigeartaigh and lmccay via lmccay)
    * [KNOX-1119] - Pac4J OAuth/OpenID Principal Needs to be Configurable (Andreas Hildebrandt via lmccay)
    * [KNOX-1120] - Pac4J Stop Using ConfigSingleton
    * [KNOX-1128] - Readonly protection for generated topologies in Knox Admin UI
    * [KNOX-1083] - HttpClient default timeout will be 20 sec
    * [KNOX-1124] - Service Discovery Doesn't Work For Simple Descriptors With .yaml Extension (Phil Zampino  via Sandeep More)
    * [KNOX-1117] - HostMap Provider configuration comment in topologies included with Knox has typos (Phil Zampino via Sandeep More)
    * [KNOX-1119] - Add missing tests for valid and invalid id attributes
    * [KNOX-1128] - Readonly protection for generated topologies in Knox Admin UI
** Bug
    * [KNOX-1003] - Fix the rewrite rules for Zeppelin 0.7.2 UI
    * [KNOX-1004] - Failing (flaky) Knox unit tests
    * [KNOX-1005] - WebHbase get rid of extra decoding
    * [KNOX-1061] - KnoxSSO Redirects with Query Params in the OriginalUrl Broken
    * [KNOX-1068] - Add support for HTTP Head request
    * [KNOX-1079] - Regression: proxy for Atlas fails with j_spring_security_check during login (Madhan Neethiraj via lmccay)
    * [KNOX-1022] - Configuring knox token ttl to higher value generates an access token which is not valid
    * [KNOX-1118] - Remove POC Service Definition for AmbariUI
    * [KNOX-1134] - Regression due to KNOX-1119
    * [KNOX-1132] - Address Coverity Defects in gateway-service-remoteconfig (Phil Zampino via lmccay)
    * [KNOX-1139] - Fix threapool size for UnitTests (Attila Csoma via Sandeep More)

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.13.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-976] - Add Jupyter Kernel Gateway Service Definitions (Jesus Alvarez via lmccay)
    * [KNOX-626] - NameNode UI through Knox has various tabs not working
    * [KNOX-975] - Add NodeManager Service Definition
    * [KNOX-982] - Datanode JMX REST Knox service
    * [KNOX-974] - Update HDFS UI services
    * [KNOX-973] - Update Yarn UI services
    * [KNOX-786] - Spark Thriftserver UI support through Knox (Chandana Mirashi via lmccay)
    * [KNOX-981] - Make Topology Instance Available in WebContext for Runtime Access
    * [KNOX-788] - Apache Atlas Admin UI Support through Knox (Nixon Rodrigues via Sandeep More)
    * [KNOX-789] - Apache Atlas REST API support (Nixon Rodrigues via Sandeep More)
    * [KNOX-940] - Support REST access exposing metrics (Mohammad Kamrul Islam via Sandeep More)
    * [KNOX-932] - Option to remove the server-name from HTTP-header response (Lawrence McCay IV via lmccay)
    * [KNOX-768] - Apache Kafka REST API Support (Rick Kellogg via Sandeep More)
    * [KNOX-751] - Need rewrite function to capture href information from single page host to rewrite output of node hosts (Jeffrey E Rodriguez via lmccay)
    * [KNOX-928] - Support Default Topology Feature and some misc fixes
    * [KNOX-928] - Topology Port Mapping Feature
    * [KNOX-938] - JWTProvider to accept Query Param as well as Bearer Token
    * [KNOX-390] - extended to include proxy provided headers such as X-Forwarded-For
    * [KNOX-390] - Include client IP and HTTP verb in audit log
** Improvement
    * [KNOX-909] - Ambari rewrite update for SmartSense
    * [KNOX-910] - Move from SHA-1 to SHA-256 (Jeffrey E Rodriguez via Sandeep More)
    * [KNOX-917] - Fix Pig view in Ambari (Gaurav Nagar via Sandeep More)
    * [KNOX-920] - Make avatica service use default policies
    * [KNOX-923] - Add ClientData to KnoxToken Service to Include in JSON Response
    * [KNOX-911] - Ability to scope cookies to a given Path (Attila Kanto via lmccay)
    * [KNOX-892] - Fix FindBugs "Dodgy Code" issues (Colm O hEigeartaigh via lmccay)
    * [KNOX-816] - Make private inner classes static (Colm O hEigeartaigh via lmccay)
    * [KNOX-849] - Fix SimplePrincipalMapper and CommonIdentityAssertionFilter
    * [KNOX-930] - ScopingCookies Feature Logging too Much
    * [KNOX-939] - Missing Licenses Element in POM files
    * [KNOX-937] - Remove redundant type information from Collections (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-944] - Make PBE Hashing, Iteration Count and Salt Configurable and Manageable
    * [KNOX-942] - Remove extraneous spaces around '=' (Colm O hEigeartaigh via lmccay)
    * [KNOX-948] - Refactor AbstractJWTFilter implementations (Colm O hEigeartaigh via lmccay)
    * [KNOX-928] - minor fix for templating of ConcurrentHashMap usage
    * [KNOX-952] - Add common tests for the two JWT filters (Colm O hEigeartaigh via lmccay)
    * [KNOX-946] - Spelling (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-954] - Properly handle parsing errors for JWT tokens
    * [KNOX-956] - Consolidate ldif files in gateway-tests  (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-957] - Remove hard-coded versions from gateway-test-release (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-947] - SSOCookieProvider to be configurable for signature verification key/PEM
    * [KNOX-958] - Consolidate test config/drivers (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-759] - jansi dependency causes issues starting knox shell (Colm O hEigeartaigh via lmccay)
    * [KNOX-964] - upgrade to httpclient 4.5.3 to avoid licensing issues HTTPCLIENT-1743/LEGAL-240 (Jeffrey E Rodriguez via lmccay)
    * [KNOX-965] - SecureQueryDecryptProcessor decode call could return null thus it would get a NPE (Jeffrey E Rodriguez via lmccay)
    * [KNOX-967] - Duplicate dependencies defined in root pom (Colm O hEigeartaigh via lmccay )
    * [KNOX-776] - Rewrite rule handling for Websockets (Jesus Alvarez via Sandeep More)
    * [KNOX-977] - Exclude extraneous bundle.map in admin-ui file from release
    * [KNOX-789] - Add specific policy definition to Atlas (Nixon Rodrigues via lmccay)
    * [KNOX-972] - Update Hbase UI service (Jeffrey E Rodriguez via lmccay)
    * [KNOX-986] - JMX Metric Reporter and OutOfMemory Issues (Zsombor Gegesy via Sandeep More)
** Bug
    * [KNOX-908] - Update copyright in NOTICE file
    * [KNOX-918] - Static Member for redirectToUrl in Shiro RedirectToFilter
    * [KNOX-913] - Invalid login.jsp redirect for Ranger Admin UI
    * [KNOX-936] - On websocket error properly close all the sessions and containers.
    * [KNOX-933] - PicketLink Provider must set Secure and HTTPOnly flags on Cookie (Krishna Pandey via lmccay)
    * [KNOX-950] - Fix a bug that prevents wss:// protocol from connection to websocket backend.
    * [KNOX-960] - Fix build failures
    * [KNOX-966] - NPE when Shiro is misconfigured (Rob Vesse via lmccay)
    * [KNOX-754] - Revert KNOX-754 scope change to just the Location header"
    * [KNOX-690] - Revert KNOX-690 fixing the encoding/decoding in the parser and template
    * [KNOX-949] - WeBHDFS proxy replaces %20 encoded spaces in URL with + encoding
    * [KNOX-995] - KnoxSSO Form IDP Issue with Firefox
    * [KNOX-992] - Add README for the knoxshell distribution (Colm O hEigeartaigh and lmccay via lmccay)
    * [KNOX-993] - The samples README for knoxshell references the 0.5.0 userguide
    * [KNOX-994] - Introducing a new variable that enhances the function, needed for Zeppelin / fix

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.12.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-841] - Proxy support for Solr UI and API
    * [KNOX-719] - YARN RM HA implementation for REST API and UI (Jeffrey E Rodriguez and Sumit Gupta)
    * [KNOX-848] - Support for Gremlin Server REST (Shi Wang via Sumit Gupta)
    * [KNOX-861] - Support for pluggable validator for Header pre authentication provider (Mohammad Kamrul Islam via Sandeep More)
    * [KNOX-850] - KnoxToken API for Acquiring a Knox Access Token
    * [KNOX-710] - Support Zeppelin UI through Knox
    * [KNOX-865] - Added a release module for KnoxShell
    * [KNOX-881] - Add KnoxSh init, list and destroy to knoxshell.sh
** Improvement
    * [KNOX-841] - Changed version number for Solr proxy support
    * [KNOX-890] - Make IdleTimeout Configurable in Knox Gateway Server (make default 5 mins)
    * [KNOX-890] - Make IdleTimeout Configurable in Knox Gateway Server
    * [KNOX-845] - refactoring for the release tests
    * [KNOX-868] - Add /ext/native to java.library.path in gateway.sh (Mohammad Kamrul Islam via Sandeep More)
    * [KNOX-869] - Support for multiple pre-auth validaors (Mohammad Kamrul Islam via Sandeep More)
    * [KNOX-839] - new ant tasks to help with admin-ui development
    * [KNOX-873] - JWTFederationFilter must Validate Expected Audiences
    * [KNOX-874] - Updated hadoop dependency in root pom
    * [KNOX-864] - Making gateway and ldap scripts upstart compatible (Attila Kanto via Sumit Gupta)
    * [KNOX-854] - Consolidate DocumentBuilderFactory calls + enable SECURE_PROCESSING (Colm O hEigeartaigh via Sumit Gupta)
    * [KNOX-828] - Adding truncate for HBase table in KnoxShell (Vincent Devillers via Sumit Gupta)
    * [KNOX-845] - Added webhdfs groovy shell tests using MiniDFSCluster
    * [KNOX-806] - Implement Closeable for deallocable resources (Vincent Devillers via Sumit Gupta)
    * [KNOX-805] - ability to define custom HttpClient (Vincent Devillers via Sumit Gupta)
    * [KNOX-809] - Enhance the 'put' in HFDS for ClientDSL (Vincent Devillers via Sumit Gupta)
    * [KNOX-810] - Add status in HDFS for ClientDSL (Vincent Devillers via Sumit Gupta)
    * [KNOX-813] - Added rename in HDFS for ClientDSL (Vincent Devillers/Khanh Maudoux via Sumit Gupta)
    * [KNOX-858] - Simplifying Hamcrest dependencies (Colm O hEigeartaigh via Sumit Gupta)
** Bug
    * [KNOX-876] - Fix FindBugs "Experimental" issues (Colm O hEigeartaigh via lmccay)
    * [KNOX-883] - Fix FindBugs "Correctness" issues (Colm O hEigeartaigh via lmccay)
    * [KNOX-730] - pac4jRequestedUrl = null after saml2 assertion is parsed
    * [KNOX-879] - Fix url encoding issue for KnoxSSO
    * [KNOX-875] - Added version element to topology schema (Jeffrey E Rodriguez via Sandeep More)
    * [KNOX-866] - Fix validate-topology cli command (Richard Ding via Sandeep More)
    * [KNOX-863] - Consolidate TransformerFactory calls + enable (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-877] - Coverity Scan Cleanup
    * [KNOX-871] - Fix FindBugs -  Malicious code vulnerability (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-769] - Fix SecureClusterTest for Java 1.7
    * [KNOX-867] - Fix FindBugs, bad practice issues (Colm O hEigeartaigh via Sandeep More)
    * [KNOX-838] - Admin UI title change
    * [KNOX-820] - Changed the originalUrl parsing so that multiple query params get included
    * [KNOX-859] - Added rule for app.*.js, extensions, jax, and components (Prabhjyot Singh via Sandeep More)
    * [KNOX-855] - Add application/x-javascript mime type to the list of compressed resources and make it configurable
    * [KNOX-836] - Fix for websocket termination based on message size (Sandeep More via Sumit Gupta)
    * [KNOX-903] - KnoxShell allows self signed certs to be used without any checks
    * [KNOX-900] - In the WebsocketMultipleConnectionTest before sending data check whether the socket is active
    * [KNOX-897] - X-Forwarded-Port incorrectly defaults to the one configured for Knox if standard ports (80 and 443) are used (Attila Kanto via Sandeep More)
	  * [KNOX-901] - Finding free ports for namenode
	  * [KNOX-902] - Fix the hardcoded knoxsso topology name (Attila Kanto via Sandeep More)
	  * [KNOX-904] - Reverting back httpclient to 4.5.1 due to bug in 4.5.2
    * [KNOX-905] - added httpclient properties to knoxshell log4j properties file
	  * [KNOX-906] - Log WARN of Removed Impersonation Params
    * [KNOX-907] - Ambari Hive 2.0 view fix

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.11.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-643] - Initial metrics api and implementation
    * [KNOX-237] - Hadoop Group Mapping as a Knox Provider (Sandeep More via lmccay)
    * [KNOX-817] - Gateway service definition for Avatica (Josh Elser via lmccay)
    * [KNOX-528] - Support for Apache SOLR REST APIs (Kevin Risden, John McParland via lmccay)
    * [KNOX-758] - Druid services (Nishant Bangarwa via Sumit Gupta)
    * [KNOX-749] - Initial admin UI source project and productized distribution
** Improvement
    * [KNOX-744] - Logout for KnoxSSO WebSSO API
    * [KNOX-795] - Make KnoxSSO Cookie Name Configurable
    * [KNOX-763] - Added rewrite filter apply capability to text values in html content
** Bug
    * [KNOX-779] - Exclude older org.codehaus.jackson dependencies from build cycle
    * [KNOX-785] - Update Apache Shiro dependency (Colm O hEigeartaigh via lmccay)
    * [KNOX-780] - Remove dependency on SNAPSHOT version of hadoop-common-test jar
    * [KNOX-790] - URL parameters with empty/null value are ignored (Nishant Bangarwa via lmccay)
    * [KNOX-713] - Knox Shell HDFS.get.Response is Package Private
    * [KNOX-792] - Fix FindBugs "performance" issues - Colm O hEigeartaigh via lmccay
    * [KNOX-812] - WebSSOResource doesn't make use of target audiences
    * [KNOX-803] - Adding rewrite rules for Map Reduce History Server UI (Shi Wang via lmccay)
    * [KNOX-820] - Knox query processing: If the originalUrl value has "ampersand"(&) in it, the value after ampersand is ignored.
    * [KNOX-826] - Need favicon icon for Admin UI
    * [KNOX-757] - shiro related log4j properties (John McParland via Sumit Gupta)
    * [KNOX-784] - Fix for httpclientconnection metric naming conflict
    * [KNOX-763] - Added import rewrite function for html content containing @import
    * [KNOX-763] - Missing function files
    * [KNOX-767] - Fix for CDATA handling (Jeffrey E Rodriguez via Sumit Gupta)
    * [KNOX-791] - XML attribute special character fix and unit test (Sandeep More via Sumit Gupta)
    * [KNOX-818] - created new jaxb beans for REST API
    * [KNOX-804] - custom cache manager class
    * [KNOX-824] - Added WebAppSec provider capability to Jersey service deployments
    * [KNOX-825] - setting to turn off directory browsing
    * [KNOX-826] - added the icon to the source project as well
    * [KNOX-827] - added manager topology
    * [KNOX-830] - Admin UI Fails to Authenticate with KnoxSSO

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.10.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-752] - Implementation of initial websocket support (Sandeep More via Sumit Gupta)
    * [KNOX-537] - Linux PAM Authentication Provider (jeffreyr97/hkropp via lmccay)
** Improvement
    * [KNOX-743] - Add submitSqoop via knox shell api
    * [KNOX-729] - added filter apply capability to html content
    * [KNOX-764] - initial service definition registry service
    * [KNOX-644] - Limit/page results of LDAP group membership search (Kevin Risden via lmccay)
    * [KNOX-733] - Add support for custom truststore to Knox shell client
** Bug
    * [KNOX-723] - Adding html content based filter for main page trailing slash issue
    * [KNOX-765] - Namenode UI fails to download few js and css (Mohammad Kamrul Islam via lmccay)
    * [KNOX-629] - Misleading output for system-user-auth-test when userSearchBase used
    * [KNOX-753] - Update References to Docs in README for Latest Release
    * [KNOX-762] - Remove dependency on httpcomponents httpclient 4.5.2
    * [KNOX-756] - Build failure with "ant release"
    * [KNOX-754] - encoding response headers
    * [KNOX-732] - Knox does not recompress javascript resources (Sandeep More via lmccay)
    * [KNOX-748] - Fix Resource Leak in X509CertificateUtil.writeCertificateToJKS (Sandeep More via lmccay)
    * [KNOX-750] - Change test-patch to attempt -p0 and -p1 patches before failing
    * [KNOX-740] - Address new coverity scan issues (Sandeep More via lmccay)
    * [KNOX-742] - Export Commands in KnoxCLI for the gateway-identity Public Cert
    * [KNOX-690] - quick unit test for toEncodedString method
    * [KNOX-690] - fixing the encoding/decoding in the parser and template
    * [KNOX-508] - knox to uptake Apache DS 2.0.0-M16 or later

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.9.1
------------------------------------------------------------------------------
** New Feature
** Improvement
    * [KNOX-711] Added the ability to scope rewrite rules
** Bug
    * [KNOX-705] - Views in Ambari UI don't render when proxied by the AMBARIUI service
    * [KNOX-705] - Improvement on 404 error messages with ambari views
    * [KNOX-705] - rules to support view changes in Ambari
    * [KNOX-712] - submitPig does not allow multiple argument via arg() (Pierre Regazzoni via lmccay)
    * [KNOX-713] - Knox Shell HDFS.get.Request is Package Private (Chris Snow via lmccay)
    * [KNOX-714] - Remove Permissive MIT License from NOTICE File
    * [KNOX-715] - submitJava should allow multiple argument via arg() (Pierre Regazzoni via lmccay)
    * [KNOX-716] - replayBufferSize is kept in bytes
    * [KNOX-717] - changed the location header in RANGERUI rewrite to be more specific
    * [KNOX-721] - added rewrite rules to take care of no slash url
    * [KNOX-721] - added rewrite rules to take care of no slash url
    * [KNOX-721] - Loosening up the match criteria as the Location header coming back from Ranger is not always correct
    * [KNOX-722] - Null Pointer Exception while Knox SSO configured for OKTA/SAML v2
    * [KNOX-722] - changed KnoxSessionStore to not base64 empty cookie value
    * [KNOX-722] - Null Pointer Exception while Knox SSO configured for OKTA/SAML v2
    * [KNOX-723] - qualifying the login page resources with the frontend path
    * [KNOX-724] - ambari view fixes
    * [KNOX-725] - defining policy chain for ambari and ranger services
    * [KNOX-726] - Clean up Skipped Unit Tests
    * [KNOX-731] - added ranger and ambari services to topology

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.9.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-66] - Ambari REST API support
    * [KNOX-668] - Ranger UI proxy support with related REST API support changes
    * [KNOX-669] - Adding support for anonymous authentication
    * [KNOX-670] - Knox should be able to host simple web apps
    * [KNOX-673] - Ambari UI proxy support with related REST API support changes
    * [KNOX-674] - Expose Jetty's SSL cipher suite configuration via gateway-site.xml
    * [KNOX-692] - Enable Jetty's JSP support in Knox hosted applications.
    * [KNOX-686] - Default Form based SSO IDP as an Application
    * [KNOX-697] - Identity asserter provider that supports case mapping for users and groups
    * [KNOX-700] - Add Clickjacking Protection to WebAppSec Provider

** Improvement
    * [KNOX-630] - KnoxSSO Needs to Populate Configured Audiences
    * [KNOX-631] - Config Driven Keystore for Signing and Validation Certs in KnoxSSO
    * [KNOX-662] - Change pac4j-knoxsso.xml Template to Reflect new Requirements
    * [KNOX-667] - Added maven profile and updated ant targets
    * [KNOX-667] - changed nested release profile to match 'package' profile
    * [KNOX-677] - Upgrade to latest Groovy
    * [KNOX-675] - Upgrade Knox's Jetty dependency to latest 9.x
    * [KNOX-674] - Expose Jetty's SSL cipher suite configuration via gateway-site.xml
    * [KNOX-675] - Upgrade Knox's Jetty dependency to latest 9.x
    * [KNOX-675] - Upgrade Knox's Jetty dependency to latest 9.x. Fix circular dependency.
    * [KNOX-676] - Knox build failures. Attempt 1.
    * [KNOX-676] - Knox build failures. Attempt 2.
    * [KNOX-676] - Knox build failures. Attempt 3.
    * [KNOX-677] - Upgrade to latest Groovy. (via Colm O hEigeartaigh)
    * [KNOX-678] - Malformed UTF-8 characters in JSON Response
    * [KNOX-679] - Make ResponseCookieFilter Configurable
    * [KNOX-680] - Update Knox's HttpClient dependency to latest version
    * [KNOX-680] - Revert - Update Knox's HttpClient dependency to latest version"
    * [KNOX-688] - KnoxSSO Authentication should not result in a valid JSESSIONID
    * [KNOX-692] - Enable Jetty's JSP support in Knox hosted applications.
    * [KNOX-693] - KnoxSSO Token Expiration should be Optional
    * [KNOX-693] - added test for SSOCookieProvider and no expiry time
    * [KNOX-694] - Enhance LDAP user search configurability
    * [KNOX-695] - Expose configuration of HttpClient's connection and socket timeout settings
    * [KNOX-697] - Identity asserter provider that supports case mapping for users and groups
    * [KNOX-699] - External meta-data for simple hosted web apps
    * [KNOX-701] - KnoxSSO Redirect Back to External App has CORS Problem for Form IDP
    * [KNOX-702] - Templates for AD and Application Hosting Topologies

** Bug
    * [KNOX-169] - Test issue for patch test automation via PreCommit-Knox-Build job
    * [KNOX-658] - adding additional dependency as provided
    * [KNOX-660] - Incompatible Dependencies in Pac4j Provider
    * [KNOX-660] - Revert j2e-pac4j upgrade
    * [KNOX-661] - NPE in Pac4j Provider when clientName Parameter is Missing
    * [KNOX-665] - Credential Collectors and Samples Prompting with Double Colons
    * [KNOX-681] - A PUT with Content-Type application/xml but no body causes NullPointerException
    * [KNOX-681] - Revert - A PUT with Content-Type application/xml but no body causes NullPointerException"
    * [KNOX-683] - Test failing due to port conflicts
    * [KNOX-684] - Increase test timeouts for failing tests
    * [KNOX-684] - Increase test timeouts for failing tests. Part 2.
    * [KNOX-685] - Knox tests cleanup after Jetty 9 upgrade
    * [KNOX-687] - Address new Coverity Scan issues    
    * [KNOX-689] - Applications Deployment Contributor can't find service.xml
    * [KNOX-689] - Revert - Applications Deployment Contributor can't find service.xml    
    * [KNOX-704] - Remove bogus sleep() from knoxauth redirecting.html
    * [KNOX-706] - KnoxSSO Default IDP must not require specific URL
    * [KNOX-707] - Enter Key within KnoxSSO Default IDP Form does not Submit
    * [KNOX-708] - Wrong CSS link in KnoxAuth Application's redirecting.html
    * [KNOX-709] - HBase request URLs must not be URL encoded

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.8.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-641] - Support CAS / OAuth / OpenID C / SAML protocols using pac4j - (Jérôme Leleu via lmccay)
** Improvement
    * [KNOX-502] - Invalid requests (404s) should be logged and audited
    * [KNOX-519] - Prompt user to provide password, rather providing as an argument to knoxcli cmd (J.Andreina via lmccay)
    * [KNOX-647] - Rename LDAP artifacts from test to demo
    * [KNOX-650] - Add posixGroups support for LDAP groups lookup
    * [KNOX-651] - getting rid of warning for missing bundle version
    * [KNOX-651] - Moving some tests to integration-test phase
    * [KNOX-651] - made the secure tests multi module
    * [KNOX-652] - Remove hsso-release module from build
    * [KNOX-651] - Attempt number 2 to fix the jenkins build
    * [KNOX-651] - Attempt to fix Jenkins build error
    * [KNOX-651] - Fixed gateway-test-release module id
    * [KNOX-651] - Initial changes to add a 'release' test project
    * [KNOX-650] - Add posixGroups support for LDAP groups lookup
    * [KNOX-655] - Pac4j Provider Client Selection from client_name Query Parameter (Jérôme Leleu via lmccay)
    * [KNOX-658] - updated hadoop dependencies for jdk8 support
    * [KNOX-658] - slight change to the way JAXB works in JDK8
    * [KNOX-659] - Default Keystore Details in Pac4j Provider SAML Config to Gateway Identity
** Bug
    * [KNOX-507] - Deletion of Non existing Alias from a cluster should not be successful (J.Andreina via lmccay)
    * [KNOX-589] - Fixing Jericho java.lang.IllegalStateException (Jeffrey E Rodriguez via Sumit Gupta)
    * [KNOX-594] - Stopping HS2 'SET-COOKIE' header to go back and managing 'hive.server2.auth' cookie
    * [KNOX-656] - Test GatewayLdapPosixGroupFuncTest failing intermittently
    * [KNOX-657] - _default Topology Must Redeploy After Restart
    * [KNOX-660] - Incompatible Dependencies in Pac4j Provider
    * [KNOX-661] - NPE in Pac4j Provider when clientName Parameter is Missing
    * [KNOX-662] - Change pac4j-knoxsso.xml Template to Reflect new Requirements
    * [KNOX-660] - Revert j2e-pac4j upgrade

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.7.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-476] - implementation for X-Forwarded-* headers support and population
    * [KNOX-547] - KnoxCLI adds new validate-topology and list-topologies commands.
    * [KNOX-548] - KnoxCLI adds a new system-user-auth-test command to test a topology's system username and password
    * [KNOX-549] - Test service connections through Knox with Knox CLI
    * [KNOX-549] - New Service-Test API can be added to topology. Accessible via Http call or KnoxCLI
    * [KNOX-560] - Test LDAP Authentication+Authorization from KnoxCLI
    * [KNOX-565] - Supporting All the Quick Links on Ambari Dashboard to Go Through Knox
    * [KNOX-579] - Regex based identity assertion provider with static dictionary lookup
    * [KNOX-602] - JWT/SSO Cookie Based Federation Provider
    * [KNOX-602] - protect against NPE in audience validation
    * [KNOX-604] - Expose configuration of HttpClient's max connections per route setting
    * [KNOX-611] - Expose configuration for Jetty's thread pool and connection queue
    * [KNOX-624] - Expose configuration for Jetty's request and response buffer sizes
    * [KNOX-625] - initial template file for topology using ui proxy services
    * [KNOX-634] - CORS Support as Part of WebAppSec Provider

** Improvement
    * [KNOX-394] - Request and response URLs must be parsed as literals not templates. Part 2.
    * [KNOX-394] - Request and response URLs must be parsed as literals not templates
    * [KNOX-534] - auditing shiro authentication exceptions
    * [KNOX-538] - Log some important system properties at startup
    * [KNOX-539] - add message to identity mapping audit entries
    * [KNOX-545] - Simplify Keystore Management for Cluster Scaleout
    * [KNOX-546] - Consuming intermediate response during kerberos request dispatching
    * [KNOX-566] - Make the Default Ephemeral DH Key Size 2048 for TLS
    * [KNOX-553] - Added topology validation from KnoxCLI to TopologyService deployment.
    * [KNOX-558] - HttpClient connections are not always returned to the pool for HBase on Windows
    * [KNOX-559] - renaming service definition files
    * [KNOX-561] - Allow Knox pid directory to be configured via the knox-env.sh file
    * [KNOX-573] - KNOX-574 make SecureOnly and MaxAge configurable for SSO
    * [KNOX-575] - Adds more logging for ShiroProvider LDAP Authentication.
    * [KNOX-576] - CLI user-auth-test should print a message when a user successfully authenticates.
    * [KNOX-564] - Topology deployment fails for no configured providers
    * [KNOX-570] - added zookeeper lookup capability for HS2 HA
    * [KNOX-580] - Initial refactoring out of default HA dispatch
    * [KNOX-590] - CLI sys-user-auth-test and user-auth-test have improved messages and work for more Shiro configs
    * [KNOX-590] - add more ShiroProvider configuration support to KnoxCLI sys-user-auth-test and user-auth-test
    * [KNOX-593] - removed replayBufferSize and CappedBufferHttpEntity references
    * [KNOX-593] - Moved SPNEGO code to httpclient
    * [KNOX-596] - Add diagnostics to topology deployment
    * [KNOX-597] - Improve diagnostic logging of HTTP traffic
    * [KNOX-600] - setting all service params as filter params for dispatch
    * [KNOX-607] - Fix SSOCookieProvider to Handle null Query Strings
    * [KNOX-608] - Improve Knox read and write performance by tuning buffer sizes.
    * [KNOX-609] - Add unit tests for the SSOCookieFederationProvider.
    * [KNOX-610] - DefaultTokenService issueToken should never return null
    * [KNOX-613] - Provide Credential Collector Abstraction to Client Shell
    * [KNOX-615] - Domain Cookies cannot Wildcard IP Addresses
    * [KNOX-617] - Add the use of CredentialCollectors to Samples
    * [KNOX-621] - Simplify KnoxSSO API Resource Path
    * [KNOX-622] - Misconfigured providers should cause topology deployment to fail
    * [KNOX-635] - open up default whitelist for dev - localhost
    * [KNOX-635] - Provide Whitelisting for Redirect Destinations for KnoxSSO
    * [KNOX-640] - Make Cookie Domain Configurable

** Bug
    * [KNOX-394] - Request and response URLs must be parsed as literals not templates
    * [KNOX-423] - XmlFilterReaderTest failed with IBM JVM JAVA
    * [KNOX-447] - Incorrect parsing and expansion of valueless query params
    * [KNOX-460] - UrlRewriteServletFilterTest failed with IBM JAVA
    * [KNOX-544] - Knox process does not exit if startup fails due to credential store issues
    * [KNOX-550] - reverting back to original hive kerberos dispatch behavior
    * [KNOX-554] - Fixed support for gateway.path change + added support for X-Forward-* headers in admin topology API.
    * [KNOX-555] - Prevent dispatch client from attempting retry and redirects
    * [KNOX-556] - fix extraneous imports
    * [KNOX-556] - provide better diagnostics for keystore failures
    * [KNOX-562] - Fix Null pointer exceptions in KnoxCLI LDAP commands
    * [KNOX-581] - Hive dispatch not propagating effective principal name
    * [KNOX-582] - Query Parameter rewrite does not honor empty string value (jeffreyr via lmccay)
    * [KNOX-584] - Fix for UT instability in GatewayBasicFuncTest.testCLIServiceTest
    * [KNOX-598] - Concurrent JDBC clients via KNOX to Kerberized HiveServer2 causes HTTP 401 error (due to Kerberos Replay attack error)
    * [KNOX-598] - Concurrent JDBC clients via KNOX to Kerberized HiveServer2 causes HTTP 401 error (due to Kerberos
    * [KNOX-599] - Template with {**} in queries are expanded with =null for query params without a value
    * [KNOX-601] - Knox test failures on windows
    * [KNOX-601] - Knox test failures on windows
    * [KNOX-603] - Coverity: Potential resource leak in BaseKeystoreService.createKeystore
    * [KNOX-614] - Incorrect URI template expansion with {**} query params #fragments
    * [KNOX-616] - XmlUrlRewriteStreamFilter unscapes escaped special characters
    * [KNOX-616] - XmlUrlRewriteStreamFilter unscapes escaped special characters
    * [KNOX-620] - Jenkins Knox-master-verify failing since #725 due to JDK version issues
    * [KNOX-626] - Minor fix to namespace parsing
    * [KNOX-623] - Gateway provider rewriter doesn't support boolean attributes in HTML.
    * [KNOX-632] - added back configuration for 'replayBufferSize'
    * [KNOX-632] - Oozie dispatch failing for secure clusters. Fix tests.
    * [KNOX-632] - Oozie dispatch failing for secure clusters
    * [KNOX-633] - Upgrade apache commons-collections
    * [KNOX-637] - Compilation Error in gateway-service-admin and gateway-test test projects (arshad.mohammad via lmccay)
    * [KNOX-636] - IdentityAsserterHttpServletRequestWrapper must override getUserPrincipal
    * [KNOX-638] - Hive dispatch failing for secure clusters
    * [KNOX-639] - Knoxcli.sh create-master should not allow empty strings

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.6.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-134] - Knox should avoid repeated LDAP authentication even if Shiro session is disabled.
    * [KNOX-177] - Simplify service deployment contributor implementation
    * [KNOX-185] - Use Shiro AuthenticationInfo caching to avoid repeated ldap bind
    * [KNOX-195] - Simple way to introduce new service without requiring code
    * [KNOX-473] - Configurable front end URL for simplified load balancer configuration
    * [KNOX-481] - Support configuration driven REST API integration (aka Stacks)
    * [KNOX-493] - Data and sub data directory should be made configurable. (Andreina J via lmccay)
    * [KNOX-500] - Support for Storm REST APIs
    * [KNOX-504] - Enable SSL Mutual Authentication
    * [KNOX-521] - Enhance Principal Mapping to Handle Dynamic Mappings
    * [KNOX-523] - Java 8 Compatibility
    * [KNOX-524] - Support LDAP authentication caching
    * [KNOX-532] - Update Knox build to use JDK 1.7

** Improvement
    * [KNOX-263] - Docs - User Guide list of Services missing straight MapReduce?
    * [KNOX-291] - Improve audit for topology deployment process
    * [KNOX-458] - Surface Config for Shiro LDAP Connection Pooling
    * [KNOX-462] - Proper error message when root tag of topology file incorrect
    * [KNOX-466] - Log exception stack traces at INFO level when they reach gateway servlet
    * [KNOX-468] - Add default config to optimize LDAP group lookup
    * [KNOX-471] - User's guide needs update after trying examples
    * [KNOX-480] - KnoxCLI needs to print usage when alias not provided
    * [KNOX-491] - Increase default replay buffer size to 8K
    * [KNOX-492] - Support service level replayBufferLimit for Ozzie, Hive and HBase

** Bug
    * [KNOX-175] - Filter order in generated gateway.xml needs to be consistent
    * [KNOX-343] - Knox PID directory does not exists on Ubuntu after reboot
    * [KNOX-378] - Knox rewrites numbers in JSON to engineering notation
    * [KNOX-464] - Location headers have wrong hostname when used behind load balancer
    * [KNOX-465] - Initial audit record can contain leftover principal name
    * [KNOX-467] - Unit tests failing on windows
    * [KNOX-479] - Remove cacheManager configuration from template files
    * [KNOX-494] - knox-env.sh script should print proper warning message , if JAVA is not set. (Andreina J via lmccay)
    * [KNOX-501] - Avoid NPE , in case of passing invalid argument to KnoxCli.
    * [KNOX-505] - Failure during removing credential from Cluster should exit with proper error message
    * [KNOX-525] - Fix ServiceRegistry Persistence to deal with Upgrade from 0.4.0
    * [KNOX-526] - Dispatch Refactoring Breaks Upgrade Compatibility
    * [KNOX-529] - Wildcard Group Principal Mapping Not Working
    * [KNOX-530] - Running Oozie jobs through Knox on a cluster with HDFS HA does not rewrite proper namenode host name.
    * [KNOX-531] - Fix extraneous audit entries for wildcard group mappings

** Sub-task
    * [KNOX-483] - Implement service configuration 
    * [KNOX-487] - Add policy information to Service Definitions
    * [KNOX-510] - KnoxSSO API
    * [KNOX-511] - Picketlink SAML Federation Provider
    * [KNOX-533] - Add Version to KnoxSSO URL Patterns

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.5.1
------------------------------------------------------------------------------
** Improvement
  * [KNOX-470] - add README and site docs for samples

** Bug
    * [KNOX-467] - Unit tests failing on windows. Second attempt.
    * [KNOX-467] - Unit tests failing on windows
    * [KNOX-466] - Log exception stack traces at INFO level when they reach gateway servlet
    * [KNOX-459] - added null checks to the closing of resultEnums to avoid NPEs
    * [KNOX-465] - Initial audit record can contain leftover principal name
    * [KNOX-459] - fixed LDAP connection leaks in KnoxLdapRealm
    * [KNOX-464] - Location headers have wrong hostname when used behind load balancer
    * [KNOX-468] - update group lookup topologies to configure cache manager

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.5.0
------------------------------------------------------------------------------
** New Feature
    * [KNOX-74] - Support YARN REST API access via the Gateway
    * [KNOX-25] - KNOX should support authentication using SPNEGO from browser

** Improvements
    * [KNOX-455] - Configuration for Excluding SSL Protocols
    * [KNOX-422] - provide support for IBM JVM - via Pascal Oliva
    * [KNOX-437] - KnoxLdapContextFactory should be configured by default in all topology files
    * [KNOX-88] - Support HDFS HA
    * [KNOX-415] - Add some static group entires, associate some users with groups in user.ldif in the bundled Apache DS
    * [KNOX-404] - GATEWAY_HOME/conf needs to be added to gateway server classpath
    * [KNOX-402] - New GatewayService - TopologyService
    * [KNOX-401] - Add service role request attribute
    * [KNOX-355] - Support KNOX authentication provider based on hadoop.security.authentication.server.AuthenticationHandler
    * [KNOX-353] - adding support for hadoop java client through redirection
    * [KNOX-375] - add functional test for KNOX-242 find client bind dn using ldapsearch

** Bug
    * [KNOX-451] - WebHDFS HA failover does not account for URL of unsuccessful request
    * [KNOX-414] - WebHDFS HA enablement in web.xml is sensitive to order of context listeners
    * [KNOX-453] - HDFS HA not working for secure clusters
    * [KNOX-450] - WebHDFS HA retry should also handle RetriableException scenarios
    * [KNOX-442] - Align DSL with WebHCat REST API changes.
    * [KNOX-448] - Remove Reference to ReflectiveOperationException
    * [KNOX-446] - Disable unstable unit tests in WebHdfsHaFuncTest
    * [KNOX-445] - Fix HaDescriptorManagerTest.testDescriptorStoring to be platform independent.
    * [KNOX-444] - KnoxCLI Usability Improvements
    * [KNOX-442] - Align Tests with Hive API Change
    * [KNOX-441] - Ensure all pom.xml files reference junit so that excludeGroups work
    * [KNOX-439] - URL pattern matching fails for default ports HTTP 80 and HTTPS 443
    * [KNOX-418] - remove the Pseudo federation provider
    * [KNOX-432] - Add Transfer_Encoding to EXCLUDE_HEADERS
    * [KNOX-431] - Update ISSUES file for 0.5.0 release
    * [KNOX-426] - change assertion provider name to Default
    * [KNOX-428] - Prepare pom.xml files for publishing via mvn deploy.
    * [KNOX-424] - Fix maven groupId
    * [KNOX-432] - Add Transfer_Encoding to EXCLUDE_HEADERS
    * [KNOX-410] - TopologyService Incorrect when _default Topology is Deployed
    * [KNOX-424] - Fix maven groupId
    * [KNOX-426] - change assertion provider name to Default
    * [KNOX-425] - rename Pseudo identity assertion provider
    * [KNOX-421] - optimize webhdfs file upload
    * [KNOX-413] - Yarn responses with TrackingUrl in the body not getting blanked out
    * [KNOX-349] - Completes JSON and XML support for PUT/GET of single topology and collection.
    * [KNOX-410] - Set topology name back to original value after deploying _default topology
    * [KNOX-349] - KNOX API for Topology Management. Support for deploy/undeploy topologies.
    * [KNOX-406] - Add provider name to test topologies to prevent intermittent test failures
    * [KNOX-403] - Optimize KnoxLdapRealm to reduce number of ldapsearches
    * [KNOX-349] - Knox API for Topology Management. Adds default admin topology to install and negative tests.
    * [KNOX-349] - Knox API for Topology Management. Initial step only supports GETs for topologies collection and single topology.
    * [KNOX-398] - Func test for Knox server info REST API.
    * [KNOX-366] - fixed stale pid detection again
    * [KNOX-398] - initial contribution for the Knox management API
    * [KNOX-396] - gateway.sh and ldap.sh status commands incorrect
    * [KNOX-395] - POC for Jersey Topology Service from Knox
    * [KNOX-350] - DOAP file for the Knox Project
    * [KNOX-391-392] - KnoxLdapRealm should use LdapName.equals for groupDn compare
    * [KNOX-389] - Knoxcli.cmd fails when space in JAVA_HOME
    * [KNOX-387] - replace JndiLdapRealm with KnoxLdapRelam in unit tests and functional tests
    * [KNOX-386] - update topology template files to use KnoxLdapRealm
    * [KNOX-385] - removed the config element for path to forward to and derive the path from the default topology name instead
    * [KNOX-383] - log computed bind dn and the mechanism to help diagnostics
    * [KNOX-382] - fixed extraneous output in shell scripts
    * [KNOX-381] - Expansion of authority only URL should not be prefixed with //
    * [KNOX-377] - detect stale pid and allow ldap server to restart in its presence
    * [KNOX-374] - KnoxLdapRealm does not default values correctly for userSearchBase and groupSearchBase
    * [KNOX-373] - add unit tests to verify default values for userSearchBase, groupSearchBase
    * [KNOX-372] - add unit tests to check default values for userSearchAttributeName, userObjectClass
    * [KNOX-371] - group membership lookup need to use userdn computed by search
    * [KNOX-369] - add support for new config param groupSearchBase
    * [KNOX-368] - add support for new config param userSearchBase
    * [KNOX-370] - add support for new config param userObjectClass
    * [KNOX-367] - add support for new config param userSearchAttributeName
    * [KNOX-366] - detect stale pid file a allow server start in its presence.
    * [KNOX-362] - logging of startup failure due to missing master secret and inability to prompt for one
    * [KNOX-361] - implicitly deploy the _default app for forwarding to the default topology
    * [KNOX-358] - refactor redirecting servlet into a forwarding servlet
    * [KNOX-310] - Parsing of JSON response for rewriting failing
    * [KNOX-356] - change redirect servlet to use 307s instead of 302s
    * [KNOX-354] - added PseudoAuthFederation Provider to accept user.name as proof of a pre-authenticated authentication event.
    * [KNOX-344] - Updated Knox Hive samples to be consistent with Hive 0.13.

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.4.0
------------------------------------------------------------------------------

** Improvements
    * [KNOX-193] - document configuration to use AD as authentication source
    * [KNOX-211] - Add classes KnoxLdapRealm, KnoxLdapContextFactory
    * [KNOX-212] - provide sample topology files to work with KnoxLdapRealm
    * [KNOX-214] - ShiroSubjectIdentityAdapter needs to map ldap groups looked up by shiro to java subject principals
    * [KNOX-215] - enhance AbstractIdentityAssertionFilter to make use of ldap groups looked up by shiro
    * [KNOX-216] - add functional tests to test ldap group lookup and usage
    * [KNOX-217] - enhance KnoxLdapGroupRealm to accept password alias in place of plain text password
    * [KNOX-221] - provide sample ldif file to work with KnoxLdapRealm
    * [KNOX-225] - update sample ldif file with ldapgroups to work with apache ds 2
    * [KNOX-230] - provide ldap schema file to allow creation of daynamic groups in apache ds
    * [KNOX-231] - shiro realm implementation to support ldap dynamic groups
    * [KNOX-232] - add automation test case for ldap dynamic group support
    * [KNOX-233] - add a topology template file to illustrate the use of dynamic groups
    * [KNOX-234] - add documentation for dynamic groups
    * [KNOX-268] - document work around for Knox to Hadoop SPNego authn problem
    * [KNOX-21] - Utilize knox.auth cookie to prevent re-authentication for every request from end user
    * [KNOX-105] - Command line tooling for CMF provisioning
    * [KNOX-165] - Stress testing
    * [KNOX-166] - Improve diagnosability of connectivity issues
    * [KNOX-167] - Knox passes down incorrect Host header to Hadoop service
    * [KNOX-188] - encryptQueryString Password is Recreated when Topology is Changed.
    * [KNOX-199] - ExampleHBase.groovy fails with HBase 0.96 due to empty column qualifier REST API incompatibility
    * [KNOX-203] - Gateway fails to start when {GATEWAY_HOME}/bin not writable
    * [KNOX-205] - Launcher script (gateway.sh) not working when gateway installed via RPM
    * [KNOX-206] - User should be able to run gateway.sh script under its own but not root account
    * [KNOX-209] - Fix the Location of KEYS File
    * [KNOX-213] - Reame PostAuthenticationFilter to ShiroSubjectIdentityAdapter
    * [KNOX-219] - Fix NOTICE file for Releases
    * [KNOX-220] - Fix JWT POC Code for HSSO
    * [KNOX-222] - Remove hadoop-examples.jar from source tree
    * [KNOX-223] - generated shiro.ini file does not preserve property order
    * [KNOX-226] - Need more Linux friendly installation layout
    * [KNOX-229] - some properties of KnoxLdapRealm need to be renamed
    * [KNOX-235] - Pre-authenticated SSO/Federation Provider
    * [KNOX-244] - Knox run from the directory with spaces in Windows OS
    * [KNOX-245] - Knox is missing rewrite rule for WebHCat root path.
    * [KNOX-246] - Knox is missing authorization filter for HBase root path.
    * [KNOX-247] -  Exception in Oozie workflow definition response rewrite
    * [KNOX-249] - Fix issues with shell scripts and home directory
    * [KNOX-251] - knoxcli.sh reports NullPointerException if not given arguments
    * [KNOX-253] - log error message for exception  ldapContextFactory.getSystemLdapContext()
    * [KNOX-254] - use system password set using knoxcli in KnoxLdapContextFactory
    * [KNOX-269] - Set JSSESSIONID cookie as HttpOnly and Secure.
    * [KNOX-270] - service level authorization should return 403 on deny
    * [KNOX-271] - Audit records duplication when no matching filter was found for requested resource
    * [KNOX-280] - Topology undeploy is broken
    * [KNOX-281] - Fix the typo in user's guide
    * [KNOX-282] - document configuration to look up group membership from ldap
    * [KNOX-287] - Update documentation to be consistent with Hive 0.12 configuration
    * [KNOX-289] - Remove incubating/incubator from source and build
    * [KNOX-292] - Invalid command line arguments don't print usage.
    * [KNOX-294] - Add -version support to gateway.sh
    * [KNOX-297] - Should not send Knox stack trace to client in error responses
    * [KNOX-298] - add a topology template for using Active Directroy as authentication back end
    * [KNOX-299] - Cannot update existing master via knoxcli
    * [KNOX-301] - Unit tests unstable on different platforms
    * [KNOX-306] - Change linux scripts to use /bin/bash
    * [KNOX-308] - Windows .cmd scripts not passing parameters to java correctly.
    * [KNOX-309] - Attempt to reparse topology files to recover from overlapping write
    * [KNOX-311] - Parameters not passed to java properly by knoxcli.sh on Ubuntu.
    * [KNOX-312] - PID File Created For Failed Deployments
    * [KNOX-313] - WebHdfs service broken for HDFS 2.4.0
    * [KNOX-314] - JDBC/HTTP for Hive Requires Specialized Dispatch
    * [KNOX-318] - HBase demo scripts fail against recent HBase versions
    * [KNOX-319] - Build fails on windows
    * [KNOX-322] - Incomplete Documentation for Quick Start
    * [KNOX-323] - Update Apache Knox Details Doc
    * [KNOX-324] - Obsolete Knox Directory Layout Doc
    * [KNOX-325] - Obsolete Docs for Services Supported
    * [KNOX-326] - Obsolete Docs for Sandbox Config
    * [KNOX-327] - Incomplete/Obsolete Docs for Gateway Details
    * [KNOX-328] - Obsolete Docs for Configuration
    * [KNOX-329] - Obsolete Docs for KnoxCLI
    * [KNOX-330] - Consolidate Authentication, GroupLookup and Shiro Docs
    * [KNOX-331] - Obsolete Docs for Secure Clusters
    * [KNOX-332] - Clarifications in Docs for Preauth SSO
    * [KNOX-333] - Incomplete Docs for HBase
    * [KNOX-334] - Obsolete Docs for Hive
    * [KNOX-335] - Obsolete Docs for Limitations
    * [KNOX-336] - Obsolete Disclaimer in Export Controls Page
    * [KNOX-337] - Knox not authenticating with HBase 0.98 in secure mode
    * [KNOX-342] - Document configuration for enabled HBase Access Control
    * [KNOX-344] - Update documentation/samples to be consistent with Hive 0.13.
    * [KNOX-345] - WebHDFS and Oozie not specifying dispatch provider and end up with HiveDispatchProvider
    * [KNOX-346] - The knox-env.sh script should prefer JAVA_HOME over java on path.
    * [KNOX-347] - Fix Knox DSL documentation
    * [KNOX-139] - Move hostmap provider configuration from a rewrite function provider to real provider config
    * [KNOX-140] - Support a forced redeploy of topologies
    * [KNOX-161] - Support Hive 0.11.0 via JDBC+ODBC/Thrift/HTTP
    * [KNOX-174] - support service specific cap for buffering request entities for replay against WWW-authenticate challenge
    * [KNOX-202] - Diagnosability/troubleshooting when wrong protocol (http vs https) used
    * [KNOX-240] - Update Hadoop dependencies to 2.x
    * [KNOX-257] - add a template topology file to illustrate preauth provider
    * [KNOX-261] - Better env checking and error messages in gateway.sh
    * [KNOX-262] - Improve JRE detection in scripting
    * [KNOX-263] - Docs - User Guide list of Services missing straight MapReduce?
    * [KNOX-265] - Add master secret generation to knoxcli
    * [KNOX-275] - Add topology template file to illustrate use of staticgroup and SLA
    * [KNOX-296] - Provide a command line tools to redeploy all topologies
    * [KNOX-300] - create a topology file that uses openldap as authen back end
    * [KNOX-315] - Add support for service params in topology file
    * [KNOX-316] - Create windows service template file for LDAP server.
    * [KNOX-320] - Simplify scripts for using Knox on windows
    * [KNOX-341] - Knox needs to work with secure Hive asserting authenticated user as doAs
    * [KNOX-4] - Extend Shiro Provider to Include Groups
    * [KNOX-23] - Generate audit log of all gateway activity
    * [KNOX-33] - Provide support for hosting Jersey services for the purposes of protocol mediation of non-REST services
    * [KNOX-48] - Cluster topology must not be exposed in datanode redirect query parameters
    * [KNOX-54] - Support horizontal scalability of gateway via clustering
    * [KNOX-172] - Support ~ to represent user's home directory in WebHDFS
    * [KNOX-179] - Simple way to introduce new provider/servlet filters into the chains
    * [KNOX-194] - Document Knox HA with Apache HTTP Server + mod_proxy + mod_proxy_balancer
    * [KNOX-198] - CSRF header support
    * [KNOX-228] - Knox should support dynamic LDAP Groups
    * [KNOX-243] -  bat/cmd script for the gateway 
    * [KNOX-248] - XML configuration file to describe how to launch Knox as Windows service
    * [KNOX-90] - Support HBase/Stargate for Kerberized cluster
    * [KNOX-92] - Support Hive/JDBC/HTTP for Kerberized cluster
    * [KNOX-208] - Upgrade ApacheDS for demo LDAP server to ApacheDS 2
    * [KNOX-290] - Upgrade Shiro dependency to 1.2.3
    * [KNOX-210] - Create functional test template

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.3.0
------------------------------------------------------------------------------

** New Feature
    * [KNOX-8] - Support HBase via HBase/Stargate
    * [KNOX-9] - Support Hive via JDBC+ODBC/Thrift/HTTP
    * [KNOX-11] - Access Token Federation Provider
    * [KNOX-27] - Access Kerberos secured Hadoop cluster via gateway using basic auth credentials
    * [KNOX-31] - Create lifecycle scripts for gateway server
    * [KNOX-50] - Ensure that all cluster topology details are rewritten for Oozie REST APIs
    * [KNOX-61] - Create RPM packaging of Knox
    * [KNOX-68] - Create start/stop scripts for gateway
    * [KNOX-70] - Add unit and functional testing for HBase
    * [KNOX-71] - Add unit and functional tests for Hive
    * [KNOX-72] - Update site docs for HBase integration
    * [KNOX-73] - Update site docs for Hive integration
    * [KNOX-82] - Support properties file format for topology files
    * [KNOX-85] - Provide Knox client DSL for HBase REST API
    * [KNOX-98] - Cover HBase in samples
    * [KNOX-99] - Cover Hive in samples
    * [KNOX-116] - Add rewrite function so that authenticated username can be used in rewrite rules
    * [KNOX-120] - Service Level Authorization Provider with ACLs
    * [KNOX-131] - Cleanup noisy test PropertyTopologyBuilderTest
    * [KNOX-169] - Test issue for patch test automation via PreCommit-Knox-Build job

** Improvement
    * [KNOX-40] - Verify LDAP over SSL
    * [KNOX-42] - Change gateway URLs to match service URLs as closely as possible
    * [KNOX-45] - Clean up usage and help output from server command line
    * [KNOX-49] - Prevent Shiro rememberMe cookie from being returned
    * [KNOX-55] - Support finer grain control over what is included in the URL rewrite
    * [KNOX-56] - Populate RC directory with CHANGES on people.a.o
    * [KNOX-75] - make Knox work with Secure Oozie
    * [KNOX-97] - Populate staging and release directories with KEYS
    * [KNOX-100] - document steps to make Knox work with secure hadoodp cluster
    * [KNOX-101] - Use session instead of hadoop in client DSL samples
    * [KNOX-117] - Provide ServletContext attribute access to RewriteFunctionProcessor via UrlRewriteEnvironment
    * [KNOX-118] - Provide rewrite functions that resolve service location information
    * [KNOX-129] - Document topology file
    * [KNOX-141] - Diagnostic debug output when generated SSL keystore info doesn't match environment
    * [KNOX-143] - Change "out of the box" setup to use sandbox instead of sample
    * [KNOX-153] - Document RPM based install process
    * [KNOX-155] - Remove obsolete module gateway-demo
    * [KNOX-164] - document hostmap provider properties
    * [KNOX-168] - Complete User's Guide for 0.3.0 release

** Bug
    * [KNOX-47] - Clean up i18n logging and any System.out or printStackTrace usages
    * [KNOX-57] - NPE when GATEWAY_HOME deleted out from underneath a running gateway instance
    * [KNOX-58] - NameNode endpoint exposed to gateway clients in runtime exception
    * [KNOX-60] - getting started - incorrect path to gateway-site.xml
    * [KNOX-69] - Branch expansion for specdir breaks on jenkins
    * [KNOX-76] - users.ldif file bundled with knox should not have hadoop service principals
    * [KNOX-77] - Need per-service outbound URL rewriting rules
    * [KNOX-78] - spnego authorization to cluster is failing
    * [KNOX-79] - post parameters are lost while request flows from knox to secure cluster
    * [KNOX-81] - Fix naming of release artifacts to include the word incubating
    * [KNOX-83] - do not use mapred as end user prinicpal in examples
    * [KNOX-84] - use EXAMPLE.COM instead of sample.com in template files for kerberos relam
    * [KNOX-89] - Knox doing SPNego with Hadoop for every client request is not scalable
    * [KNOX-102] - Update README File
    * [KNOX-106] - The Host request header should be rewritten or removed
    * [KNOX-107] - Service URLs not rewritten for WebHDFS GET redirects
    * [KNOX-108] - Authentication failure submitting job via WebHCAT on Sandbox
    * [KNOX-109] - Failed to submit workflow via Oozie against Sandbox HDP2Beta
    * [KNOX-111] - Ensure that user identity details are rewritten for Oozie REST APIs
    * [KNOX-124] - Fix the OR semantics in AclAuthz
    * [KNOX-126] - HiveDeploymentContributor uses wrong external path /hive/api/vi
    * [KNOX-127] - Sample topology file (sample.xml) uses inconsistent internal vs external addresses
    * [KNOX-128] - Switch all samples to use guest user and home directory
    * [KNOX-130] - Throw exception on credential store creation failure
    * [KNOX-132] - Cleanup noisy test GatewayBasicFuncTest.testOozieJobSubmission()
    * [KNOX-136] - Knox should support configurable session timeout
    * [KNOX-137] - Log SSL Certificate Info
    * [KNOX-142] - Remove Templeton from user facing config and samples and use WebHCat instead
    * [KNOX-144] - Ensure cluster topology details are rewritten for HBase/Stargate REST APIs
    * [KNOX-146] - Oozie rewrite rules for NN and JT need to be updated to use hostmap
    * [KNOX-147] - Halt Startup when Gateway SSL Cert is Expired
    * [KNOX-148] - Add cluster topology details rewrite for XML responses from HBase/Stargate REST APIs
    * [KNOX-149] - Changes to AclsAuthz Config and Default Mode
    * [KNOX-150] - correct comment on session timeout  in sandbox topology file
    * [KNOX-151] - add documentation for session timeout configuration
    * [KNOX-152] - Dynamic redeploy of topo causes subsequent requests to fail
    * [KNOX-154] - INSTALL file is out of date
    * [KNOX-156] - file upload through Knox broken
    * [KNOX-157] - Knox is not able to process PUT/POST requests with large payload
    * [KNOX-158] - EmptyStackException while getting webhcat job queue in secure cluster
    * [KNOX-159] - oozie job submission thorugh knox fails for secure cluster
    * [KNOX-162] - Support Providing Your own SSL Certificate
    * [KNOX-163] - job submission through knox-webchat results in NullPointerException

------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.2.0
------------------------------------------------------------------------------
HTTPS Support (Client side)
Oozie Support
Protected DataNode URL query strings
Pluggable Identity Asserters
Principal Mapping
URL Rewriting Enhancements
KnoxShell Client DSL

