From e60b86e5b1d60be5a9d6b95a59b8966ae12870ba Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Mon, 17 May 2021 23:40:56 +0530 Subject: [PATCH 01/14] Code commit for "Converting String to BigDecimal in Java" - Article --- .../StringToBigDecimalConversionUnitTest.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java diff --git a/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java new file mode 100644 index 0000000000..e951b393c2 --- /dev/null +++ b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java @@ -0,0 +1,74 @@ +package com.baeldung.stringtobigdecimal; + +import static org.junit.Assert.assertEquals; + +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.text.ParseException; + +import org.junit.Test; + +public class StringToBigDecimalConversionUnitTest { + + @Test + public void givenValidString_WhenBigDecimalObjectWithStringParameter_ThenResultIsDecimalObject() { + BigDecimal bigDecimal = new BigDecimal(123); + assertEquals(bigDecimal, new BigDecimal("123")); + } + + @Test(expected = NullPointerException.class) + public void givenNullString_WhenBigDecimalObjectWithStringParameter_ThenNullPointerExceptionIsThrown() { + String bigDecimal = null; + new BigDecimal(bigDecimal); + } + + @Test(expected = NumberFormatException.class) + public void givenInalidString_WhenBigDecimalObjectWithStringParameter_ThenNumberFormatExceptionIsThrown() { + new BigDecimal("&"); + } + + @Test + public void givenValidString_WhenValueOfDoubleFromString_ThenResultIsDecimalObject() { + BigDecimal bigDecimal = new BigDecimal(123.42).setScale(2, BigDecimal.ROUND_HALF_UP); + assertEquals(bigDecimal, BigDecimal.valueOf(Double.valueOf("123.42"))); + } + + @Test(expected = NullPointerException.class) + public void givenNullString_WhenValueOfDoubleFromString_ThenNullPointerExceptionIsThrown() { + BigDecimal.valueOf(Double.valueOf(null)); + } + + @Test(expected = NumberFormatException.class) + public void givenInalidString_WhenValueOfDoubleFromString_ThenNumberFormatExceptionIsThrown() { + BigDecimal.valueOf(Double.valueOf("&")); + } + + @Test + public void givenValidString_WhenDecimalFormatOfString_ThenResultIsDecimalObject() throws ParseException { + BigDecimal bigDecimal = new BigDecimal(10692467440017.111).setScale(3, BigDecimal.ROUND_HALF_UP); + + DecimalFormatSymbols symbols = new DecimalFormatSymbols(); + symbols.setGroupingSeparator(','); + symbols.setDecimalSeparator('.'); + String pattern = "#,##0.0#"; + DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols); + decimalFormat.setParseBigDecimal(true); + + // parse the string value + BigDecimal parsedStringValue = (BigDecimal) decimalFormat.parse("10,692,467,440,017.111"); + + assertEquals(bigDecimal, parsedStringValue); + } + + @Test(expected = NullPointerException.class) + public void givenNullString_WhenDecimalFormatOfString_ThenNullPointerExceptionIsThrown() throws ParseException { + new DecimalFormat("#").parse(null); + } + + @Test(expected = ParseException.class) + public void givenInalidString_WhenDecimalFormatOfString_ThenNumberFormatExceptionIsThrown() throws ParseException { + new DecimalFormat("#").parse("&"); + } + +} From 1ba588f71790987646f7a80362413d0f72699ca4 Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Wed, 19 May 2021 07:27:53 +0530 Subject: [PATCH 02/14] modified the assert param for comparing actual and expected values --- .../StringToBigDecimalConversionUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java index e951b393c2..cd8ef6c70f 100644 --- a/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java +++ b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java @@ -13,8 +13,8 @@ public class StringToBigDecimalConversionUnitTest { @Test public void givenValidString_WhenBigDecimalObjectWithStringParameter_ThenResultIsDecimalObject() { - BigDecimal bigDecimal = new BigDecimal(123); - assertEquals(bigDecimal, new BigDecimal("123")); + BigDecimal bigDecimal = new BigDecimal("123"); + assertEquals(new BigDecimal(123), bigDecimal); } @Test(expected = NullPointerException.class) @@ -30,8 +30,8 @@ public class StringToBigDecimalConversionUnitTest { @Test public void givenValidString_WhenValueOfDoubleFromString_ThenResultIsDecimalObject() { - BigDecimal bigDecimal = new BigDecimal(123.42).setScale(2, BigDecimal.ROUND_HALF_UP); - assertEquals(bigDecimal, BigDecimal.valueOf(Double.valueOf("123.42"))); + BigDecimal bigDecimal = BigDecimal.valueOf(Double.valueOf("123.42")); + assertEquals(new BigDecimal(123.42).setScale(2, BigDecimal.ROUND_HALF_UP), bigDecimal); } @Test(expected = NullPointerException.class) From 7e27c1ce72908762ce07dd809269d229226d2b92 Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Wed, 19 May 2021 07:52:03 +0530 Subject: [PATCH 03/14] removed the conflict change --- .../StringToBigDecimalConversionUnitTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java index ba2a804f17..cd8ef6c70f 100644 --- a/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java +++ b/core-java-modules/core-java-string-conversions-2/src/test/java/com/baeldung/stringtobigdecimal/StringToBigDecimalConversionUnitTest.java @@ -15,8 +15,6 @@ public class StringToBigDecimalConversionUnitTest { public void givenValidString_WhenBigDecimalObjectWithStringParameter_ThenResultIsDecimalObject() { BigDecimal bigDecimal = new BigDecimal("123"); assertEquals(new BigDecimal(123), bigDecimal); - BigDecimal bigDecimal = new BigDecimal(123); - assertEquals(bigDecimal, new BigDecimal("123")); } @Test(expected = NullPointerException.class) @@ -34,8 +32,6 @@ public class StringToBigDecimalConversionUnitTest { public void givenValidString_WhenValueOfDoubleFromString_ThenResultIsDecimalObject() { BigDecimal bigDecimal = BigDecimal.valueOf(Double.valueOf("123.42")); assertEquals(new BigDecimal(123.42).setScale(2, BigDecimal.ROUND_HALF_UP), bigDecimal); - BigDecimal bigDecimal = new BigDecimal(123.42).setScale(2, BigDecimal.ROUND_HALF_UP); - assertEquals(bigDecimal, BigDecimal.valueOf(Double.valueOf("123.42"))); } @Test(expected = NullPointerException.class) From 6ed113877ed6f2a017ee354b1838ab9c1756e7f2 Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Fri, 21 May 2021 21:16:31 +0530 Subject: [PATCH 04/14] Code commit for Secret Key to String and vice versa in java --- .../ConversionClassUtil.java | 53 +++++++++++++++++++ .../ConversionClassUtilTest.java | 44 +++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java create mode 100644 core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilTest.java diff --git a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java b/core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java new file mode 100644 index 0000000000..5ff1b7cb9d --- /dev/null +++ b/core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java @@ -0,0 +1,53 @@ +package com.baeldung.secretkeyandstringconversion; + +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.KeySpec; +import java.util.Base64; + +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; + +public class ConversionClassUtil { + + /* Generating Secret key */ + + // Generating Secret Key using KeyGenerator class with 256 + public static SecretKey generateKey(int n) throws NoSuchAlgorithmException { + KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); + keyGenerator.init(n); + SecretKey originalKey = keyGenerator.generateKey(); + return originalKey; + } + + // Generating Secret Key using password and salt + public static SecretKey getKeyFromPassword(String password, String salt) + throws NoSuchAlgorithmException, InvalidKeySpecException { + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), 65536, 256); + SecretKey originalKey = new SecretKeySpec(factory.generateSecret(spec).getEncoded(), "AES"); + return originalKey; + } + + /* Converting Secret key into String */ + public static String convertSecretKeyToString(SecretKey secretKey) throws NoSuchAlgorithmException { + // Converting the Secret Key into byte array + byte[] rawData = secretKey.getEncoded(); + // Getting String - Base64 encoded version of the Secret Key + String encodedKey = Base64.getEncoder().encodeToString(rawData); + return encodedKey; + } + + /* Converting String into Secret key into */ + public static SecretKey convertStringToSecretKeyto(String encodedKey) { + // Decoding the Base64 encoded string into byte array + byte[] decodedKey = Base64.getDecoder().decode(encodedKey); + // Rebuilding the Secret Key using SecretKeySpec Class + SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES"); + return originalKey; + } + +} diff --git a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilTest.java b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilTest.java new file mode 100644 index 0000000000..120e12962d --- /dev/null +++ b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilTest.java @@ -0,0 +1,44 @@ +package com.baeldung.secretkeyandstringconversion; + +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; + +import javax.crypto.SecretKey; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ConversionClassUtilTest { + + @Test + void givenPasswordAndSalt_whenCreateSecreKeyCheckConversion_thenSuccess() + throws NoSuchAlgorithmException, InvalidKeySpecException { + // given + String password = "Baeldung@2021"; + String salt = "@$#baelDunG@#^$*"; + + // when + SecretKey encodedKey = ConversionClassUtil.getKeyFromPassword(password, salt); + String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); + SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); + + // then + Assertions.assertEquals(encodedKey, decodeKey); + } + + @Test + void givenSize_whenCreateSecreKeyCheckConversion_thenSuccess() + throws NoSuchAlgorithmException, InvalidKeySpecException { + // given + int size = 256; + + // when + SecretKey encodedKey = ConversionClassUtil.generateKey(size); + String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); + SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); + + // then + Assertions.assertEquals(encodedKey, decodeKey); + } + +} From d5a267bc9e6635bfdaf8d00b7131bc9590d53d3e Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Sat, 22 May 2021 07:07:04 +0530 Subject: [PATCH 05/14] renaming the junit class name to match coding standard --- ...rsionClassUtilTest.java => ConversionClassUtilUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/{ConversionClassUtilTest.java => ConversionClassUtilUnitTest.java} (96%) diff --git a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilTest.java b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java similarity index 96% rename from core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilTest.java rename to core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java index 120e12962d..29c8ba9fd0 100644 --- a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilTest.java +++ b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java @@ -8,7 +8,7 @@ import javax.crypto.SecretKey; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -public class ConversionClassUtilTest { +public class ConversionClassUtilUnitTest { @Test void givenPasswordAndSalt_whenCreateSecreKeyCheckConversion_thenSuccess() From a40d2ff3b368e9db0158ab82612ee613b630a1f9 Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Thu, 27 May 2021 02:12:22 +0530 Subject: [PATCH 06/14] code commit for BAEL-4869 --- .../config/MaxHTTPHeaderSizeConfig.java | 15 ++++++ .../MaxHttpHeaderSizeController.java | 17 ++++++ ...tpHeaderSizeControllerIntegrationTest.java | 48 +++++++++++++++++ .../MaxHttpHeaderSizeControllerLiveTest.java | 53 +++++++++++++++++++ .../test/resources/randomSringForheader.txt | 1 + 5 files changed, 134 insertions(+) create mode 100644 spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java create mode 100644 spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java create mode 100644 spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java create mode 100644 spring-boot-modules/spring-boot-runtime/src/test/resources/randomSringForheader.txt diff --git a/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java new file mode 100644 index 0000000000..5a928d8935 --- /dev/null +++ b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java @@ -0,0 +1,15 @@ +package com.baeldung.sampleapp.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@ComponentScan({ "com.baeldung.sampleapp.web" }) +public class MaxHTTPHeaderSizeConfig implements WebMvcConfigurer { + + public MaxHTTPHeaderSizeConfig() { + super(); + } + +} diff --git a/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java new file mode 100644 index 0000000000..16ee4515a5 --- /dev/null +++ b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java @@ -0,0 +1,17 @@ +package com.baeldung.sampleapp.web.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "/request-header-test") +public class MaxHttpHeaderSizeController { + + @GetMapping + public boolean testMaxHTTPHeaderSize(@RequestHeader(value = "token") String token) { + return true; + } + +} diff --git a/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java new file mode 100644 index 0000000000..209e5497c4 --- /dev/null +++ b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java @@ -0,0 +1,48 @@ +package com.baeldung.web.controller; + +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import com.baeldung.sampleapp.config.WebConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = WebConfig.class) +@WebAppConfiguration +public class MaxHttpHeaderSizeControllerIntegrationTest { + + private MockMvc mockMvc; + + @Autowired + private WebApplicationContext webApplicationContext; + + @Before + public void setUp() { + mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + } + + @Test + public void givenTokenWithLessThan8KBLegth_whenSendGetRequest_thenReturnsOK() throws Exception { + mockMvc.perform(get("/request-header-test").contentType(MediaType.APPLICATION_JSON_VALUE) + .with(httpBasic("user", "password")).header("token", "token")).andExpect(status().isOk()); + } + + @Test + public void givenTokenIsMissingInHeade_whenSendGetRequest_thenThrowsBadRequest() throws Exception { + mockMvc.perform(get("/request-header-test").contentType(MediaType.APPLICATION_JSON_VALUE) + .with(httpBasic("user", "password"))).andExpect(status().isBadRequest()); + } + +} diff --git a/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java new file mode 100644 index 0000000000..14e1913082 --- /dev/null +++ b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java @@ -0,0 +1,53 @@ +package com.baeldung.web.controller; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestTemplate; + +import com.baeldung.sampleapp.config.MaxHTTPHeaderSizeConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { MaxHTTPHeaderSizeConfig.class }, loader = AnnotationConfigContextLoader.class) +@ActiveProfiles("test") +// Start MaxHttpHeaderSizeController Spring Boot App(MainApplication) first +public class MaxHttpHeaderSizeControllerLiveTest { + + @Test(expected = HttpClientErrorException.class) + public void givenTokenWithGreaterThan8KBLegth_whenSendGetRequest_thenThrowsBadRequest() throws Exception { + final String url = "http://localhost:8080/request-header-test"; + HttpHeaders headers = new HttpHeaders(); + headers.set("token", readRandomStringFromFile()); + + HttpEntity entity = new HttpEntity(headers); + final ResponseEntity response = new RestTemplate().exchange(url, HttpMethod.GET, entity, String.class); + } + + static String readRandomStringFromFile() throws IOException { + BufferedReader reader = new BufferedReader(new FileReader("src/test/resources/randomSringForheader.txt")); + StringBuilder stringBuilder = new StringBuilder(); + String line = null; + String ls = System.getProperty("line.separator"); + while ((line = reader.readLine()) != null) { + stringBuilder.append(line); + stringBuilder.append(ls); + } + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + reader.close(); + String content = stringBuilder.toString(); + return content; + } + +} diff --git a/spring-boot-modules/spring-boot-runtime/src/test/resources/randomSringForheader.txt b/spring-boot-modules/spring-boot-runtime/src/test/resources/randomSringForheader.txt new file mode 100644 index 0000000000..444be3479e --- /dev/null +++ b/spring-boot-modules/spring-boot-runtime/src/test/resources/randomSringForheader.txt @@ -0,0 +1 @@ +eyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxgeyJraWQiOiIyMTM1MGE2NC02YTYxLTRiNmYtYjIyZS1lYTNkOTNiY2YyMTQiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI0NjE3Zjk4NC1mY2VlLTRmNTctYTg3Yi1jNTcyOTA2ODk3NzkiLCJpc3MiOiJodHRwczovL2FwaS50ZXNjby5jb20vaWRlbnRpdHkvdjQvaXNzdWUtdG9rZW4iLCJzdWIiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJpYXQiOjE2MjE4Mzk4NDcsIm5iZiI6MTYyMTgzOTg0NywiZXhwIjoxNjIxODQzNDQ3LCJzY29wZSI6ImludGVybmFsIHB1YmxpYyIsImNvbmZpZGVuY2VfbGV2ZWwiOjEyLCJjbGllbnRfaWQiOiI2ZTg5Y2M0Yi0xMDlkLTQwNjAtOTBlNC04ZTMyZTgzNTQzYmYiLCJ0b2tlbl90eXBlIjoiYmVhcmVyIn0.QylY2akATMYkwcBWDQsfUAcY4y27mgKz1NIG78oNjUqCEskMDjWTPM6ZS5neE7CUso72p1ud8BDl8B0SIiRTlCVoaZxVZzUqOlM1ZJQKah-w9KFtZ48cdS_qKYxa2gp82suF-Q-lbWwPAqS-AYTcFaNMqsVlsCDCtOVoB-ALpa5mh0z6tQkqjU7uhsWut3fkKLmMym8x8ejnDth2QdjGIvSXHbYWRH0kYPFDZKS6jHsFOzGGiCHfn201UQLEVLbwL7knyQ8qQ5wolwdNymr364s1CT0A9VHIAfLVSscVIV0ae3rUoqUtjKrbSfXfntIpRyUm66INAbBgyFiWh3yRxg \ No newline at end of file From 061023b683099669492c14477652f24668e99d7c Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Thu, 27 May 2021 10:55:46 +0530 Subject: [PATCH 07/14] Adding new module with Secret key to String conversion in Java [BAEL-4489] --- .../core-java-security-3/README.md | 8 +++ .../core-java-security-3/pom.xml | 53 +++++++++++++++++++ .../ConversionClassUtil.java | 53 +++++++++++++++++++ .../ConversionClassUtilUnitTest.java | 44 +++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 core-java-modules/core-java-security-3/README.md create mode 100644 core-java-modules/core-java-security-3/pom.xml create mode 100644 core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java create mode 100644 core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java diff --git a/core-java-modules/core-java-security-3/README.md b/core-java-modules/core-java-security-3/README.md new file mode 100644 index 0000000000..4585b6cc86 --- /dev/null +++ b/core-java-modules/core-java-security-3/README.md @@ -0,0 +1,8 @@ +## Core Java Security + +This module contains articles about core Java Security + +### Relevant Articles: + +- [Secret Key and String Conversion in Java](https://www.baeldung.com/secret-key-and-string-conversion-in-java/) +- More articles: [[<-- prev]](/core-java-modules/core-java-security-2) diff --git a/core-java-modules/core-java-security-3/pom.xml b/core-java-modules/core-java-security-3/pom.xml new file mode 100644 index 0000000000..2520cee7f8 --- /dev/null +++ b/core-java-modules/core-java-security-3/pom.xml @@ -0,0 +1,53 @@ + + + 4.0.0 + core-java-security-2 + 0.1.0-SNAPSHOT + core-java-security-2 + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + ../ + + + + + commons-codec + commons-codec + ${commons-codec.version} + + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + javax.xml.bind + jaxb-api + ${jaxb-api.version} + + + + + + 1.60 + 1.11 + + 3.18.0 + 2.3.1 + + + \ No newline at end of file diff --git a/core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java b/core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java new file mode 100644 index 0000000000..5ff1b7cb9d --- /dev/null +++ b/core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java @@ -0,0 +1,53 @@ +package com.baeldung.secretkeyandstringconversion; + +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.KeySpec; +import java.util.Base64; + +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.SecretKeySpec; + +public class ConversionClassUtil { + + /* Generating Secret key */ + + // Generating Secret Key using KeyGenerator class with 256 + public static SecretKey generateKey(int n) throws NoSuchAlgorithmException { + KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); + keyGenerator.init(n); + SecretKey originalKey = keyGenerator.generateKey(); + return originalKey; + } + + // Generating Secret Key using password and salt + public static SecretKey getKeyFromPassword(String password, String salt) + throws NoSuchAlgorithmException, InvalidKeySpecException { + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), 65536, 256); + SecretKey originalKey = new SecretKeySpec(factory.generateSecret(spec).getEncoded(), "AES"); + return originalKey; + } + + /* Converting Secret key into String */ + public static String convertSecretKeyToString(SecretKey secretKey) throws NoSuchAlgorithmException { + // Converting the Secret Key into byte array + byte[] rawData = secretKey.getEncoded(); + // Getting String - Base64 encoded version of the Secret Key + String encodedKey = Base64.getEncoder().encodeToString(rawData); + return encodedKey; + } + + /* Converting String into Secret key into */ + public static SecretKey convertStringToSecretKeyto(String encodedKey) { + // Decoding the Base64 encoded string into byte array + byte[] decodedKey = Base64.getDecoder().decode(encodedKey); + // Rebuilding the Secret Key using SecretKeySpec Class + SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES"); + return originalKey; + } + +} diff --git a/core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java b/core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java new file mode 100644 index 0000000000..29c8ba9fd0 --- /dev/null +++ b/core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java @@ -0,0 +1,44 @@ +package com.baeldung.secretkeyandstringconversion; + +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; + +import javax.crypto.SecretKey; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ConversionClassUtilUnitTest { + + @Test + void givenPasswordAndSalt_whenCreateSecreKeyCheckConversion_thenSuccess() + throws NoSuchAlgorithmException, InvalidKeySpecException { + // given + String password = "Baeldung@2021"; + String salt = "@$#baelDunG@#^$*"; + + // when + SecretKey encodedKey = ConversionClassUtil.getKeyFromPassword(password, salt); + String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); + SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); + + // then + Assertions.assertEquals(encodedKey, decodeKey); + } + + @Test + void givenSize_whenCreateSecreKeyCheckConversion_thenSuccess() + throws NoSuchAlgorithmException, InvalidKeySpecException { + // given + int size = 256; + + // when + SecretKey encodedKey = ConversionClassUtil.generateKey(size); + String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); + SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); + + // then + Assertions.assertEquals(encodedKey, decodeKey); + } + +} From 81b2fbf1504f89eaa94f95db0b930cff29c1469b Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Thu, 27 May 2021 11:42:38 +0530 Subject: [PATCH 08/14] changed code indent by space instead of tab --- .../ConversionClassUtil.java | 64 +++++++++---------- .../ConversionClassUtilUnitTest.java | 50 +++++++-------- .../config/MaxHTTPHeaderSizeConfig.java | 6 +- .../MaxHttpHeaderSizeController.java | 8 +-- ...tpHeaderSizeControllerIntegrationTest.java | 34 +++++----- .../MaxHttpHeaderSizeControllerLiveTest.java | 44 ++++++------- 6 files changed, 103 insertions(+), 103 deletions(-) diff --git a/core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java b/core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java index 5ff1b7cb9d..8fdf682666 100644 --- a/core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java +++ b/core-java-modules/core-java-security-3/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java @@ -13,41 +13,41 @@ import javax.crypto.spec.SecretKeySpec; public class ConversionClassUtil { - /* Generating Secret key */ + /* Generating Secret key */ - // Generating Secret Key using KeyGenerator class with 256 - public static SecretKey generateKey(int n) throws NoSuchAlgorithmException { - KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); - keyGenerator.init(n); - SecretKey originalKey = keyGenerator.generateKey(); - return originalKey; - } + // Generating Secret Key using KeyGenerator class with 256 + public static SecretKey generateKey(int n) throws NoSuchAlgorithmException { + KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); + keyGenerator.init(n); + SecretKey originalKey = keyGenerator.generateKey(); + return originalKey; + } - // Generating Secret Key using password and salt - public static SecretKey getKeyFromPassword(String password, String salt) - throws NoSuchAlgorithmException, InvalidKeySpecException { - SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); - KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), 65536, 256); - SecretKey originalKey = new SecretKeySpec(factory.generateSecret(spec).getEncoded(), "AES"); - return originalKey; - } + // Generating Secret Key using password and salt + public static SecretKey getKeyFromPassword(String password, String salt) + throws NoSuchAlgorithmException, InvalidKeySpecException { + SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); + KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), 65536, 256); + SecretKey originalKey = new SecretKeySpec(factory.generateSecret(spec).getEncoded(), "AES"); + return originalKey; + } - /* Converting Secret key into String */ - public static String convertSecretKeyToString(SecretKey secretKey) throws NoSuchAlgorithmException { - // Converting the Secret Key into byte array - byte[] rawData = secretKey.getEncoded(); - // Getting String - Base64 encoded version of the Secret Key - String encodedKey = Base64.getEncoder().encodeToString(rawData); - return encodedKey; - } + /* Converting Secret key into String */ + public static String convertSecretKeyToString(SecretKey secretKey) throws NoSuchAlgorithmException { + // Converting the Secret Key into byte array + byte[] rawData = secretKey.getEncoded(); + // Getting String - Base64 encoded version of the Secret Key + String encodedKey = Base64.getEncoder().encodeToString(rawData); + return encodedKey; + } - /* Converting String into Secret key into */ - public static SecretKey convertStringToSecretKeyto(String encodedKey) { - // Decoding the Base64 encoded string into byte array - byte[] decodedKey = Base64.getDecoder().decode(encodedKey); - // Rebuilding the Secret Key using SecretKeySpec Class - SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES"); - return originalKey; - } + /* Converting String into Secret key into */ + public static SecretKey convertStringToSecretKeyto(String encodedKey) { + // Decoding the Base64 encoded string into byte array + byte[] decodedKey = Base64.getDecoder().decode(encodedKey); + // Rebuilding the Secret Key using SecretKeySpec Class + SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES"); + return originalKey; + } } diff --git a/core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java b/core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java index 29c8ba9fd0..7a912dbf26 100644 --- a/core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java +++ b/core-java-modules/core-java-security-3/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java @@ -10,35 +10,35 @@ import org.junit.jupiter.api.Test; public class ConversionClassUtilUnitTest { - @Test - void givenPasswordAndSalt_whenCreateSecreKeyCheckConversion_thenSuccess() - throws NoSuchAlgorithmException, InvalidKeySpecException { - // given - String password = "Baeldung@2021"; - String salt = "@$#baelDunG@#^$*"; + @Test + void givenPasswordAndSalt_whenCreateSecreKeyCheckConversion_thenSuccess() + throws NoSuchAlgorithmException, InvalidKeySpecException { + // given + String password = "Baeldung@2021"; + String salt = "@$#baelDunG@#^$*"; - // when - SecretKey encodedKey = ConversionClassUtil.getKeyFromPassword(password, salt); - String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); - SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); + // when + SecretKey encodedKey = ConversionClassUtil.getKeyFromPassword(password, salt); + String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); + SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); - // then - Assertions.assertEquals(encodedKey, decodeKey); - } + // then + Assertions.assertEquals(encodedKey, decodeKey); + } - @Test - void givenSize_whenCreateSecreKeyCheckConversion_thenSuccess() - throws NoSuchAlgorithmException, InvalidKeySpecException { - // given - int size = 256; + @Test + void givenSize_whenCreateSecreKeyCheckConversion_thenSuccess() + throws NoSuchAlgorithmException, InvalidKeySpecException { + // given + int size = 256; - // when - SecretKey encodedKey = ConversionClassUtil.generateKey(size); - String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); - SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); + // when + SecretKey encodedKey = ConversionClassUtil.generateKey(size); + String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); + SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); - // then - Assertions.assertEquals(encodedKey, decodeKey); - } + // then + Assertions.assertEquals(encodedKey, decodeKey); + } } diff --git a/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java index 5a928d8935..0a71f914db 100644 --- a/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java +++ b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/config/MaxHTTPHeaderSizeConfig.java @@ -8,8 +8,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @ComponentScan({ "com.baeldung.sampleapp.web" }) public class MaxHTTPHeaderSizeConfig implements WebMvcConfigurer { - public MaxHTTPHeaderSizeConfig() { - super(); - } + public MaxHTTPHeaderSizeConfig() { + super(); + } } diff --git a/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java index 16ee4515a5..0c55f88fa1 100644 --- a/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java +++ b/spring-boot-modules/spring-boot-runtime/src/main/java/com/baeldung/sampleapp/web/controller/MaxHttpHeaderSizeController.java @@ -9,9 +9,9 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping(value = "/request-header-test") public class MaxHttpHeaderSizeController { - @GetMapping - public boolean testMaxHTTPHeaderSize(@RequestHeader(value = "token") String token) { - return true; - } + @GetMapping + public boolean testMaxHTTPHeaderSize(@RequestHeader(value = "token") String token) { + return true; + } } diff --git a/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java index 209e5497c4..9b839f34a0 100644 --- a/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java +++ b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerIntegrationTest.java @@ -23,26 +23,26 @@ import com.baeldung.sampleapp.config.WebConfig; @WebAppConfiguration public class MaxHttpHeaderSizeControllerIntegrationTest { - private MockMvc mockMvc; + private MockMvc mockMvc; - @Autowired - private WebApplicationContext webApplicationContext; + @Autowired + private WebApplicationContext webApplicationContext; - @Before - public void setUp() { - mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); - } + @Before + public void setUp() { + mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + } - @Test - public void givenTokenWithLessThan8KBLegth_whenSendGetRequest_thenReturnsOK() throws Exception { - mockMvc.perform(get("/request-header-test").contentType(MediaType.APPLICATION_JSON_VALUE) - .with(httpBasic("user", "password")).header("token", "token")).andExpect(status().isOk()); - } + @Test + public void givenTokenWithLessThan8KBLegth_whenSendGetRequest_thenReturnsOK() throws Exception { + mockMvc.perform(get("/request-header-test").contentType(MediaType.APPLICATION_JSON_VALUE) + .with(httpBasic("user", "password")).header("token", "token")).andExpect(status().isOk()); + } - @Test - public void givenTokenIsMissingInHeade_whenSendGetRequest_thenThrowsBadRequest() throws Exception { - mockMvc.perform(get("/request-header-test").contentType(MediaType.APPLICATION_JSON_VALUE) - .with(httpBasic("user", "password"))).andExpect(status().isBadRequest()); - } + @Test + public void givenTokenIsMissingInHeade_whenSendGetRequest_thenThrowsBadRequest() throws Exception { + mockMvc.perform(get("/request-header-test").contentType(MediaType.APPLICATION_JSON_VALUE) + .with(httpBasic("user", "password"))).andExpect(status().isBadRequest()); + } } diff --git a/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java index 14e1913082..9c7e7c9029 100644 --- a/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java +++ b/spring-boot-modules/spring-boot-runtime/src/test/java/com/baeldung/web/controller/MaxHttpHeaderSizeControllerLiveTest.java @@ -25,29 +25,29 @@ import com.baeldung.sampleapp.config.MaxHTTPHeaderSizeConfig; // Start MaxHttpHeaderSizeController Spring Boot App(MainApplication) first public class MaxHttpHeaderSizeControllerLiveTest { - @Test(expected = HttpClientErrorException.class) - public void givenTokenWithGreaterThan8KBLegth_whenSendGetRequest_thenThrowsBadRequest() throws Exception { - final String url = "http://localhost:8080/request-header-test"; - HttpHeaders headers = new HttpHeaders(); - headers.set("token", readRandomStringFromFile()); + @Test(expected = HttpClientErrorException.class) + public void givenTokenWithGreaterThan8KBLegth_whenSendGetRequest_thenThrowsBadRequest() throws Exception { + final String url = "http://localhost:8080/request-header-test"; + HttpHeaders headers = new HttpHeaders(); + headers.set("token", readRandomStringFromFile()); - HttpEntity entity = new HttpEntity(headers); - final ResponseEntity response = new RestTemplate().exchange(url, HttpMethod.GET, entity, String.class); - } + HttpEntity entity = new HttpEntity(headers); + final ResponseEntity response = new RestTemplate().exchange(url, HttpMethod.GET, entity, String.class); + } - static String readRandomStringFromFile() throws IOException { - BufferedReader reader = new BufferedReader(new FileReader("src/test/resources/randomSringForheader.txt")); - StringBuilder stringBuilder = new StringBuilder(); - String line = null; - String ls = System.getProperty("line.separator"); - while ((line = reader.readLine()) != null) { - stringBuilder.append(line); - stringBuilder.append(ls); - } - stringBuilder.deleteCharAt(stringBuilder.length() - 1); - reader.close(); - String content = stringBuilder.toString(); - return content; - } + static String readRandomStringFromFile() throws IOException { + BufferedReader reader = new BufferedReader(new FileReader("src/test/resources/randomSringForheader.txt")); + StringBuilder stringBuilder = new StringBuilder(); + String line = null; + String ls = System.getProperty("line.separator"); + while ((line = reader.readLine()) != null) { + stringBuilder.append(line); + stringBuilder.append(ls); + } + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + reader.close(); + String content = stringBuilder.toString(); + return content; + } } From 7a8e6e264f30fab2c3e4ffff9dd8256e611f54df Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Sat, 29 May 2021 08:46:26 +0530 Subject: [PATCH 09/14] Removing this code as been moved to new module. --- .../ConversionClassUtil.java | 53 ------------------- .../ConversionClassUtilUnitTest.java | 44 --------------- 2 files changed, 97 deletions(-) delete mode 100644 core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java delete mode 100644 core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java diff --git a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java b/core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java deleted file mode 100644 index 5ff1b7cb9d..0000000000 --- a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtil.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.baeldung.secretkeyandstringconversion; - -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.KeySpec; -import java.util.Base64; - -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.SecretKeySpec; - -public class ConversionClassUtil { - - /* Generating Secret key */ - - // Generating Secret Key using KeyGenerator class with 256 - public static SecretKey generateKey(int n) throws NoSuchAlgorithmException { - KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); - keyGenerator.init(n); - SecretKey originalKey = keyGenerator.generateKey(); - return originalKey; - } - - // Generating Secret Key using password and salt - public static SecretKey getKeyFromPassword(String password, String salt) - throws NoSuchAlgorithmException, InvalidKeySpecException { - SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); - KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), 65536, 256); - SecretKey originalKey = new SecretKeySpec(factory.generateSecret(spec).getEncoded(), "AES"); - return originalKey; - } - - /* Converting Secret key into String */ - public static String convertSecretKeyToString(SecretKey secretKey) throws NoSuchAlgorithmException { - // Converting the Secret Key into byte array - byte[] rawData = secretKey.getEncoded(); - // Getting String - Base64 encoded version of the Secret Key - String encodedKey = Base64.getEncoder().encodeToString(rawData); - return encodedKey; - } - - /* Converting String into Secret key into */ - public static SecretKey convertStringToSecretKeyto(String encodedKey) { - // Decoding the Base64 encoded string into byte array - byte[] decodedKey = Base64.getDecoder().decode(encodedKey); - // Rebuilding the Secret Key using SecretKeySpec Class - SecretKey originalKey = new SecretKeySpec(decodedKey, 0, decodedKey.length, "AES"); - return originalKey; - } - -} diff --git a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java deleted file mode 100644 index 29c8ba9fd0..0000000000 --- a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/secretkeyandstringconversion/ConversionClassUtilUnitTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung.secretkeyandstringconversion; - -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; - -import javax.crypto.SecretKey; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -public class ConversionClassUtilUnitTest { - - @Test - void givenPasswordAndSalt_whenCreateSecreKeyCheckConversion_thenSuccess() - throws NoSuchAlgorithmException, InvalidKeySpecException { - // given - String password = "Baeldung@2021"; - String salt = "@$#baelDunG@#^$*"; - - // when - SecretKey encodedKey = ConversionClassUtil.getKeyFromPassword(password, salt); - String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); - SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); - - // then - Assertions.assertEquals(encodedKey, decodeKey); - } - - @Test - void givenSize_whenCreateSecreKeyCheckConversion_thenSuccess() - throws NoSuchAlgorithmException, InvalidKeySpecException { - // given - int size = 256; - - // when - SecretKey encodedKey = ConversionClassUtil.generateKey(size); - String encodedString = ConversionClassUtil.convertSecretKeyToString(encodedKey); - SecretKey decodeKey = ConversionClassUtil.convertStringToSecretKeyto(encodedString); - - // then - Assertions.assertEquals(encodedKey, decodeKey); - } - -} From 9df4fd7d75800ae67e5b90357fcf43ce5188526c Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Wed, 2 Jun 2021 10:38:49 +0530 Subject: [PATCH 10/14] Code commit for BAEL-4999 --- logging-modules/logback/pom.xml | 5 +++++ .../logback/src/main/resources/logback.xml | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml index c11f20955b..8470a7bce1 100644 --- a/logging-modules/logback/pom.xml +++ b/logging-modules/logback/pom.xml @@ -15,6 +15,11 @@ + + org.json + json + 20180130 + ch.qos.logback logback-classic diff --git a/logging-modules/logback/src/main/resources/logback.xml b/logging-modules/logback/src/main/resources/logback.xml index 76ddc2e3ee..3193b1126c 100644 --- a/logging-modules/logback/src/main/resources/logback.xml +++ b/logging-modules/logback/src/main/resources/logback.xml @@ -46,11 +46,24 @@ BAELDUNG: %logger{20} - %msg + + + + + \"SSN\"\s*:\s*\"(.*?)\" + \"address\"\s*:\s*\"(.*?)\" + (\d+\.\d+\.\d+\.\d+) + (\w+@\w+\.\w+) + %-5p [%d{ISO8601,UTC}] [%thread] %c: %m%n%rootException + + + + \ No newline at end of file From 26038deef8cc748fe51064ca23d8bf4ecc0d899d Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Wed, 2 Jun 2021 10:39:07 +0530 Subject: [PATCH 11/14] Pushing commit for BAEL-4999 --- .../logback/MaskingPatternLayout.java | 46 +++++++++++++++++++ .../logback/MaskingPatternLayoutExample.java | 28 +++++++++++ 2 files changed, 74 insertions(+) create mode 100644 logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayout.java create mode 100644 logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java diff --git a/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayout.java b/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayout.java new file mode 100644 index 0000000000..04321e9066 --- /dev/null +++ b/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayout.java @@ -0,0 +1,46 @@ +package com.baeldung.logback; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import ch.qos.logback.classic.PatternLayout; +import ch.qos.logback.classic.spi.ILoggingEvent; + +public class MaskingPatternLayout extends PatternLayout { + + private Pattern multilinePattern; + private List maskPatterns = new ArrayList<>(); + + // invoked for every single entry in the xml + public void addMaskPattern(String maskPattern) { + maskPatterns.add(maskPattern); + multilinePattern = Pattern.compile(maskPatterns.stream().collect(Collectors.joining("|")), Pattern.MULTILINE); + } + + @Override + public String doLayout(ILoggingEvent event) { + return maskMessage(super.doLayout(event)); + } + + private String maskMessage(String message) { + if (multilinePattern == null) { + return message; + } + StringBuilder sb = new StringBuilder(message); + Matcher matcher = multilinePattern.matcher(sb); + while (matcher.find()) { + IntStream.rangeClosed(1, matcher.groupCount()).forEach(group -> { + if (matcher.group(group) != null) { + // replace each character with asterisk + IntStream.range(matcher.start(group), matcher.end(group)).forEach(i -> sb.setCharAt(i, '*')); + } + }); + } + return sb.toString(); + } + +} \ No newline at end of file diff --git a/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java b/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java new file mode 100644 index 0000000000..793a7b04be --- /dev/null +++ b/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java @@ -0,0 +1,28 @@ +package com.baeldung.logback; + +import java.util.HashMap; +import java.util.Map; + +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MaskingPatternLayoutExample { + + private static final Logger logger = LoggerFactory.getLogger(MaskingPatternLayoutExample.class); + + public static void main(String[] args) { + Map user = new HashMap(); + user.put("user_id", "87656"); + user.put("SSN", "786445563"); + user.put("address", "22 Street"); + user.put("city", "Chicago"); + user.put("Country", "U.S."); + user.put("ip_address", "192.168.1.1"); + user.put("email_id", "spring@baeldung.com"); + JSONObject userDetails = new JSONObject(user); + + logger.info("MaskingPatternExample log from {}" + userDetails, + MaskingPatternLayoutExample.class.getSimpleName()); + } +} From 339abb840139dbeedaeed920289f0726b9a384ac Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Fri, 4 Jun 2021 10:55:45 +0530 Subject: [PATCH 12/14] Code commit for tabs to space and line continuation --- .../logback/MaskingPatternLayoutExample.java | 3 +-- .../logback/src/main/resources/logback.xml | 20 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java b/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java index 793a7b04be..cbcd0209ab 100644 --- a/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java +++ b/logging-modules/logback/src/main/java/com/baeldung/logback/MaskingPatternLayoutExample.java @@ -22,7 +22,6 @@ public class MaskingPatternLayoutExample { user.put("email_id", "spring@baeldung.com"); JSONObject userDetails = new JSONObject(user); - logger.info("MaskingPatternExample log from {}" + userDetails, - MaskingPatternLayoutExample.class.getSimpleName()); + logger.info("MaskingPatternExample log from {}" + userDetails, MaskingPatternLayoutExample.class.getSimpleName()); } } diff --git a/logging-modules/logback/src/main/resources/logback.xml b/logging-modules/logback/src/main/resources/logback.xml index 3193b1126c..24b5c157be 100644 --- a/logging-modules/logback/src/main/resources/logback.xml +++ b/logging-modules/logback/src/main/resources/logback.xml @@ -48,16 +48,16 @@ - - - \"SSN\"\s*:\s*\"(.*?)\" - \"address\"\s*:\s*\"(.*?)\" - (\d+\.\d+\.\d+\.\d+) - (\w+@\w+\.\w+) - %-5p [%d{ISO8601,UTC}] [%thread] %c: %m%n%rootException - - - + + + \"SSN\"\s*:\s*\"(.*?)\" + \"address\"\s*:\s*\"(.*?)\" + (\d+\.\d+\.\d+\.\d+) + (\w+@\w+\.\w+) + %-5p [%d{ISO8601,UTC}] [%thread] %c: %m%n%rootException + + + From 6d2d49b240bd2af2a6273d7da01f9a459e461d54 Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Sun, 6 Jun 2021 09:07:07 +0530 Subject: [PATCH 13/14] Adding 4 spaces space in pom.xml --- logging-modules/logback/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml index 8470a7bce1..ba44db0dc5 100644 --- a/logging-modules/logback/pom.xml +++ b/logging-modules/logback/pom.xml @@ -16,10 +16,10 @@ - org.json - json - 20180130 - + org.json + json + 20180130 + ch.qos.logback logback-classic From 27fcf6d5e15c8c269001025a1f8484bbfdd9acf6 Mon Sep 17 00:00:00 2001 From: Bhabani Prasad Patel Date: Tue, 8 Jun 2021 07:36:22 +0530 Subject: [PATCH 14/14] tab space fixed --- logging-modules/logback/pom.xml | 6 +++--- .../logback/src/main/resources/logback.xml | 20 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml index ba44db0dc5..6d32025d94 100644 --- a/logging-modules/logback/pom.xml +++ b/logging-modules/logback/pom.xml @@ -16,9 +16,9 @@ - org.json - json - 20180130 + org.json + json + 20180130 ch.qos.logback diff --git a/logging-modules/logback/src/main/resources/logback.xml b/logging-modules/logback/src/main/resources/logback.xml index 24b5c157be..2d56c110e0 100644 --- a/logging-modules/logback/src/main/resources/logback.xml +++ b/logging-modules/logback/src/main/resources/logback.xml @@ -46,17 +46,17 @@ BAELDUNG: %logger{20} - %msg - + - - - \"SSN\"\s*:\s*\"(.*?)\" - \"address\"\s*:\s*\"(.*?)\" - (\d+\.\d+\.\d+\.\d+) - (\w+@\w+\.\w+) - %-5p [%d{ISO8601,UTC}] [%thread] %c: %m%n%rootException - - + + + \"SSN\"\s*:\s*\"(.*?)\" + \"address\"\s*:\s*\"(.*?)\" + (\d+\.\d+\.\d+\.\d+) + (\w+@\w+\.\w+) + %-5p [%d{ISO8601,UTC}] [%thread] %c: %m%n%rootException + +