From 23808ea97c2778fd937f3d37d3a14e8034ff10d8 Mon Sep 17 00:00:00 2001 From: Brendan Devenney Date: Tue, 9 Sep 2025 14:48:28 +0100 Subject: [PATCH 01/22] deps: update gradle and sevlet-api --- .../hello/src/unprotected-server/README.md | 2 + .../hello/src/unprotected-server/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- servers/hello/src/unprotected-server/gradlew | 292 +++++++++++------- .../hello/src/unprotected-server/gradlew.bat | 56 ++-- 6 files changed, 219 insertions(+), 137 deletions(-) create mode 100644 servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.jar diff --git a/servers/hello/src/unprotected-server/README.md b/servers/hello/src/unprotected-server/README.md index 4e6d611..d8ee461 100644 --- a/servers/hello/src/unprotected-server/README.md +++ b/servers/hello/src/unprotected-server/README.md @@ -52,7 +52,9 @@ First build the server with gradle. From the `./servers/hello/src/unprotected-se Now, you can run this example from the `./servers/hello/src/unprotected-server` folder with: ```bash +set -a # auto-export all assignments source .env && ./gradlew bootRun +set +a # stop exporting variables ``` Finally, you can test that it works with: diff --git a/servers/hello/src/unprotected-server/build.gradle b/servers/hello/src/unprotected-server/build.gradle index 71bdd33..923b8b3 100644 --- a/servers/hello/src/unprotected-server/build.gradle +++ b/servers/hello/src/unprotected-server/build.gradle @@ -23,7 +23,7 @@ dependencies { compileOnly 'org.jetbrains:annotations:17.0.0' - compileOnly 'javax.servlet:servlet-api:3.1.0' + compileOnly 'javax.servlet:javax.servlet-api:3.1.0' runtimeOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.jar b/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..afba109285af78dbd2a1d187e33ac4f87c76e392 GIT binary patch literal 61624 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�Zy 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 literal 0 HcmV?d00001 diff --git a/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties b/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties index 6c58388..b371555 100644 --- a/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties +++ b/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Apr 02 13:15:36 BST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.6-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-all.zip diff --git a/servers/hello/src/unprotected-server/gradlew b/servers/hello/src/unprotected-server/gradlew index af6708f..65dcd68 100755 --- a/servers/hello/src/unprotected-server/gradlew +++ b/servers/hello/src/unprotected-server/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/servers/hello/src/unprotected-server/gradlew.bat b/servers/hello/src/unprotected-server/gradlew.bat index 0f8d593..6689b85 100644 --- a/servers/hello/src/unprotected-server/gradlew.bat +++ b/servers/hello/src/unprotected-server/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From c75dd200084fe02d4d928e72a093cc4afc2ed601 Mon Sep 17 00:00:00 2001 From: Brendan Devenney Date: Tue, 9 Sep 2025 15:13:56 +0100 Subject: [PATCH 02/22] deps: update gradle and sevlet-api --- .../token-binding-check/README.md | 2 + .../token-binding-check/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../token-binding-check/gradlew | 292 +++++++++++------- .../token-binding-check/gradlew.bat | 56 ++-- .../token-check/README.md | 2 + .../token-check/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- .../token-check/gradlew | 292 +++++++++++------- .../token-check/gradlew.bat | 56 ++-- 12 files changed, 438 insertions(+), 274 deletions(-) create mode 100644 servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.jar create mode 100644 servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.jar diff --git a/servers/hello/src/approov-protected-server/token-binding-check/README.md b/servers/hello/src/approov-protected-server/token-binding-check/README.md index 6cbab41..d05ac70 100644 --- a/servers/hello/src/approov-protected-server/token-binding-check/README.md +++ b/servers/hello/src/approov-protected-server/token-binding-check/README.md @@ -57,7 +57,9 @@ Second, you need to build the server with gradle. From the `./servers/hello/src/ Now, you can run this example from the `/servers/hello/src/approov-protected-server/token-binding-check` folder with: ```bash +set -a source .env && ./gradlew bootRun +set +a ``` Next, you can test that it works with: diff --git a/servers/hello/src/approov-protected-server/token-binding-check/build.gradle b/servers/hello/src/approov-protected-server/token-binding-check/build.gradle index f0d415d..1012b3e 100644 --- a/servers/hello/src/approov-protected-server/token-binding-check/build.gradle +++ b/servers/hello/src/approov-protected-server/token-binding-check/build.gradle @@ -29,7 +29,7 @@ dependencies { compileOnly 'org.jetbrains:annotations:17.0.0' - compileOnly 'javax.servlet:servlet-api:3.1.0' + compileOnly 'javax.servlet:javax.servlet-api:3.1.0' runtimeOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.jar b/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..afba109285af78dbd2a1d187e33ac4f87c76e392 GIT binary patch literal 61624 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�Zy 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 literal 0 HcmV?d00001 diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.properties b/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.properties index 6c58388..b371555 100644 --- a/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.properties +++ b/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Apr 02 13:15:36 BST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.6-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-all.zip diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradlew b/servers/hello/src/approov-protected-server/token-binding-check/gradlew index af6708f..65dcd68 100755 --- a/servers/hello/src/approov-protected-server/token-binding-check/gradlew +++ b/servers/hello/src/approov-protected-server/token-binding-check/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradlew.bat b/servers/hello/src/approov-protected-server/token-binding-check/gradlew.bat index 0f8d593..6689b85 100644 --- a/servers/hello/src/approov-protected-server/token-binding-check/gradlew.bat +++ b/servers/hello/src/approov-protected-server/token-binding-check/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/servers/hello/src/approov-protected-server/token-check/README.md b/servers/hello/src/approov-protected-server/token-check/README.md index ee8246c..5d64da2 100644 --- a/servers/hello/src/approov-protected-server/token-check/README.md +++ b/servers/hello/src/approov-protected-server/token-check/README.md @@ -58,7 +58,9 @@ Second, you need to build the server with gradle. From the `./servers/hello/src/ Now, you can run this example from the `/servers/hello/src/approov-protected-server/token-check` folder with: ```bash +set -a source .env && ./gradlew bootRun +set +a ``` Next, you can test that it works with: diff --git a/servers/hello/src/approov-protected-server/token-check/build.gradle b/servers/hello/src/approov-protected-server/token-check/build.gradle index e1e5e22..bedb85d 100644 --- a/servers/hello/src/approov-protected-server/token-check/build.gradle +++ b/servers/hello/src/approov-protected-server/token-check/build.gradle @@ -27,7 +27,7 @@ dependencies { compileOnly 'org.jetbrains:annotations:17.0.0' - compileOnly 'javax.servlet:servlet-api:3.1.0' + compileOnly 'javax.servlet:javax.servlet-api:3.1.0' runtimeOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.jar b/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..afba109285af78dbd2a1d187e33ac4f87c76e392 GIT binary patch literal 61624 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�Zy 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 literal 0 HcmV?d00001 diff --git a/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.properties b/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.properties index 6c58388..b371555 100644 --- a/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.properties +++ b/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Apr 02 13:15:36 BST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.6-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-all.zip diff --git a/servers/hello/src/approov-protected-server/token-check/gradlew b/servers/hello/src/approov-protected-server/token-check/gradlew index af6708f..65dcd68 100755 --- a/servers/hello/src/approov-protected-server/token-check/gradlew +++ b/servers/hello/src/approov-protected-server/token-check/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/servers/hello/src/approov-protected-server/token-check/gradlew.bat b/servers/hello/src/approov-protected-server/token-check/gradlew.bat index 0f8d593..6689b85 100644 --- a/servers/hello/src/approov-protected-server/token-check/gradlew.bat +++ b/servers/hello/src/approov-protected-server/token-check/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From aa6424ae42cc15a15fba092122a7db4308b87c71 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Tue, 9 Dec 2025 11:30:14 +0000 Subject: [PATCH 03/22] start-point-jave-qs --- EXAMPLES.md | 111 --- OVERVIEW.md | 55 -- QUICKSTARTS.md | 33 - README.md | 341 ++++--- TESTING.md | 43 - docker-compose.yml | 49 -- docker/Dockerfile | 96 -- docker/setup/adb-setup-certificate.sh | 15 - docker/setup/add-certificate-to-browser.sh | 49 -- .../setup/add-certificate-to-node-server.sh | 27 - docker/setup/add-proxy-certificate.sh | 20 - docker/setup/certificates/.gitignore | 2 - docker/setup/create-domain-certificate.sh | 59 -- docker/setup/localhost.txt | 15 - docker/setup/openssl.cnf | 353 -------- docker/setup/setup-root-certificate.sh | 44 - docs/APPROOV_TOKEN_BINDING_QUICKSTART.md | 313 ------- docs/APPROOV_TOKEN_QUICKSTART.md | 297 ------- ex-test.sh | 770 ++++++++++++++++ .../hello/src/unprotected-server/.env.example | 22 - .../hello/src/unprotected-server/README.md | 97 -- .../hello/src/unprotected-server/build.gradle | 31 - .../gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - servers/hello/src/unprotected-server/gradlew | 244 ----- .../hello/src/unprotected-server/gradlew.bat | 92 -- .../src/unprotected-server/settings.gradle | 6 - .../approov/jwt/ApiController.java | 27 - .../criticalblue/approov/jwt/Application.java | 71 -- .../jwt/CustomServletErrorAttributes.java | 27 - .../approov/jwt/WebSecurityConfig.java | 52 -- .../src/main/resources/application.properties | 41 - .../main/resources/keystore/ApproovTLS.p12 | Bin 2599 -> 0 bytes .../approov/jwt/ApplicationTests.java | 19 - servers/shapes-api/.env.example | 22 - servers/shapes-api/README.md | 831 ------------------ servers/shapes-api/bin/generate-token | 92 -- servers/shapes-api/build.gradle | 35 - servers/shapes-api/docker/Dockerfile | 96 -- .../docker/setup/adb-setup-certificate.sh | 15 - .../setup/add-certificate-to-browser.sh | 49 -- .../setup/add-certificate-to-node-server.sh | 27 - .../docker/setup/add-proxy-certificate.sh | 20 - .../docker/setup/certificates/.gitignore | 2 - .../docker/setup/create-domain-certificate.sh | 59 -- servers/shapes-api/docker/setup/localhost.txt | 15 - servers/shapes-api/docker/setup/openssl.cnf | 353 -------- .../docker/setup/setup-root-certificate.sh | 44 - servers/shapes-api/docker/usage-help.txt | 50 -- .../docs/approov-shapes-api-server.md | 537 ----------- ...ov-token-binding-with-approov-disabled.png | Bin 87455 -> 0 bytes ...an-forms-invalid-approov-token-binding.png | Bin 87229 -> 0 bytes ...tman-forms-valid-approov-token-binding.png | Bin 74025 -> 0 bytes .../docs/assets/img/postman-hello.png | Bin 56213 -> 0 bytes ...red-approov-token-and-approov-disabled.png | Bin 85715 -> 0 bytes .../postman-shapes-expired-approov-token.png | Bin 84768 -> 0 bytes ...med-approov-token-and-approov-disabled.png | Bin 74920 -> 0 bytes ...postman-shapes-malformed-approov-token.png | Bin 74061 -> 0 bytes ...ing-approov-token-and-approov-disabled.png | Bin 68286 -> 0 bytes .../postman-shapes-missing-approov-token.png | Bin 67432 -> 0 bytes ...lid-approov-token-and-approov-disabled.png | Bin 72919 -> 0 bytes .../postman-shapes-valid-approov-token.png | Bin 73792 -> 0 bytes ...ov-token-binding-with-approov-disabled.png | Bin 74252 -> 0 bytes ...ll-forms-invalid-approov-token-binding.png | Bin 85321 -> 0 bytes ...hell-forms-valid-approov-token-binding.png | Bin 72802 -> 0 bytes .../docs/assets/img/shell-hello.png | Bin 58305 -> 0 bytes ...-disabled-with-valid-and-expired-token.png | Bin 91718 -> 0 bytes ...med-approov-token-and-approov-disabled.png | Bin 66689 -> 0 bytes .../shell-shapes-malformed-approov-token.png | Bin 78586 -> 0 bytes ...ing-approov-token-and-approov-disabled.png | Bin 65792 -> 0 bytes .../shell-shapes-missing-approov-token.png | Bin 61735 -> 0 bytes .../shell-shapes-valid-and-expired-token.png | Bin 108022 -> 0 bytes .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - servers/shapes-api/gradlew | 172 ---- servers/shapes-api/gradlew.bat | 84 -- servers/shapes-api/settings.gradle | 6 - .../approov/jwt/ApiController.java | 127 --- .../criticalblue/approov/jwt/Application.java | 71 -- .../jwt/CustomServletErrorAttributes.java | 26 - .../criticalblue/approov/jwt/RandomForm.java | 25 - .../criticalblue/approov/jwt/RandomShape.java | 24 - .../approov/jwt/WebSecurityConfig.java | 122 --- .../authentication/ApproovAuthentication.java | 161 ---- .../ApproovAuthenticationEntryPoint.java | 43 - .../ApproovAuthenticationException.java | 36 - .../ApproovAuthenticationProvider.java | 48 - .../jwt/authentication/ApproovConfig.java | 87 -- .../jwt/authentication/ApproovException.java | 9 - .../ApproovJwtAuthentication.java | 20 - .../ApproovSecurityContextRepository.java | 91 -- .../ApproovTokenBindingAuthentication.java | 118 --- ...ovTokenBindingAuthenticationException.java | 33 - .../criticalblue/approov/jwt/dto/Forms.java | 14 - .../criticalblue/approov/jwt/dto/Hello.java | 9 - .../criticalblue/approov/jwt/dto/Shapes.java | 14 - .../src/main/resources/application.properties | 41 - .../main/resources/keystore/ApproovTLS.p12 | Bin 2599 -> 0 bytes .../approov/jwt/ApplicationTests.java | 16 - servers/shapes-api/stack | 224 ----- test.sh | 406 +++++++++ .../.env.example | 0 .../README.md | 0 .../build.gradle | 0 .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../gradlew | 0 .../gradlew.bat | 0 .../settings.gradle | 0 .../approov/jwt/ApiController.java | 0 .../criticalblue/approov/jwt/Application.java | 0 .../jwt/CustomServletErrorAttributes.java | 0 .../approov/jwt/WebSecurityConfig.java | 0 .../authentication/ApproovAuthentication.java | 0 .../ApproovAuthenticationEntryPoint.java | 0 .../ApproovAuthenticationException.java | 0 .../ApproovAuthenticationProvider.java | 0 .../jwt/authentication/ApproovConfig.java | 0 .../jwt/authentication/ApproovException.java | 0 .../ApproovJwtAuthentication.java | 0 .../ApproovSecurityContextRepository.java | 0 .../ApproovTokenBindingAuthentication.java | 0 ...ovTokenBindingAuthenticationException.java | 0 .../src/main/resources/application.properties | 0 .../main/resources/keystore/ApproovTLS.p12 | Bin .../approov/jwt/ApplicationTests.java | 0 .../token-check => token-check}/.env.example | 0 .../token-check => token-check}/README.md | 0 .../token-check => token-check}/build.gradle | 0 .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../token-check => token-check}/gradlew | 0 .../token-check => token-check}/gradlew.bat | 0 .../settings.gradle | 0 .../approov/jwt/ApiController.java | 0 .../criticalblue/approov/jwt/Application.java | 0 .../jwt/CustomServletErrorAttributes.java | 0 .../approov/jwt/WebSecurityConfig.java | 0 .../authentication/ApproovAuthentication.java | 0 .../ApproovAuthenticationEntryPoint.java | 0 .../ApproovAuthenticationException.java | 0 .../ApproovAuthenticationProvider.java | 0 .../jwt/authentication/ApproovConfig.java | 0 .../jwt/authentication/ApproovException.java | 0 .../ApproovJwtAuthentication.java | 0 .../ApproovSecurityContextRepository.java | 0 .../src/main/resources/application.properties | 0 .../main/resources/keystore/ApproovTLS.p12 | Bin .../approov/jwt/ApplicationTests.java | 0 149 files changed, 1378 insertions(+), 6329 deletions(-) delete mode 100644 EXAMPLES.md delete mode 100644 OVERVIEW.md delete mode 100644 QUICKSTARTS.md delete mode 100644 TESTING.md delete mode 100644 docker-compose.yml delete mode 100644 docker/Dockerfile delete mode 100755 docker/setup/adb-setup-certificate.sh delete mode 100755 docker/setup/add-certificate-to-browser.sh delete mode 100755 docker/setup/add-certificate-to-node-server.sh delete mode 100755 docker/setup/add-proxy-certificate.sh delete mode 100644 docker/setup/certificates/.gitignore delete mode 100755 docker/setup/create-domain-certificate.sh delete mode 100644 docker/setup/localhost.txt delete mode 100644 docker/setup/openssl.cnf delete mode 100755 docker/setup/setup-root-certificate.sh delete mode 100644 docs/APPROOV_TOKEN_BINDING_QUICKSTART.md delete mode 100644 docs/APPROOV_TOKEN_QUICKSTART.md create mode 100644 ex-test.sh delete mode 100644 servers/hello/src/unprotected-server/.env.example delete mode 100644 servers/hello/src/unprotected-server/README.md delete mode 100644 servers/hello/src/unprotected-server/build.gradle delete mode 100644 servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.jar delete mode 100644 servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties delete mode 100755 servers/hello/src/unprotected-server/gradlew delete mode 100644 servers/hello/src/unprotected-server/gradlew.bat delete mode 100644 servers/hello/src/unprotected-server/settings.gradle delete mode 100644 servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/ApiController.java delete mode 100644 servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/Application.java delete mode 100644 servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java delete mode 100644 servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java delete mode 100644 servers/hello/src/unprotected-server/src/main/resources/application.properties delete mode 100644 servers/hello/src/unprotected-server/src/main/resources/keystore/ApproovTLS.p12 delete mode 100644 servers/hello/src/unprotected-server/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java delete mode 100644 servers/shapes-api/.env.example delete mode 100644 servers/shapes-api/README.md delete mode 100755 servers/shapes-api/bin/generate-token delete mode 100644 servers/shapes-api/build.gradle delete mode 100644 servers/shapes-api/docker/Dockerfile delete mode 100755 servers/shapes-api/docker/setup/adb-setup-certificate.sh delete mode 100755 servers/shapes-api/docker/setup/add-certificate-to-browser.sh delete mode 100755 servers/shapes-api/docker/setup/add-certificate-to-node-server.sh delete mode 100755 servers/shapes-api/docker/setup/add-proxy-certificate.sh delete mode 100644 servers/shapes-api/docker/setup/certificates/.gitignore delete mode 100755 servers/shapes-api/docker/setup/create-domain-certificate.sh delete mode 100644 servers/shapes-api/docker/setup/localhost.txt delete mode 100644 servers/shapes-api/docker/setup/openssl.cnf delete mode 100755 servers/shapes-api/docker/setup/setup-root-certificate.sh delete mode 100644 servers/shapes-api/docker/usage-help.txt delete mode 100644 servers/shapes-api/docs/approov-shapes-api-server.md delete mode 100644 servers/shapes-api/docs/assets/img/postman-forms-invalid-approov-token-binding-with-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-forms-invalid-approov-token-binding.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-forms-valid-approov-token-binding.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-hello.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-expired-approov-token-and-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-expired-approov-token.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-malformed-approov-token-and-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-malformed-approov-token.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-missing-approov-token-and-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-missing-approov-token.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-valid-approov-token-and-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/postman-shapes-valid-approov-token.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-forms-invalid-approov-token-binding-with-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-forms-invalid-approov-token-binding.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-forms-valid-approov-token-binding.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-hello.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-shapes-approov-disabled-with-valid-and-expired-token.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-shapes-malformed-approov-token-and-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-shapes-malformed-approov-token.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-shapes-missing-approov-token-and-approov-disabled.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-shapes-missing-approov-token.png delete mode 100644 servers/shapes-api/docs/assets/img/shell-shapes-valid-and-expired-token.png delete mode 100644 servers/shapes-api/gradle/wrapper/gradle-wrapper.jar delete mode 100644 servers/shapes-api/gradle/wrapper/gradle-wrapper.properties delete mode 100755 servers/shapes-api/gradlew delete mode 100644 servers/shapes-api/gradlew.bat delete mode 100644 servers/shapes-api/settings.gradle delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/ApiController.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/Application.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomForm.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomShape.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Forms.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Hello.java delete mode 100644 servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Shapes.java delete mode 100644 servers/shapes-api/src/main/resources/application.properties delete mode 100644 servers/shapes-api/src/main/resources/keystore/ApproovTLS.p12 delete mode 100644 servers/shapes-api/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java delete mode 100755 servers/shapes-api/stack create mode 100644 test.sh rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/.env.example (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/README.md (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/build.gradle (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/gradle/wrapper/gradle-wrapper.jar (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/gradle/wrapper/gradle-wrapper.properties (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/gradlew (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/gradlew.bat (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/settings.gradle (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/ApiController.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/Application.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/resources/application.properties (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/main/resources/keystore/ApproovTLS.p12 (100%) rename {servers/hello/src/approov-protected-server/token-binding-check => token-binding-check}/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/.env.example (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/README.md (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/build.gradle (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/gradle/wrapper/gradle-wrapper.jar (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/gradle/wrapper/gradle-wrapper.properties (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/gradlew (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/gradlew.bat (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/settings.gradle (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/ApiController.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/Application.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/resources/application.properties (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/main/resources/keystore/ApproovTLS.p12 (100%) rename {servers/hello/src/approov-protected-server/token-check => token-check}/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java (100%) diff --git a/EXAMPLES.md b/EXAMPLES.md deleted file mode 100644 index b26ce5b..0000000 --- a/EXAMPLES.md +++ /dev/null @@ -1,111 +0,0 @@ -# Approov Integrations Examples - -[Approov](https://approov.io) is an API security solution used to verify that requests received by your backend services originate from trusted versions of your mobile apps, and here you can find the Hello servers examples that are the base for the Approov [quickstarts](/docs) for the Java Spring framework. - -For more information about how Approov works and why you should use it you can read the [Approov Overview](/OVERVIEW.md) at the root of this repo. - -If you are looking for the Approov quickstarts to integrate Approov in your Java Spring API server then you can find them [here](/docs). - - -## Hello Server Examples - -To learn more about each Hello server example you need to read the README for each one at: - -* [Unprotected Server](./servers/hello/src/unprotected-server) -* [Approov Protected Server - Token Check](./servers/hello/src/approov-protected-server/token-check) -* [Approov Protected Server - Token Binding Check](./servers/hello/src/approov-protected-server/token-binding-check) - - -## Docker Stack - -The docker stack provided via the `docker-compose.yml` file in this folder is used for development proposes and if you are familiar with docker then feel free to also use it to follow along the examples. - -If you decide to use the docker stack then you need to bear in mind that the Postman collections, used to test the servers examples, will connect to port `8002` therefore you cannot start all docker compose services at once, for example with `docker-compose up`, instead you need to run one at a time as exemplified below in [Command Examples](#command-examples). - -### Setup - -#### For Gradle - -The docker compose file is mapping the folder `~/.gradle` inside the docker container to `./.local/.gradle` in your computer in order to persist the gradle distribution that is downloaded and installed on the first invocation of `./gradlew`. - -Create the folder in your computer with this bash command: - -```bash -mkdir -p .local/.gradle -``` - -#### For Approov - -To run the Approov protected servers you need to provide a `.env` file with the Approov Base64 secret, therefore you need to copy the file `.env.example` to `.env`: - -```bash -cp .env.example .env -``` - -Now, add [the dummy secret](/TESTING.md#the-dummy-secret) to the `env` file to be used only for test proposes on this examples. - -### Command Examples - -To run each of the Hello servers with docker compose you just need to follow the respective example below. - -#### For the unprotected server - -Run the container attached to your machine bash shell: - -```bash -sudo docker-compose up unprotected-server -``` - -or get a bash shell inside the container: - -```bash -sudo docker-compose run --rm --service-ports unprotected-server zsh -``` - -#### For the Approov Token Check - -Run the container attached to the shell: - -```bash -sudo docker-compose up approov-token-check -``` - -or get a bash shell inside the container: - -```bash -sudo docker-compose run --rm --service-ports approov-token-check zsh -``` - -#### For the Approov Token Binding Check - -Run the container attached to the shell: - -```bash -sudo docker-compose up approov-token-binding-check -``` - -or get a bash shell inside the container: - -```bash -sudo docker-compose run --rm --service-ports approov-token-binding-check zsh -``` - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) diff --git a/OVERVIEW.md b/OVERVIEW.md deleted file mode 100644 index 40f2398..0000000 --- a/OVERVIEW.md +++ /dev/null @@ -1,55 +0,0 @@ -# Approov Overview - -[Approov](https://approov.io) is an API security solution used to verify that requests received by your backend services originate from trusted versions of your mobile apps. - - -## Why? - -You can learn more about Approov, the motives for adopting it, and more detail on how it works by following this [link](https://approov.io/product). In brief, Approov: - -* Ensures that accesses to your API come from official versions of your apps; it blocks accesses from republished, modified, or tampered versions -* Protects the sensitive data behind your API; it prevents direct API abuse from bots or scripts scraping data and other malicious activity -* Secures the communication channel between your app and your API with [Approov Dynamic Certificate Pinning](https://approov.io/docs/latest/approov-usage-documentation/#approov-dynamic-pinning). This has all the benefits of traditional pinning but without the drawbacks -* Removes the need for an API key in the mobile app -* Provides DoS protection against targeted attacks that aim to exhaust the API server resources to prevent real users from reaching the service or to at least degrade the user experience. - - -## How it works? - -This is a brief overview of how the Approov cloud service and the backend server fit together from a backend perspective. For a complete overview of how the mobile app and backend fit together with the Approov cloud service and the Approov SDK we recommend to read the [Approov overview](https://approov.io/product) page on our website. - -### Approov Cloud Service - -The Approov cloud service attests that a device is running a legitimate and tamper-free version of your mobile app. - -* If the integrity check passes then a valid token is returned to the mobile app -* If the integrity check fails then a legitimate looking token will be returned - -In either case, the app, unaware of the token's validity, adds it to every request it makes to the Approov protected API(s). - -### The Backend Server - -The backend server ensures that the token supplied in the `Approov-Token` header is present and valid. The validation is done by using a shared secret known only to the Approov cloud service and the backend server. - -The request is handled such that: - -* If the Approov Token is valid, the request is allowed to be processed by the API endpoint -* If the Approov Token is invalid, an HTTP 401 Unauthorized response is returned - -You can choose to log JWT verification failures, but we left it out on purpose so that you can have the choice of how you prefer to do it and decide the right amount of information you want to log. - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) diff --git a/QUICKSTARTS.md b/QUICKSTARTS.md deleted file mode 100644 index 4545959..0000000 --- a/QUICKSTARTS.md +++ /dev/null @@ -1,33 +0,0 @@ -# Approov Integration Quickstarts - -[Approov](https://approov.io) is an API security solution used to verify that requests received by your backend services originate from trusted versions of your mobile apps. - - -## The Quickstarts - -The quickstart code for the Approov backend server is split into two implementations. The first gets you up and running with basic token checking. The second uses a more advanced Approov feature, _token binding_. Token binding may be used to link the Approov token with other properties of the request, such as user authentication (more details can be found [here](https://approov.io/docs/latest/approov-usage-documentation/#token-binding)). -* [Approov token check quickstart](/docs/APPROOV_TOKEN_QUICKSTART.md) -* [Approov token check with token binding quickstart](/docs/APPROOV_TOKEN_BINDING_QUICKSTART.md) - -Both the quickstarts are built from the unprotected example server defined [here](/servers/hello/src/unprotected-server). - - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) diff --git a/README.md b/README.md index 72af4cc..1edf462 100644 --- a/README.md +++ b/README.md @@ -1,189 +1,252 @@ -# Approov QuickStart - Java Spring Token Check +# Approov Backend Quickstart - {{LANGUAGE}} {{FRAMEWORK}} -[Approov](https://approov.io) is an API security solution used to verify that requests received by your backend services originate from trusted versions of your mobile apps. +This project provides a server-side example of Approov token verification for a protected backend API. It exposes a simple API that verifies Approov tokens before granting access to protected endpoints and demonstrates how the endpoints behave under the current Approov configuration: -This repo implements the Approov server-side request verification code with the Java Spring framework in a simple Hello API server, which performs the verification check before allowing valid traffic to be processed by the API endpoint. + - `/unprotected` - no Approov token required. + - `/token-check` - requires a valid Approov token. + - `/token-binding` - requires a valid Approov token which is bound to a header value. + - `/token-double-binding` - requires a valid Approov token which is bound to two header values. -Originally this repo was just to show the Approov token integration example on a Java Spring API as described in the article: [Approov Integration in a Java Spring API](https://approov.io/blog//approov-integration-in-a-python-flask-api), that you can still find at [/servers/shapes-api](/servers/shapes-api). + +In this example, Approov protection is provided by [`{{DECORATOR_FUNCTION_NAME}}`]({{DECORATOR_LINK}}). The level of protection is configured per endpoint via the decorator parameters, as shown in [`{{ENDPOINT_CONFIG_NAME}}`]({{ENDPOINT_EXAMPLE_LINK}}). + -## Approov Integration Quickstart +## Approov Token Verification Flow -The quickstart was tested with the following Operating Systems: +1. **Token Request:** + The Approov SDK inside the mobile app securely communicates with the Approov Cloud Service to obtain a short-lived [Approov Token](https://ext.approov.io/docs/latest/approov-usage-documentation/#approov-tokens) (a signed JWT). + Additionally, you can use the CLI [token commands](https://ext.approov.io/docs/latest/approov-cli-tool-reference/#token-commands) to validate tokens, generate new ones, and set the data hash. -* Ubuntu 20.04 -* MacOS Big Sur -* Windows 10 WSL2 - Ubuntu 20.04 +2. **Token Attachment:** + The app attaches this token to every API request using the `Approov-Token` HTTP header. -First, setup the [Approov CLI](https://approov.io/docs/latest/approov-installation/index.html#initializing-the-approov-cli). +3. **Server Validation:** + The [server verifies](https://ext.approov.io/docs/latest/approov-usage-documentation/#approov-architecture) the token using the shared Approov secret, checking its: + - Signature authenticity + - Expiration (`exp` claim) + - Other claims if configured -Now, register the API domain for which Approov will issues tokens: +4. **Token Binding (Optional):** + [Token binding](https://ext.approov.io/docs/latest/approov-usage-documentation/#token-binding) is configured by the app via the Approov SDK, which hashes a chosen binding value (for example the `Authorization` header) and embeds it into the Approov token. + The protected API then computes the same hash from the incoming request and verifies that it matches the `pay` claim, preventing token reuse or replay attacks. For local testing, you can also generate example tokens with a binding using the Approov CLI. + +5. **Request Decision:** + If all checks pass → the request is trusted and processed `200 OK`. + If validation fails → the server responds with `401 Unauthorized`. + +## Requirements: + +1. ***Approov account*** - If you're new, sign up for an [Approov trial account](https://approov.io/signup). +2. ***Approov CLI initialized*** - Follow the [installation guide](https://ext.approov.io/docs/latest/approov-installation/#initializing-the-approov-cli) and confirm `approov whoami` works. +3. ***Install curl*** - Ensure the `curl` CLI is available. +4. ***Create .env file*** - copy `.env.example` so there is a place to store the secret key. + ```bash + cp .env.example .env + ``` + +5. ***Configure secret*** - fetch the secret and add it to `.env` (`APPROOV_BASE64_SECRET`): + ```bash + approov secret -get base64 + ``` + +6. ***Register API domain*** - point Approov at your backend API (default example.com): + ```bash + approov api -add example.com + ``` + +7. ***Install Docker and Docker Compose*** - follow the official guide: [Docker docs](https://docs.docker.com/get-started/get-docker/) + +## Try it yourself using Docker + +*If you have all requirements, you can run* ```bash -approov api -add api.example.com +bash run-server.sh ``` -> **NOTE:** By default a symmetric key (HS256) is used to sign the Approov token on a valid attestation of the mobile app for each API domain it's added with the Approov CLI, so that all APIs will share the same secret and the backend needs to take care to keep this secret secure. -> -> A more secure alternative is to use asymmetric keys (RS256 or others) that allows for a different keyset to be used on each API domain and for the Approov token to be verified with a public key that can only verify, but not sign, Approov tokens. -> -> To implement the asymmetric key you need to change from using the symmetric HS256 algorithm to an asymmetric algorithm, for example RS256, that requires you to first [add a new key](https://approov.io/docs/latest/approov-usage-documentation/#adding-a-new-key), and then specify it when [adding each API domain](https://approov.io/docs/latest/approov-usage-documentation/#keyset-key-api-addition). Please visit [Managing Key Sets](https://approov.io/docs/latest/approov-usage-documentation/#managing-key-sets) on the Approov documentation for more details. +This script: +- Builds and starts containers – runs `docker compose -f compose.yaml up -d --build app` to build the image and launch the application in the background. +- Runs test.sh – which executes all endpoint tests + - `/unprotected` - no security headers required. + - `/token-check` - requires the `Approov-Token` header. + - `/token-binding` - requires `Approov-Token` and `Authorization` headers. + - `/token-double-binding` - requires `Approov-Token`, `Authorization`, and `Content-Digest` headers. +- Displays results and stops containers when finished. + +## Automated and Manual Testing + +*When the server is running, validate the endpoints via the automated bash script or by running the manual checks below* + +```bash +bash test.sh +``` + +This script: +- Verifies that the `approov` and `curl` commands are installed. +- Checks Approov status by calling `/approov-state` (enabled vs disabled). +- Runs endpoint tests against `/unprotected` (no token), `/token-check` (valid/invalid Approov tokens), `/token-binding` (token bound to `Authorization`), and `/token-double-binding` (token bound to `Authorization` + `Content-Digest`). +- Logs full request/response details to `.config/logs/.log`. + +### *1. Unprotected Endpoint (No Approov)* + +- The client sends a normal HTTPS request. +- The server **does not verify** any Approov token or extra authentication header. +- This means **any client** (even tampered or unauthorized) can call the API if they know the URL. + +*The following example shows how the API responds when no Approov protection is applied.* + +```bash +curl -iX GET http://localhost:8080/unprotected +``` + +The response will be `200 OK` for this request: +```text +HTTP/1.1 200 OK +Content-Type: application/json +Cache-Control: no-cache +``` + +### *2. Approov Token Check* + +- The client includes an `Approov-Token` (a short-lived JWT) in each API request header. +- The server verifies this token using the **Approov secret key** that is securely configured on the backend and checks: + - Token verification - confirms the token is signed by the Approov secret. + - Expiration (`exp` claim) - ensures the token is still valid. +- If the token is valid → request is trusted. +- If invalid → server returns `401 Unauthorized`. +- **Purpose**: Protect API endpoints so that only authentic, unmodified Approov-integrated apps can access them. + +***The following example shows how the API responds when an Approov token is required.*** -Next, enable your Approov `admin` role with: +*Generate a valid Approov token:* ```bash -eval `approov role admin` -```` +approov token -genExample example.com +``` -For the Windows powershell: +*Use the generated token in the `Approov-Token` header and `/token-check` endpoint.* ```bash -set APPROOV_ROLE=admin:___YOUR_APPROOV_ACCOUNT_NAME_HERE___ -```` +curl -iX GET http://localhost:8080/token-check \ + -H "Approov-Token: valid_approov_token_here" +``` + +The response will be `200 OK` for this request: + +```text +HTTP/1.1 200 OK +Content-Type: application/json +Cache-Control: no-cache +``` + +*If you use an invalid or missing token, the server will respond with `401 Unauthorized`.* + +### *3. Approov Token Binding Check* + +- The client sends two headers on authenticated API calls: + - `Approov-Token` + - `Authorization` – your auth token value (e.g., `ExampleAuthToken==`) +- The server verifies the token and ensures that the bound value matches what the app used. +- Prevents token replay - the Approov token cannot be reused or stolen for another session. +- **Use case:** stronger protection for authenticated API calls tied to a specific user or device. + +***The following example shows how the API responds when an Approov token with binding is required.*** + +*Generate a valid Approov token bound to the `Authorization` header:* + +```bash +approov token -setDataHashInToken ExampleAuthToken== -genExample example.com +``` -Now, get your Approov Secret with the [Approov CLI](https://approov.io/docs/latest/approov-installation/index.html#initializing-the-approov-cli): +*Use the generated token with binding in the Approov-Token and Authorization headers when calling the /token-binding endpoint.* ```bash -approov secret -get base64 +curl -iX GET http://localhost:8080/token-binding \ + -H "Approov-Token: valid_approov_token_here" \ + -H "Authorization: ExampleAuthToken==" ``` -Next, add the [Approov secret](https://approov.io/docs/latest/approov-usage-documentation/#account-secret-key-export) to your project `.env` file: +The response will be `200 OK` for this request: -```env -APPROOV_BASE64_SECRET=approov_base64_secret_here +```text +HTTP/1.1 200 OK +Content-Type: application/json +Cache-Control: no-cache ``` -Now, to check the Approov token you need to add the [jwtk/jjwt](https://github.com/jwtk/jjwt) package to your `build.gradle` dependencies: +*If you use an invalid or missing header or token, the server will respond with `401 Unauthorized`.* -```gradle -dependencies { +#### Approov Token Binding Check with Two Different Bound Values - // omitted.. +- The client sends three headers on authenticated API calls: + - `Approov-Token` + - `Authorization` + - `Content-Digest` It is combined with the `Authorization` header to create a stronger binding. +- Both are included in the hash inside the Approov token. This means the server verifies a single hash that covers both authentication credentials. +- **Use case:** This configuration provides the highest level of protection for authenticated API requests: - implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2' - runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2', - 'io.jsonwebtoken:jjwt-jackson:0.11.2' -} +***The following example shows how the API responds when an Approov token with two bindings is required.*** + +*Generate a valid Approov token bound to the `Authorization` and `Content-Digest` headers:* + +```bash +approov token -setDataHashInToken ExampleAuthToken==ContentDigest== -genExample example.com ``` -Next, add the package `com.criticalblue.approov.jwt.authentication` to your current project by copying (from this repo) the entire [authentication](/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication) folder into your project. - - -Now, use it from the class in your project that extends the `WebSecurityConfigurerAdapter`. For example: - -```java -package com.yourcompany.projectname; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - // @IMPORTANT Approov token check must be at Order 1. Any other type of - // Authentication (User, API Key, etc.) for the request should go - // after with @Order(2) - @Order(1) - public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - // @APPROOV The Approov Token check is triggered here. - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - // @APPROOV The Approov Token check is configured here. - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig)) - .and() - .exceptionHandling() - // @APPROOV The Approov Token check is done here - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - // @APPROOV This matcher will require the Approov token for - // all API endpoints. - .antMatcher("/") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/**").authenticated(); - } - } -} +*Use the generated token with two bindings in the Approov-Token and Authorization headers when calling the `/token-double-binding` endpoint.* + +```bash +curl -iX GET http://localhost:8080/token-double-binding \ + -H "Approov-Token: valid_approov_token_here" \ + -H "Authorization: ExampleAuthToken==" \ + -H "Content-Digest: ContentDigest==" ``` -> **NOTE:** When the Approov token validation fails we return a `401` with an empty body, because we don't want to give clues to an attacker about the reason the request failed, and you can go even further by returning a `400`. +The response will be `200 OK` for this request. + +```text +HTTP/1.1 200 OK +Content-Type: application/json +Cache-Control: no-cache +``` -Not enough details in the bare bones quickstart? No worries, check the [detailed quickstarts](QUICKSTARTS.md) that contain a more comprehensive set of instructions, including how to test the Approov integration. +*If you use an invalid or missing header or token, the server will respond with `401 Unauthorized`.* +## Enable or Disable Approov Protection -## More Information +When the example server is running on `localhost:8080`, you can toggle Approov protection with these commands: -* [Approov Overview](OVERVIEW.md) -* [Detailed Quickstarts](QUICKSTARTS.md) -* [Examples](EXAMPLES.md) -* [Testing](TESTING.md) +```bash +curl -X POST http://localhost:8080/approov/disable # disable the Approov service -### System Clock +curl -X POST http://localhost:8080/approov/enable # enable the Approov service -In order to correctly check for the expiration times of the Approov tokens is very important that the backend server is synchronizing automatically the system clock over the network with an authoritative time source. In Linux this is usually done with a NTP server. +curl -X GET http://localhost:8080/approov-state # check current state +``` +*You can rerun the tests with Approov disabled to observe how the application behaves when the Approov protection is ***no longer active***.* -## Issues +## Reporting Issues -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. +**Environments where the quickstart was tested:** +```text +* Runtime: {{RUNTIME_VERSION}} +* Framework: {{LANGUAGE}} {{FRAMEWORK}} +* Build Tool: {{BUILD_TOOL}} {{BUILD_TOOL_VERSION}} +``` +If you encounter any problems while following this guide, or have any other concerns, please let us know by opening an issue [here](https://github.com/approov/quickstart-java-spring-token-check/issues) and we will be happy to assist you. ## Useful Links -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) +* [Approov QuickStarts](https://approov.io/resource/quickstarts/) +* [Approov Docs](https://ext.approov.io/docs) +* [Approov Blog](https://approov.io/blog) * [Approov Resources](https://approov.io/resource/) * [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) +* [Approov Support](https://approov.io/info/technical-support) * [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) +* [Contact Us](https://approov.io/info/contact) + diff --git a/TESTING.md b/TESTING.md deleted file mode 100644 index beb54dd..0000000 --- a/TESTING.md +++ /dev/null @@ -1,43 +0,0 @@ -# Approov Integration Testing - -[Approov](https://approov.io) is an API security solution used to verify that requests received by your backend services originate from trusted versions of your mobile apps. - -## Testing the Approov Integration - -Each Quickstart has at their end a dedicated section for testing, that will walk you through the necessary steps to use the Approov CLI to generate valid and invalid tokens to test your Approov integration without the need to rely on the genuine mobile app(s) using your backend. - -* [Approov Token](/docs/APPROOV_TOKEN_QUICKSTART.md#test-your-approov-integration) test examples. -* [Approov Token Binding](/docs/APPROOV_TOKEN_BINDING_QUICKSTART.md#test-your-approov-integration) test examples. - -### Testing with Postman - -A ready-to-use Postman collection can be found [here](https://raw.githubusercontent.com/approov/postman-collections/master/quickstarts/hello-world/hello-world.postman_collection.json). It contains a comprehensive set of example requests to send to the backend server for testing. The collection contains requests with valid and invalid Approov tokens, and with and without token binding. - -### Testing with Curl - -An alternative to the Postman collection is to use cURL to make the API requests. Check some examples [here](https://github.com/approov/postman-collections/blob/master/quickstarts/hello-world/hello-world.postman_curl_requests_examples.md). - -### The Dummy Secret - -The valid Approov tokens in the Postman collection and cURL requests examples were signed with a dummy secret that was generated with `openssl rand -base64 64 | tr -d '\n'; echo`, therefore not a production secret retrieved with `approov secret -get base64`, thus in order to use it you need to set the `APPROOV_BASE64_SECRET`, in the `.env` file for each [Approov integration example](/src/approov-protected-server), to the following value: `h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww==`. - - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 72e2d8d..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,49 +0,0 @@ -version: "2.3" - -services: - - unprotected-server: - image: approov/openjdk:11.0.3 - build: - context: ./docker - env_file: - - .env - networks: - - default - command: sh -c "./gradlew build && ./gradlew bootRun" - ports: - - ${HOST_IP:-127.0.0.1}:${HTTP_PORT:-8002}:${HTTP_PORT:-8002} - volumes: - - ./servers/hello/src/unprotected-server:/home/developer/workspace - - ./.local/.gradle:/home/developer/.gradle - - approov-token-check: - image: approov/openjdk:11.0.3 - build: - context: ./docker - env_file: - - .env - networks: - - default - command: sh -c "./gradlew build && ./gradlew bootRun" - ports: - - ${HOST_IP:-127.0.0.1}:${HTTP_PORT:-8002}:${HTTP_PORT:-8002} - volumes: - - ./servers/hello/src/approov-protected-server/token-check:/home/developer/workspace - - ./.local/.gradle:/home/developer/.gradle - - approov-token-binding-check: - image: approov/openjdk:11.0.3 - build: - context: ./docker - env_file: - - .env - networks: - - default - command: sh -c "./gradlew build && ./gradlew bootRun" - ports: - - ${HOST_IP:-127.0.0.1}:${HTTP_PORT:-8002}:${HTTP_PORT:-8002} - volumes: - - ./servers/hello/src/approov-protected-server/token-binding-check:/home/developer/workspace - - ./.local/.gradle:/home/developer/.gradle - diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index aec047e..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,96 +0,0 @@ -FROM openjdk:11.0.3 - -ARG CONTAINER_USER="developer" -ARG CONTAINER_UID="1000" -ARG ZSH_THEME="robbyrussell" -ARG GRADLE_VERSION=5.2.1 - - -# Will not prompt for questions -ENV DEBIAN_FRONTEND=noninteractive \ - CONTAINER_USER="${CONTAINER_USER}" \ - CONTAINER_UID="${CONTAINER_UID}" \ - ROOT_CA_DIR=/root-ca/ \ - ROOT_CA_KEY="self-signed-root-ca.key" \ - ROOT_CA_PEM="self-signed-root-ca.pem" \ - ROOT_CA_NAME="ApproovStackRootCA" \ - PROXY_CA_FILENAME="FirewallProxyCA.crt" \ - PROXY_CA_PEM="certificates/FirewallProxyCA.crt" \ - PROXY_CA_NAME="FirewallProxy" \ - NO_AT_BRIDGE=1 \ - DISPLAY=":0" \ - GRADLE_HOME=/opt/gradle/gradle-"${GRADLE_VERSION}" \ - PATH=/opt/gradle/gradle-"${GRADLE_VERSION}"/bin:${PATH} - -COPY ./setup ${ROOT_CA_DIR} - -RUN apt update && \ - apt -y upgrade && \ - - apt -y install \ - python3 \ - python3-pip \ - locales \ - tzdata \ - ca-certificates \ - inotify-tools \ - libnss3-tools \ - zip \ - zsh \ - curl \ - git \ - maven && \ - - printf "\n\n----------> FORCING INSTALLATION OF MISSING DEPENDENCIES <------------\n\n" && \ - apt -y -f install && \ - - printf "\n\n----------> FIXING INOTIFY WATCHES <------------\n\n" && \ - #https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers - printf "fs.inotify.max_user_watches=524288\n" >> /etc/sysctl.conf && \ - - printf "\n\n----------> ADDING LOCALE <------------\n\n" && \ - echo "en_GB.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen en_GB.UTF-8 && \ - dpkg-reconfigure locales && \ - - printf "\n\n----------> ADDING A USER <------------\n\n" && \ - useradd -m -u ${CONTAINER_UID} -s /usr/bin/zsh ${CONTAINER_USER} && \ - - printf "\n\n----------> INSTALLING CUSTOM CERTIFICATES <------------\n\n" && \ - cd ${ROOT_CA_DIR} && \ - ./setup-root-certificate.sh "${ROOT_CA_KEY}" "${ROOT_CA_PEM}" "${ROOT_CA_NAME}" && \ - ./add-proxy-certificate.sh "${PROXY_CA_PEM}" && \ - - printf "\n\n----------> INSTALLING GRADLE <------------\n\n" && \ - curl -o gradle.zip -fsSL https://services.gradle.org/distributions/gradle-"${GRADLE_VERSION}"-bin.zip && \ - unzip -d /opt/gradle gradle.zip && \ - rm -f gradle.zip && \ - gradle --version && \ - - printf "\n\n----------> INSTALLING OH MY ZSH <------------\n\n" && \ - bash -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" && \ - chsh -s /usr/bin/zsh && \ - cp -R /root/.oh-my-zsh /home/"${CONTAINER_USER}" && \ - cp /root/.zsh* /home/"${CONTAINER_USER}" && \ - sed -i "s/\/root/\/home\/${CONTAINER_USER}/g" /home/"${CONTAINER_USER}"/.zshrc && \ - chown -R "${CONTAINER_USER}":"${CONTAINER_USER}" /home/"${CONTAINER_USER}" && \ - - printf "\n\n----------> CLEANUP <------------\n\n" && \ - rm -rvf /var/lib/apt/lists/* - -ENV LANG=en_GB.UTF-8 \ - LANGUAGE=en_GB:en \ - LC_ALL=en_GB.UTF-8 - -USER ${CONTAINER_USER} - -RUN pip3 install \ - pyjwt \ - docopt - -# pip install will put the executables under ~/.local/bin -ENV PATH=/home/"${CONTAINER_USER}"/.local/bin:$PATH - -WORKDIR /home/${CONTAINER_USER}/workspace - -CMD ["zsh"] diff --git a/docker/setup/adb-setup-certificate.sh b/docker/setup/adb-setup-certificate.sh deleted file mode 100755 index 2b87a9b..0000000 --- a/docker/setup/adb-setup-certificate.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# https://stackoverflow.com/a/48814971/6454622 - -set -eu - -CA_PEM=${1?Missing certificate file name} - -cert_name=$(openssl x509 -inform PEM -subject_hash_old -in ${CA_PEM} | head -1) -cat ${CA_PEM} > $cert_name -openssl x509 -inform PEM -text -in ${CA_PEM} -out nul >> $cert_name - -adb shell mount -o rw,remount,rw /system -adb push $cert_name /system/etc/security/cacerts/ -adb shell mount -o ro,remount,ro /system diff --git a/docker/setup/add-certificate-to-browser.sh b/docker/setup/add-certificate-to-browser.sh deleted file mode 100755 index cce7176..0000000 --- a/docker/setup/add-certificate-to-browser.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -set -eu - -### -# https://thomas-leister.de/en/how-to-import-ca-root-certificate/ -### - - -### Script installs root.cert.pem to certificate trust store of applications using NSS -### (e.g. Firefox, Thunderbird, Chromium) -### Mozilla uses cert8, Chromium and Chrome use cert9 - -### -### Requirement: apt install libnss3-tools -### - -CA_PEM="${1?Missing file path for the PEM certificate}" -CA_NAME="${2?Missing Certificate Name}" -BROWSER_CONFIG_DIR="${3:-/home/node}" - -printf "\n>>> ADDING CERTIFICATE TO BROWSERS TRUSTED STORE <<<\n" - -if [ -f "${CA_PEM}" ] - then - printf "\n--> CERTIFICATE FILE: ${CA_PEM}\n" - printf "\n--> CERTIFICATE NAME: ${CA_NAME}\n" - printf "\n--> BROWSER CONFIG DIR: ${BROWSER_CONFIG_DIR}\n" - - ### - ### For cert8 (legacy - DBM) - ### - for certDB in $(find ${BROWSER_CONFIG_DIR} -name "cert8.db") - do - certdir=$(dirname ${certDB}); - certutil -A -n "${CA_NAME}" -t "TCu,Cu,Tu" -i ${CA_PEM} -d dbm:${certdir} - done - - ### - ### For cert9 (SQL) - ### - for certDB in $(find ${BROWSER_CONFIG_DIR} -name "cert9.db") - do - certdir=$(dirname ${certDB}); - certutil -A -n "${CA_NAME}" -t "TCu,Cu,Tu" -i ${CA_PEM} -d sql:${certdir} - done - else - printf "\n>>> CERTIFICATE FILE NOT FOUND FOR: ${CA_PEM}\n" -fi diff --git a/docker/setup/add-certificate-to-node-server.sh b/docker/setup/add-certificate-to-node-server.sh deleted file mode 100755 index 6d84496..0000000 --- a/docker/setup/add-certificate-to-node-server.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -eu - -CA_PEM_FILE="${1?Missing name for certificate file}" -CA_EXTENSION="${CA_PEM_FILE##*.}" - -if [ "${CA_EXTENSION}" != "pem" ] - then - printf "\nFATAL ERROR: Certificate must use .pem extension\n\n" - exit 1 -fi - -if [ -f "${CA_PEM_FILE}" ] - then - printf "\n>>> ADDING A CERTIFICATE TO NODE SERVER <<<\n" - - # Add certificate to node, so that we can use npm install - printf "cafile=${CA_PEM_FILE}" >> /root/.npmrc - printf "cafile=${CA_PEM_FILE}" >> /home/${CONTAINER_USER}/.npmrc; - - printf "\n >>> CERTICATE ADDED SUCCESEFULY<<<\n" - - else - printf "\n >>> NO CERTIFICATE TO ADD <<<\n" -fi - diff --git a/docker/setup/add-proxy-certificate.sh b/docker/setup/add-proxy-certificate.sh deleted file mode 100755 index f102483..0000000 --- a/docker/setup/add-proxy-certificate.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -eu - -PROXY_CA_PEM="${1?Missing name for Proxy CRT file}" - -if [ -f "${PROXY_CA_PEM}" ] - then - printf "\n>>> ADDING A PROXY CERTIFICATE TO THE TRUSTED STORE <<<\n" - - # add certificate tpo the trust store - cp -v ${PROXY_CA_PEM} /usr/local/share/ca-certificates - update-ca-certificates - - # verifies the certificate - openssl x509 -in ${PROXY_CA_PEM} -text -noout > "${PROXY_CA_PEM}.txt" - - else - printf "\n >>> FATAL ERROR: Certificate not found in path ${PROXY_CA_PEM} <<<\n" -fi diff --git a/docker/setup/certificates/.gitignore b/docker/setup/certificates/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/docker/setup/certificates/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/docker/setup/create-domain-certificate.sh b/docker/setup/create-domain-certificate.sh deleted file mode 100755 index cd42c42..0000000 --- a/docker/setup/create-domain-certificate.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -set -eu - -### -# inspired https://fabianlee.org/2018/02/17/ubuntu-creating-a-trusted-ca-and-san-certificate-using-openssl-on-ubuntu/ -### - - -DOMAIN="${1:-example.com}" -ROOT_CA_KEY="${2?Missing Name for root certificate KEY file}" -ROOT_CA_PEM="${3?Missing Name for root certificate PEM file}" - -DOMAIN_CA_KEY="${DOMAIN}.key" -DOMAIN_CA_CSR="${DOMAIN}.csr" -DOMAIN_CA_CRT="${DOMAIN}.crt" -DOMAIN_CA_TXT="${DOMAIN}.txt" -CONFIG_FILE="${DOMAIN}.cnf" - - -printf "\n>>> MERGINGING CONFIGURATION FROM ${DOMAIN_CA_TXT} INTO ${CONFIG_FILE} <<<\n" -cat openssl.cnf ${DOMAIN_CA_TXT} > ${CONFIG_FILE} - - -printf "\n>>> GENERATING KEY FOR DOMAIN CERTIFICATE: ${DOMAIN_CA_KEY} <<<\n" - -# generate the private/public RSA key pair for the domain -openssl genrsa -out ${DOMAIN_CA_KEY} 4096 - -printf "\n>>> GENERATING CSR FOR DOMAIN CERTIFICATE: ${DOMAIN_CA_CSR} <<<\n" - -# create the server certificate signing request: -openssl req \ - -subj "/CN=${DOMAIN}" \ - -extensions v3_req \ - -sha256 \ - -new \ - -key ${DOMAIN_CA_KEY} \ - -out ${DOMAIN_CA_CSR} - -printf "\n>>> GENERATING CRT FOR DOMAIN CERTIFICATE: ${DOMAIN_CA_CRT} <<<\n" - -# generate the server certificate using the: server signing request, the CA signing key, and CA cert. -openssl x509 \ - -req \ - -extensions v3_req \ - -days 3650 \ - -sha256 \ - -in ${DOMAIN_CA_CSR} \ - -CA ${ROOT_CA_PEM} \ - -CAkey ${ROOT_CA_KEY} \ - -CAcreateserial \ - -out ${DOMAIN_CA_CRT} \ - -extfile ${CONFIG_FILE} - -# verifies the certificate -openssl x509 -in ${DOMAIN_CA_CRT} -text -noout > ${DOMAIN}.txt - -printf "\n >>> CERTIFICATE CREATED FOR DOMAIN: ${DOMAIN} <<<\n" diff --git a/docker/setup/localhost.txt b/docker/setup/localhost.txt deleted file mode 100644 index 9ffb34d..0000000 --- a/docker/setup/localhost.txt +++ /dev/null @@ -1,15 +0,0 @@ -[ v3_req ] - -# Extensions to add to a certificate request - -basicConstraints = CA:FALSE -keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -#extendedKeyUsage=serverAuth -subjectAltName = @alt_names - - -[ alt_names ] - -DNS.1 = localhost -DNS.2 = *.localhost diff --git a/docker/setup/openssl.cnf b/docker/setup/openssl.cnf deleted file mode 100644 index a25e990..0000000 --- a/docker/setup/openssl.cnf +++ /dev/null @@ -1,353 +0,0 @@ -# -# OpenSSL example configuration file. -# This is mostly being used for generation of certificate requests. -# - -# This definition stops the following lines choking if HOME isn't -# defined. -HOME = . -RANDFILE = $ENV::HOME/.rnd - -# Extra OBJECT IDENTIFIER info: -#oid_file = $ENV::HOME/.oid -oid_section = new_oids - -# To use this configuration file with the "-extfile" option of the -# "openssl x509" utility, name here the section containing the -# X.509v3 extensions to use: -# extensions = -# (Alternatively, use a configuration file that has only -# X.509v3 extensions in its main [= default] section.) - -[ new_oids ] - -# We can add new OIDs in here for use by 'ca', 'req' and 'ts'. -# Add a simple OID like this: -# testoid1=1.2.3.4 -# Or use config file substitution like this: -# testoid2=${testoid1}.5.6 - -# Policies used by the TSA examples. -tsa_policy1 = 1.2.3.4.1 -tsa_policy2 = 1.2.3.4.5.6 -tsa_policy3 = 1.2.3.4.5.7 - -#################################################################### -[ ca ] -default_ca = CA_default # The default ca section - -#################################################################### -[ CA_default ] - -dir = ./demoCA # Where everything is kept -certs = $dir/certs # Where the issued certs are kept -crl_dir = $dir/crl # Where the issued crl are kept -database = $dir/index.txt # database index file. -#unique_subject = no # Set to 'no' to allow creation of - # several certs with same subject. -new_certs_dir = $dir/newcerts # default place for new certs. - -certificate = $dir/cacert.pem # The CA certificate -serial = $dir/serial # The current serial number -crlnumber = $dir/crlnumber # the current crl number - # must be commented out to leave a V1 CRL -crl = $dir/crl.pem # The current CRL -private_key = $dir/private/cakey.pem# The private key -RANDFILE = $dir/private/.rand # private random number file - -x509_extensions = usr_cert # The extensions to add to the cert - -# Comment out the following two lines for the "traditional" -# (and highly broken) format. -name_opt = ca_default # Subject Name options -cert_opt = ca_default # Certificate field options - -# Extension copying option: use with caution. -# copy_extensions = copy - -# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs -# so this is commented out by default to leave a V1 CRL. -# crlnumber must also be commented out to leave a V1 CRL. -# crl_extensions = crl_ext - -default_days = 365 # how long to certify for -default_crl_days= 30 # how long before next CRL -default_md = default # use public key default MD -preserve = no # keep passed DN ordering - -# A few difference way of specifying how similar the request should look -# For type CA, the listed attributes must be the same, and the optional -# and supplied fields are just that :-) -policy = policy_match - -# For the CA policy -[ policy_match ] -countryName = match -stateOrProvinceName = match -organizationName = match -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -# For the 'anything' policy -# At this point in time, you must list all acceptable 'object' -# types. -[ policy_anything ] -countryName = optional -stateOrProvinceName = optional -localityName = optional -organizationName = optional -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -#################################################################### -[ req ] -default_bits = 2048 -default_keyfile = privkey.pem -distinguished_name = req_distinguished_name -attributes = req_attributes -x509_extensions = v3_ca # The extensions to add to the self signed cert - -# Passwords for private keys if not present they will be prompted for -# input_password = secret -# output_password = secret - -# This sets a mask for permitted string types. There are several options. -# default: PrintableString, T61String, BMPString. -# pkix : PrintableString, BMPString (PKIX recommendation before 2004) -# utf8only: only UTF8Strings (PKIX recommendation after 2004). -# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). -# MASK:XXXX a literal mask value. -# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. -string_mask = utf8only - -req_extensions = v3_req # The extensions to add to a certificate request - -[ req_distinguished_name ] -countryName = Country Name (2 letter code) -countryName_default = AU -countryName_min = 2 -countryName_max = 2 - -stateOrProvinceName = State or Province Name (full name) -stateOrProvinceName_default = Some-State - -localityName = Locality Name (eg, city) - -0.organizationName = Organization Name (eg, company) -0.organizationName_default = Internet Widgits Pty Ltd - -# we can do this but it is not needed normally :-) -#1.organizationName = Second Organization Name (eg, company) -#1.organizationName_default = World Wide Web Pty Ltd - -organizationalUnitName = Organizational Unit Name (eg, section) -#organizationalUnitName_default = - -commonName = Common Name (e.g. server FQDN or YOUR name) -commonName_max = 64 - -emailAddress = Email Address -emailAddress_max = 64 - -# SET-ex3 = SET extension number 3 - -[ req_attributes ] -challengePassword = A challenge password -challengePassword_min = 4 -challengePassword_max = 20 - -unstructuredName = An optional company name - -[ usr_cert ] - -# These extensions are added when 'ca' signs a request. - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This is required for TSA certificates. -# extendedKeyUsage = critical,timeStamping - -[ v3_req ] - -# Extensions to add to a certificate request - -basicConstraints = CA:FALSE -keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -#extendedKeyUsage=serverAuth -#subjectAltName = @alt_names - - -[ v3_ca ] - - -# Extensions for a typical CA - - -# PKIX recommendation. - -subjectKeyIdentifier=hash - -authorityKeyIdentifier=keyid:always,issuer - -#basicConstraints = critical,CA:true -basicConstraints = critical, CA:TRUE, pathlen:3 - - -# Key usage: this is typical for a CA certificate. However since it will -# prevent it being used as an test self-signed certificate it is best -# left out by default. -# keyUsage = cRLSign, keyCertSign -keyUsage = critical, cRLSign, keyCertSign - -# Some might want this also -nsCertType = sslCA, emailCA - -# Include email address in subject alt name: another PKIX recommendation -# subjectAltName=email:copy -# Copy issuer details -# issuerAltName=issuer:copy - -# DER hex encoding of an extension: beware experts only! -# obj=DER:02:03 -# Where 'obj' is a standard or added object -# You can even override a supported extension: -# basicConstraints= critical, DER:30:03:01:01:FF - -[ crl_ext ] - -# CRL extensions. -# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. - -# issuerAltName=issuer:copy -authorityKeyIdentifier=keyid:always - -[ proxy_cert_ext ] -# These extensions should be added when creating a proxy certificate - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This really needs to be in place for it to be a proxy certificate. -proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo - -#################################################################### -[ tsa ] - -default_tsa = tsa_config1 # the default TSA section - -[ tsa_config1 ] - -# These are used by the TSA reply generation only. -dir = ./demoCA # TSA root directory -serial = $dir/tsaserial # The current serial number (mandatory) -crypto_device = builtin # OpenSSL engine to use for signing -signer_cert = $dir/tsacert.pem # The TSA signing certificate - # (optional) -certs = $dir/cacert.pem # Certificate chain to include in reply - # (optional) -signer_key = $dir/private/tsakey.pem # The TSA private key (optional) -signer_digest = sha256 # Signing digest to use. (Optional) -default_policy = tsa_policy1 # Policy if request did not specify it - # (optional) -other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) -digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) -accuracy = secs:1, millisecs:500, microsecs:100 # (optional) -clock_precision_digits = 0 # number of digits after dot. (optional) -ordering = yes # Is ordering defined for timestamps? - # (optional, default: no) -tsa_name = yes # Must the TSA name be included in the reply? - # (optional, default: no) -ess_cert_id_chain = no # Must the ESS cert id chain be included? - # (optional, default: no) diff --git a/docker/setup/setup-root-certificate.sh b/docker/setup/setup-root-certificate.sh deleted file mode 100755 index db1a30c..0000000 --- a/docker/setup/setup-root-certificate.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash - -set -eu - -### -# inspired https://fabianlee.org/2018/02/17/ubuntu-creating-a-trusted-ca-and-san-certificate-using-openssl-on-ubuntu/ -### - - -ROOT_CA_KEY="${1?Missing Name for root certificate KEY file}" -ROOT_CA_PEM="${2?Missing Name for root certificate PEM file}" -ROOT_CA_NAME="${3?Missing Certificate Name}" -CONFIG_FILE="${4:-openssl.cnf}" - -if [ ! -f ROOT_CA_PEM ] - then - printf "\n>>> CREATING A ROOT CERTIFICATE <<<\n" - - openssl req \ - -new \ - -newkey rsa:4096 \ - -days 3650 \ - -nodes \ - -x509 \ - -extensions v3_ca \ - -subj "/C=US/ST=CA/L=SF/O=${ROOT_CA_NAME}/CN=${ROOT_CA_NAME}" \ - -keyout ${ROOT_CA_KEY} \ - -out ${ROOT_CA_PEM} \ - -config ${CONFIG_FILE} - - printf "\n>>> ADDING ROOT CERTIFICATE TO THE TRUSTED STORE <<<\n" - - # add certificate to the trust store - cp ${ROOT_CA_PEM} /usr/local/share/ca-certificates/self-signed-root-ca.crt - update-ca-certificates - - # verifies the certificate - openssl x509 -in ${ROOT_CA_PEM} -text -noout > "${ROOT_CA_NAME}.txt" - - printf "\n >>> ROOT CERTICATE CREATED SUCCESEFULY<<<\n" - - else - printf "\n >>> ROOT CERTICATE ALREADY EXISTS <<<\n" -fi diff --git a/docs/APPROOV_TOKEN_BINDING_QUICKSTART.md b/docs/APPROOV_TOKEN_BINDING_QUICKSTART.md deleted file mode 100644 index 3564287..0000000 --- a/docs/APPROOV_TOKEN_BINDING_QUICKSTART.md +++ /dev/null @@ -1,313 +0,0 @@ -# Approov Token Binding Quickstart - -This quickstart is for developers familiar with Java who are looking for a quick intro into how they can add [Approov](https://approov.io) into an existing project. Therefore this will guide you through the necessary steps for adding Approov with token binding to an existing Java Spring API server. - -## TOC - Table of Contents - -* [Why?](#why) -* [How it Works?](#how-it-works) -* [Requirements](#requirements) -* [Approov Setup](#approov-setup) -* [Approov Token Check](#approov-token-binding-check) -* [Try the Approov Integration Example](#try-the-approov-integration-example) - - -## Why? - -To lock down your API server to your mobile app. Please read the brief summary in the [Approov Overview](/OVERVIEW.md#why) at the root of this repo or visit our [website](https://approov.io/product) for more details. - -[TOC](#toc---table-of-contents) - - -## How it works? - -For more background, see the [Approov Overview](/OVERVIEW.md#how-it-works) at the root of this repo. - -The main functionality for the Approov token check is in the file [ApproovAuthentication.java](/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java). Take a look at the `verifyApproovToken()` function to see the simple code for the check. - -The Approov token binding check can be found in the file [ApproovTokenBindingAuthentication.java](/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java). Take a look at the `verifyApproovTokenBinding()` function to see the simple code for the check. - -[TOC](#toc---table-of-contents) - - -## Requirements - -To complete this quickstart you will need both Java, Java Spring, and the Approov CLI tool installed. - -* [OpenJDK](https://openjdk.java.net/install/) -* [Java Spring](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing) -* [Approov CLI](https://approov.io/docs/latest/approov-installation/#approov-tool) - Learn how to use it [here](https://approov.io/docs/latest/approov-cli-tool-reference/) - -[TOC](#toc---table-of-contents) - - -## Approov Setup - -To use Approov with the Java Spring API server we need a small amount of configuration. First, Approov needs to know the API domain that will be protected. Second, the Java Spring API server needs the Approov Base64 encoded secret that will be used to verify the tokens generated by the Approov cloud service. - -### Configure API Domain - -Approov needs to know the domain name of the API for which it will issue tokens. - -Add it with: - -```bash -approov api -add your.api.domain.com -``` - -> **NOTE:** By default a symmetric key (HS256) is used to sign the Approov token on a valid attestation of the mobile app for each API domain it's added with the Approov CLI, so that all APIs will share the same secret and the backend needs to take care to keep this secret secure. -> -> A more secure alternative is to use asymmetric keys (RS256 or others) that allows for a different keyset to be used on each API domain and for the Approov token to be verified with a public key that can only verify, but not sign, Approov tokens. -> -> To implement the asymmetric key you need to change from using the symmetric HS256 algorithm to an asymmetric algorithm, for example RS256, that requires you to first [add a new key](https://approov.io/docs/latest/approov-usage-documentation/#adding-a-new-key), and then specify it when [adding each API domain](https://approov.io/docs/latest/approov-usage-documentation/#keyset-key-api-addition). Please visit [Managing Key Sets](https://approov.io/docs/latest/approov-usage-documentation/#managing-key-sets) on the Approov documentation for more details. - -Adding the API domain also configures the [dynamic certificate pinning](https://approov.io/docs/latest/approov-usage-documentation/#dynamic-pinning) setup, out of the box. - -> **NOTE:** By default the pin is extracted from the public key of the leaf certificate served by the domain, as visible to the box issuing the Approov CLI command and the Approov servers. - -### Approov Secret - -Approov tokens are signed with a symmetric secret. To verify tokens, we need to grab the secret using the [Approov secret command](https://approov.io/docs/latest/approov-cli-tool-reference/#secret-command) and plug it into the Java Spring API server environment to check the signatures of the [Approov Tokens](https://www.approov.io/docs/latest/approov-usage-documentation/#approov-tokens) that it processes. - -First, enable your Approov `admin` role with: - -```bash -eval `approov role admin` -```` - -For the Windows powershell: - -```bash -set APPROOV_ROLE=admin:___YOUR_APPROOV_ACCOUNT_NAME_HERE___ -```` - -Next, retrieve the Approov secret with: - -```bash -approov secret -get base64 -``` - -#### Set the Approov Secret - -Open the `.env` file and add the Approov secret to the var: - -```text -APPROOV_BASE64_SECRET=approov_base64_secret_here -``` - -[TOC](#toc---table-of-contents) - - -## Approov Token Check - -To check the Approov token we will use the [jwtk/jjwt](https://github.com/jwtk/jjwt) package. - -Add to your `build.gradle` dependencies: - -```gradle -dependencies { - - // omitted.. - - implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2' - runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2', - 'io.jsonwebtoken:jjwt-jackson:0.11.2' -} -``` - -### The Approov Package - -From this repo add the package `com.criticalblue.approov.jwt.authentication` to your current project by copying the entire [authentication](/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication) folder into your project. - -Next, use it from the class in your project that extends the `WebSecurityConfigurerAdapter`. For example: - -```java -package com.yourcompany.projectname; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - // @IMPORTANT Approov token check must be at Order 1. Any other type of - // Authentication (User, API Key, etc.) for the request should go - // after this one with @Order(2). - @Order(1) - public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - // @APPROOV The Approov Token check is triggered here. - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - // @APPROOV The Approov Token check is configured here. - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig)) - .and() - .exceptionHandling() - // @APPROOV The Approov Token check is done here - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - // @APPROOV This matcher will require the Approov token for - // all API endpoints. - .antMatcher("/") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/**").authenticated(); - } - } -} -``` - -> **NOTE:** When the Approov token validation fails we return a `401` with an empty body, because we don't want to give clues to an attacker about the reason the request failed, and you can go even further by returning a `400`. - -A full working example for a simple Hello World server can be found at [/servers/hello/src/approov-protected-server/token-binding-check](/servers/hello/src/approov-protected-server/token-binding-check). - -To see the code difference between the token check and the token binding check on the Hello servers use the git diff command from the root of this repo: - -```bash -git diff --no-index ./servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/ ./servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/ -``` - -[TOC](#toc---table-of-contents) - - -## Test your Approov Integration - -The following examples below use cURL, but you can also use the [Postman Collection](/README.md#testing-with-postman) to make the API requests. Just remember that you need to adjust the urls and tokens defined in the collection to match your deployment. Alternatively, the above README also contains instructions for using the preset _dummy_ secret to test your Approov integration. - -#### With Valid Approov Tokens - -Generate a valid token example from the Approov Cloud service: - -``` -approov token -setDataHashInToken 'Bearer authorizationtoken' -genExample your.api.domain.com -``` - -Then make the request with the generated token: - -```text -curl -i --request GET 'https://your.api.domain.com/v1/shapes' \ - --header 'Authorization: Bearer authorizationtoken' \ - --header 'Approov-Token: APPROOV_TOKEN_EXAMPLE_HERE' -``` - -The request should be accepted. For example: - -```text -HTTP/1.1 200 OK - -... - -{"message": "Hello, World!"} -``` - -#### With Invalid Approov Tokens - -##### No Authorization Token - -Let's just remove the Authorization header from the request: - -```text -curl -i --request GET 'https://your.api.domain.com/v1/shapes' \ - --header 'Approov-Token: APPROOV_TOKEN_EXAMPLE_HERE' -``` - -The above request should fail with an Unauthorized error. For example: - -```text -HTTP/1.1 401 Unauthorized - -... - -{} -``` - -##### Same Approov Token with a Different Authorization Token - -Make the request with the same generated token, but with another random authorization token: - -``` -curl -i --request GET 'https://your.api.domain.com/v1/shapes' \ - --header 'Authorization: Bearer anotherauthorizationtoken' \ - --header 'Approov-Token: APPROOV_TOKEN_EXAMPLE_HERE' -``` - -The above request should also fail with an Unauthorized error. For example: - -```text -HTTP/1.1 401 Unauthorized - -... - -{} -``` - -[TOC](#toc---table-of-contents) - - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - -[TOC](#toc---table-of-contents) - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) - -[TOC](#toc---table-of-contents) diff --git a/docs/APPROOV_TOKEN_QUICKSTART.md b/docs/APPROOV_TOKEN_QUICKSTART.md deleted file mode 100644 index 79eb163..0000000 --- a/docs/APPROOV_TOKEN_QUICKSTART.md +++ /dev/null @@ -1,297 +0,0 @@ -# Approov Token Quickstart - -This quickstart is for developers familiar with Java who are looking for a quick intro into how they can add [Approov](https://approov.io) into an existing project. Therefore this will guide you through the necessary steps for adding Approov to an existing Java Spring API server. - -## TOC - Table of Contents - -* [Why?](#why) -* [How it Works?](#how-it-works) -* [Requirements](#requirements) -* [Approov Setup](#approov-setup) -* [Approov Token Check](#approov-token-check) -* [Try the Approov Integration Example](#try-the-approov-integration-example) - - -## Why? - -To lock down your API server to your mobile app. Please read the brief summary in the [Approov Overview](/OVERVIEW.md#why) at the root of this repo or visit our [website](https://approov.io/product) for more details. - -[TOC](#toc---table-of-contents) - - -## How it works? - -For more background, see the [Approov Overview](/OVERVIEW.md#how-it-works) at the root of this repo. - -The main functionality for the Approov token check is in the file [ApproovAuthentication.java](/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java). Take a look at the `verifyApproovToken()` function to see the simple code for the check. - -[TOC](#toc---table-of-contents) - - -## Requirements - -To complete this quickstart you will need both Java, Java Spring, and the Approov CLI tool installed. - -* [OpenJDK](https://openjdk.java.net/install/) -* [Java Spring](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing) -* [Approov CLI](https://approov.io/docs/latest/approov-installation/#approov-tool) - Learn how to use it [here](https://approov.io/docs/latest/approov-cli-tool-reference/) - -[TOC](#toc---table-of-contents) - - -## Approov Setup - -To use Approov with the Java Spring API server we need a small amount of configuration. First, Approov needs to know the API domain that will be protected. Second, the Java Spring API server needs the Approov Base64 encoded secret that will be used to verify the tokens generated by the Approov cloud service. - -### Configure API Domain - -Approov needs to know the domain name of the API for which it will issue tokens. - -Add it with: - -```bash -approov api -add your.api.domain.com -``` - -> **NOTE:** By default a symmetric key (HS256) is used to sign the Approov token on a valid attestation of the mobile app for each API domain it's added with the Approov CLI, so that all APIs will share the same secret and the backend needs to take care to keep this secret secure. -> -> A more secure alternative is to use asymmetric keys (RS256 or others) that allows for a different keyset to be used on each API domain and for the Approov token to be verified with a public key that can only verify, but not sign, Approov tokens. -> -> To implement the asymmetric key you need to change from using the symmetric HS256 algorithm to an asymmetric algorithm, for example RS256, that requires you to first [add a new key](https://approov.io/docs/latest/approov-usage-documentation/#adding-a-new-key), and then specify it when [adding each API domain](https://approov.io/docs/latest/approov-usage-documentation/#keyset-key-api-addition). Please visit [Managing Key Sets](https://approov.io/docs/latest/approov-usage-documentation/#managing-key-sets) on the Approov documentation for more details. - -Adding the API domain also configures the [dynamic certificate pinning](https://approov.io/docs/latest/approov-usage-documentation/#dynamic-pinning) setup, out of the box. - -> **NOTE:** By default the pin is extracted from the public key of the leaf certificate served by the domain, as visible to the box issuing the Approov CLI command and the Approov servers. - -### Approov Secret - -Approov tokens are signed with a symmetric secret. To verify tokens, we need to grab the secret using the [Approov secret command](https://approov.io/docs/latest/approov-cli-tool-reference/#secret-command) and plug it into the Java Spring API server environment to check the signatures of the [Approov Tokens](https://www.approov.io/docs/latest/approov-usage-documentation/#approov-tokens) that it processes. - -First, enable your Approov `admin` role with: - -```bash -eval `approov role admin` -```` - -For the Windows powershell: - -```bash -set APPROOV_ROLE=admin:___YOUR_APPROOV_ACCOUNT_NAME_HERE___ -```` - -Next, retrieve the Approov secret with: - -```bash -approov secret -get base64 -``` - -#### Set the Approov Secret - -Open the `.env` file and add the Approov secret to the var: - -```text -APPROOV_BASE64_SECRET=approov_base64_secret_here -``` - -[TOC](#toc---table-of-contents) - - -## Approov Token Check - -To perform the token check in your project you will need to add the Approov and Jwt packages. - -### The JWT Package - -To check the Approov token we will use the [jwtk/jjwt](https://github.com/jwtk/jjwt) package. - -Add to your `build.gradle` dependencies: - -```gradle -dependencies { - - // omitted.. - - implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2' - runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2', - 'io.jsonwebtoken:jjwt-jackson:0.11.2' -} -``` - -### The Approov Package - -From this repo add the package `com.criticalblue.approov.jwt.authentication` to your current project by copying the entire [authentication](/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication) folder into your project. - -Next, use it from the class in your project that extends the `WebSecurityConfigurerAdapter`. For example: - -```java -package com.yourcompany.projectname; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - // @IMPORTANT Approov token check must be at Order 1. Any other type of - // Authentication (User, API Key, etc.) for the request should go - // after with @Order(2) - @Order(1) - public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - // @APPROOV The Approov Token check is triggered here. - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - // @APPROOV The Approov Token check is configured here. - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig)) - .and() - .exceptionHandling() - // @APPROOV The Approov Token check is done here - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - // @APPROOV This matcher will require the Approov token for - // all API endpoints. - .antMatcher("/") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/**").authenticated(); - } - } -} -``` - -> **NOTE:** When the Approov token validation fails we return a `401` with an empty body, because we don't want to give clues to an attacker about the reason the request failed, and you can go even further by returning a `400`. - -A full working example for a simple Hello World server can be found at [/servers/hello/src/approov-protected-server/token-check](/servers/hello/src/approov-protected-server/token-check). - -To see the code difference between the token check and no token check on the Hello servers use the git diff command from the root of this repo: - -```bash -git diff --no-index ./servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/ ./servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/ -``` - -[TOC](#toc---table-of-contents) - - -## Test your Approov Integration - -The following examples below use cURL, but you can also use the [Postman Collection](/README.md#testing-with-postman) to make the API requests. Just remember that you need to adjust the urls and tokens defined in the collection to match your deployment. Alternatively, the above README also contains instructions for using the preset _dummy_ secret to test your Approov integration. - -#### With Valid Approov Tokens - -Generate a valid token example from the Approov Cloud service: - -```text -approov token -genExample your.api.domain.com -``` - -Then make the request with the generated token: - -```text -curl -i --request GET 'https://your.api.domain.com' \ - --header 'Approov-Token: APPROOV_TOKEN_EXAMPLE_HERE' -``` - -The request should be accepted. For example: - -```text -HTTP/1.1 200 OK - -... - -{"message": "Hello, World!"} -``` - -#### With Invalid Approov Tokens - -Generate an invalid token example from the Approov Cloud service: - -```text -approov token -type invalid -genExample your.api.domain.com -``` - -Then make the request with the generated token: - -```text -curl -i --request GET 'https://your.api.domain.com' \ - --header 'Approov-Token: APPROOV_INVALID_TOKEN_EXAMPLE_HERE' -``` - -The above request should fail with an Unauthorized error. For example: - -```text -HTTP/1.1 401 Unauthorized - -... -{} -``` - -[TOC](#toc---table-of-contents) - - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - -[TOC](#toc---table-of-contents) - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) - -[TOC](#toc---table-of-contents) diff --git a/ex-test.sh b/ex-test.sh new file mode 100644 index 0000000..9878382 --- /dev/null +++ b/ex-test.sh @@ -0,0 +1,770 @@ +#!/bin/bash +set -o errexit +set -o nounset +set -o pipefail +set -o errtrace + +####################################### +# Approov demo API test harness. +# +# Description: +# Calls unprotected and protected endpoints of the Approov demo API, +# validates HTTP status codes and logs complete HTTP exchanges +# (request + response) to a timestamped log file. +# +# Dependencies: +# - bash +# - curl +# - approov CLI available on PATH and configured +# +# Environment: +# BASE_URL: +# Base URL of the API under test. +# Default: http://localhost:8080 +# +# TOKDIR: +# Directory where temporary token files are stored. +# Default: .config +# +# Tests: +# 0 - Unprotected request (no Approov protection): Access unprotected endpoint. +# 1.1 - Token check (valid token): Valid Approov token. +# 1.2 - Token check (invalid token): Invalid Approov token. +# 2.1 - Single binding (valid token + header): Valid token and correct Authorization header. +# 2.2 - Single binding (missing Authorization header): Valid token, missing Authorization. +# 2.3 - Single binding (incorrect Authorization header): Valid token, wrong Authorization. +# 2.4 - Single binding (invalid token): Invalid token, correct Authorization. +# 3.1 - Double binding (valid token + headers): Valid token, both binding headers. +# 3.2 - Double binding (missing binding headers): Valid token, missing both headers. +# 3.3 - Double binding (incorrect binding headers): Valid token, wrong headers. +# 3.4 - Double binding (invalid token): Invalid token, correct headers. +# 4.1 - token-check (no Approov header): Protected endpoint, no Approov header. +# 4.1 - token-binding (no Approov header): Protected endpoint, no Approov header. +# 4.1 - token-double-binding (no Approov header): Protected endpoint, no Approov header. +# 4.2 - unprotected (valid token only): Unprotected endpoint, valid token only. +# 4.2 - token-check (valid token only): Protected endpoint, valid token only. +# 4.2 - token-binding (valid token only): Protected endpoint, valid token only. +# 4.2 - token-double-binding (valid token only): Protected endpoint, valid token only. +# 4.3 - token-binding (valid token + Authorization): Valid single-binding token and Authorization. +# 4.3 - unprotected (valid token + Authorization): Unprotected endpoint, valid token and Authorization. +# 4.3 - token-check (valid token + Authorization): Protected endpoint, valid token and Authorization. +# 4.3 - token-double-binding (valid token + Authorization): Double-binding endpoint, valid token and Authorization. +# 4.4 - token-double-binding (valid token + two bindings): Double-binding endpoint, valid token and both headers. +# 4.4 - unprotected (valid token + two bindings): Unprotected endpoint, valid token and both headers. +# 4.4 - token-check (valid token + two bindings): Protected endpoint, valid token and both headers. +# 4.4 - token-binding (valid token + two bindings): Single-binding endpoint, valid token and both headers. +# 5.1 - Bad token (bad signature): Token with bad signature. +# 5.2 - Bad token (invalid encoding): Token with invalid encoding. +# 5.3 - Bad token (no expiry): Token with no expiry. +# 5.4 - Bad token (no expiry simulated): Simulated token with no expiry. +# 5.5 - Bad token (expired): Explicitly expired token. +# 5.6 - Missing binding with good full token: Double-binding endpoint, valid token and both headers, but token not bound. +# 5.7 - Missing Authorization with valid binding token: Double-binding endpoint, valid token and Content-Digest only. +# 5.8 - Good full token with correct binding: Double-binding endpoint, valid token and correct headers. +# 5.9 - Correct token but wrong binding headers: Double-binding endpoint, valid token and wrong headers. +####################################### + +# Constants. +readonly BASE_URL="${BASE_URL:-http://localhost:8080}" +readonly TOKDIR="${TOKDIR:-.config}" +readonly LOGDIR="${TOKDIR}/logs" +readonly LOGFILE="${LOGDIR}/$(date '+%Y-%m-%d_%H-%M-%S').log" + +# Globals. +# is_approov_disabled: +# Boolean flag indicating if Approov checks appear disabled +# based on /approov-state endpoint. +is_approov_disabled=false + +####################################### +# Print error message to STDERR with timestamp. +# Globals: +# None +# Arguments: +# All arguments are printed as the error message. +# Outputs: +# Writes formatted error message to STDERR. +# Returns: +# 0 +####################################### +err() { + echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2 +} + +####################################### +# Ensure a required command exists on PATH. +# Globals: +# None +# Arguments: +# command name to check. +# Outputs: +# Error message to STDERR if command is missing. +# Returns: +# Exits the script with code 1 if the command is missing. +####################################### +requirement_check() { + local cmd="$1" + + if ! command -v "${cmd}" >/dev/null 2>&1; then + err "Missing required command: ${cmd}" + exit 1 + fi +} + +####################################### +# Generate an Approov token into an output file. +# Globals: +# None +# Arguments: +# $1 - output file path. +# remaining - arguments passed to "approov token". +# Outputs: +# Writes token (if generated) to the output file. +# Returns: +# 0 on success. +# 1 on failure. +####################################### +gen_token() { + local outfile="$1" + shift + + set +o errexit + approov token "$@" >"${outfile}" + local rc=$? + set -o errexit + + if (( rc != 0 )); then + err "Approov CLI failed: approov token $*" + return 1 + fi + + return 0 +} + +####################################### +# Print test result and append full HTTP exchange to a log file. +# Globals: +# LOGFILE +# Arguments: +# $1 - test name. +# $2 - expected HTTP status code. +# $3 - actual HTTP status code. +# $4 - full HTTP response (headers + body). +# Outputs: +# Human-readable result to STDOUT. +# Detailed log entry appended to LOGFILE. +# Returns: +# 0 +####################################### +print_test_result() { + local name="$1" + local expected="$2" + local status="$3" + local resp="$4" + + local result="Failed" + if [[ "${status}" == "${expected}" ]]; then + result="Passed" + fi + + echo "${name}: ${result} (status: ${status}, expected: ${expected})" + + { + echo "Test: ${name}" + echo "Expected status: ${expected}" + echo "Actual status: ${status}" + local enforced_msg + if [[ "${is_approov_disabled}" == true ]]; then + enforced_msg="Approov enforcement: disabled, expecting HTTP 200 on protected endpoints." + else + enforced_msg="Approov enforcement: enabled, token checks performed." + fi + echo "${enforced_msg}" + echo + echo "HTTP exchange:" + echo "${resp}" + echo + } >>"${LOGFILE}" 2>&1 +} + +####################################### +# Compute expected status for protected endpoints. +# +# If Approov is disabled we expect 200 even for invalid/missing +# tokens; otherwise we expect the provided default (e.g. 401). +# Globals: +# is_approov_disabled +# Arguments: +# $1 - default expected status if Approov is enabled. +# Outputs: +# Echoes effective expected status code. +# Returns: +# 0 +####################################### +expected_protected_status() { + local default_status="$1" + + if [[ "${is_approov_disabled}" == true ]]; then + echo "200" + else + echo "${default_status}" + fi +} + +####################################### +# Mark a test as skipped and log the reason. +# Globals: +# LOGFILE +# Arguments: +# $1 - test name. +# $2 - reason for skipping. +# Outputs: +# Skip information to STDOUT and LOGFILE. +# Returns: +# 0 +####################################### +skip_test() { + local name="$1" + local reason="$2" + + echo "${name}: Skipped (${reason})" + + { + echo "Test: ${name}" + echo "Result: SKIPPED" + echo "Reason: ${reason}" + echo + } >>"${LOGFILE}" 2>&1 +} + +####################################### +# Execute a curl call for a test and evaluate the result. +# Globals: +# None +# Arguments: +# $1 - test name. +# $2 - expected HTTP status code. +# remaining - arguments passed to curl. +# Outputs: +# Test result to STDOUT. +# HTTP exchange appended to LOGFILE. +# Returns: +# 0 on success, curl return code on failure. +####################################### +run_test() { + local name="$1" + shift + local expected="$1" + shift + + local resp + local status + local curl_rc + + # -i: include headers; -s: silent + set +o errexit + resp="$(curl -i -s "$@")" + curl_rc=$? + set -o errexit + + if (( curl_rc != 0 )); then + err "curl failed for ${name} (rc=${curl_rc})" + return "${curl_rc}" + fi + + status="$( + echo "${resp}" \ + | grep -m1 HTTP \ + | awk '{print $2}' + )" + + print_test_result "${name}" "${expected}" "${status}" "${resp}" +} + +main() { + requirement_check "approov" + requirement_check "curl" + + mkdir -p "${TOKDIR}" "${LOGDIR}" + + echo "Listing Approov API configuration:" + approov api -list + echo + + echo "Approov state check:" + + local state_response + state_response="$(curl -i -s "${BASE_URL}/approov-state")" + state_http_code="$( + printf '%s\n' "${state_response}" \ + | grep -m1 '^HTTP/' \ + | awk '{print $2}' + )" + if [[ -z "${state_http_code}" || "${state_http_code}" != "200" ]]; then + err "Failed to get Approov state from ${BASE_URL}/approov-state (status=${state_http_code:-unknown})" + exit 1 + fi + + if grep -q '"approovEnabled":true' <<<"${state_response}"; then + echo " Approov service: ENABLED" + is_approov_disabled=false + else + echo " Approov service: DISABLED" + is_approov_disabled=true + fi + echo + + # 0) Unprotected endpoint. + + run_test \ + "0 - Unprotected request (no Approov protection)" \ + 200 \ + "${BASE_URL}/unprotected" + + # 1) Token check (single binding). + # 1.0 Generate valid token for /token-check. + gen_token \ + "${TOKDIR}/approov_token_1_valid" \ + -genExample \ + example.com + + # 1.1 Valid Token. + local expected_status=200 + run_test \ + "1.1 - Token check (valid token)" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_1_valid")" \ + "${BASE_URL}/token-check" + + # 1.2 Invalid Token (signature/type invalid). + gen_token \ + "${TOKDIR}/approov_token_1_invalid" \ + -genExample \ + example.com \ + -type invalid || true + + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + + if [[ -f "${TOKDIR}/approov_token_1_invalid" ]]; then + run_test \ + "1.2 - Token check (invalid token)" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_1_invalid")" \ + "${BASE_URL}/token-check" + else + skip_test \ + "1.2 - Token check (invalid token)" \ + "approov_token_1_invalid missing" + fi + + # 2) Token Binding ["Authorization"]. + local AUTH_VAL="ExampleAuthToken==" + export HASH_INPUT="${AUTH_VAL}" + + # 2.0 Generate valid binding token. + gen_token \ + "${TOKDIR}/approov_token_2_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 2.1 Valid Token + correct Authorization header. + expected_status=200 + run_test \ + "2.1 - Single binding (valid token + header)" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-binding" + + # 2.2 Missing Authorization header. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "2.2 - Single binding (missing Authorization header)" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-binding" + + # 2.3 Incorrect Authorization header. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "2.3 - Single binding (incorrect Authorization header)" \ + "${expected_status}" \ + -H "Authorization: BadAuthToken==" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-binding" + + # 2.4 Invalid binding token. + gen_token \ + "${TOKDIR}/approov_token_2_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid || true + + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + + if [[ -f "${TOKDIR}/approov_token_2_invalid" ]]; then + run_test \ + "2.4 - Single binding (invalid token)" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_invalid")" \ + "${BASE_URL}/token-binding" + else + skip_test \ + "2.4 - Single binding (invalid token)" \ + "approov_token_2_invalid missing" + fi + + # 3) Token Binding ["Authorization", "Content-Digest"]. + local AUTH_VAL2="ExampleAuthToken==" + local CD_VAL="ContentDigest==" + export HASH_INPUT="${AUTH_VAL2}${CD_VAL}" + + # 3.0 Generate valid double-binding token. + gen_token \ + "${TOKDIR}/approov_token_3_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 3.1 Valid token + both binding headers. + expected_status=200 + run_test \ + "3.1 - Double binding (valid token + headers)" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.2 Missing both binding headers. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "3.2 - Double binding (missing binding headers)" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.3 Incorrect binding headers. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "3.3 - Double binding (incorrect binding headers)" \ + "${expected_status}" \ + -H "Authorization: BadAuthToken==" \ + -H "Content-Digest: BadContentDigest==" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.4 Invalid token. + if gen_token \ + "${TOKDIR}/approov_token_3_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid; then + : + else + err "Failed to generate approov_token_3_invalid (continuing tests)" + fi + + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + + if [[ -f "${TOKDIR}/approov_token_3_invalid" ]]; then + run_test \ + "3.4 - Double binding (invalid token)" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_invalid")" \ + "${BASE_URL}/token-double-binding" + else + skip_test \ + "3.4 - Double binding (invalid token)" \ + "approov_token_3_invalid missing" + fi + + # 4) Extreme tests: headers and tokens presence/absence. + # 4.1 Protected endpoints without any Approov header. + local exp_protected + exp_protected="$(expected_protected_status "401")" + + run_test \ + "4.1 - token-check (no Approov header)" \ + "${exp_protected}" \ + "${BASE_URL}/token-check" + + run_test \ + "4.1 - token-binding (no Approov header)" \ + "${exp_protected}" \ + "${BASE_URL}/token-binding" + + run_test \ + "4.1 - token-double-binding (no Approov header)" \ + "${exp_protected}" \ + "${BASE_URL}/token-double-binding" + + # 4.2 Valid token only (no binding headers). + if [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then + run_test \ + "4.2 - unprotected (valid token only)" \ + "200" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ + "${BASE_URL}/unprotected" + + run_test \ + "4.2 - token-check (valid token only)" \ + "200" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ + "${BASE_URL}/token-check" + + run_test \ + "4.2 - token-binding (valid token only)" \ + "${exp_protected}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ + "${BASE_URL}/token-binding" + + run_test \ + "4.2 - token-double-binding (valid token only)" \ + "${exp_protected}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ + "${BASE_URL}/token-double-binding" + else + skip_test \ + "4.2 - valid token only (various endpoints)" \ + "approov_token_1_valid missing" + fi + + # 4.3 Valid single-binding token + Authorization header. + if [[ -f "${TOKDIR}/approov_token_2_valid" ]]; then + run_test \ + "4.3 - token-binding (valid token + Authorization)" \ + "200" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-binding" + + run_test \ + "4.3 - unprotected (valid token + Authorization)" \ + "200" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/unprotected" + + run_test \ + "4.3 - token-check (valid token + Authorization)" \ + "200" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-check" + + run_test \ + "4.3 - token-double-binding (valid token + Authorization)" \ + "${exp_protected}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-double-binding" + else + skip_test \ + "4.3 - binding-1/unprotected/token-check/token-double-binding" \ + "approov_token_2_valid missing" + fi + + # 4.4 Valid double-binding token + two binding headers. + if [[ -f "${TOKDIR}/approov_token_3_valid" ]]; then + run_test \ + "4.4 - token-double-binding (valid token + two bindings)" \ + "200" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + run_test \ + "4.4 - unprotected (valid token + two bindings)" \ + "200" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/unprotected" + + run_test \ + "4.4 - token-check (valid token + two bindings)" \ + "200" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-check" + + run_test \ + "4.4 - token-binding (valid token + two bindings)" \ + "${exp_protected}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-binding" + else + skip_test \ + "4.4 - double-binding scenarios (approov_token_3_valid)" \ + "token file missing" + fi + + # 5) Extreme tests: bad tokens and binding mismatches. + # 5.1 Bad token with bad signature (modified third segment). + if [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then + local good_tok + local bad_sig_tok + + good_tok="$(<"${TOKDIR}/approov_token_1_valid")" + bad_sig_tok="$( + awk -F. \ + '{printf "%s.%s.%s", $1, $2, "bogussignature"}' \ + <<<"${good_tok}" + )" + + run_test \ + "5.1 - Bad token (bad signature)" \ + "$(expected_protected_status "401")" \ + -H "approov-token: ${bad_sig_tok}" \ + "${BASE_URL}/token-check" + else + skip_test \ + "5.1 - Bad token (bad signature)" \ + "approov_token_1_valid missing" + fi + + # 5.2 Bad token with invalid encoding. + local bad_token_invalid_encoding + bad_token_invalid_encoding="eyJ0eXAiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIn0."\ +"eyJleHAiOjE5OTk5OTk5OTksImRpZCI6IkV4YW1wbGVBcHByb292VG9rZW5ESUQ9PSJ9."\ +"NwqfsaOUBfXaf8KxRZovYCy0c6hqy29g88z1LIgzuQY" + + run_test \ + "5.2 - Bad token (invalid encoding)" \ + "$(expected_protected_status "401")" \ + -H "approov-token: ${bad_token_invalid_encoding}" \ + "${BASE_URL}/token-check" + + # 5.3 / 5.4 Bad token with no expiry (real or simulated). + local exp_noexp + exp_noexp="$(expected_protected_status "401")" + + if [[ -n "${BAD_TOKEN_NO_EXPIRY:-}" ]]; then + run_test \ + "5.3 - Bad token (no expiry)" \ + "${exp_noexp}" \ + -H "approov-token: ${BAD_TOKEN_NO_EXPIRY}" \ + "${BASE_URL}/token-check" + elif [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then + local hdr_payload + local noexp_tok + + hdr_payload="$(cut -d. -f1-2 <"${TOKDIR}/approov_token_1_valid")" + noexp_tok="${hdr_payload}.nosig" + + run_test \ + "5.4 - Bad token (no expiry simulated)" \ + "${exp_noexp}" \ + -H "approov-token: ${noexp_tok}" \ + "${BASE_URL}/token-check" + else + skip_test \ + "5.3/5.4 - Bad token (no expiry)" \ + "no BAD_TOKEN_NO_EXPIRY and approov_token_1_valid missing" + fi + + # 5.5 Explicit expired token. + local bad_token_expired + bad_token_expired="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."\ +"eyJhdWQiOiIiLCJleHAiOjE3NjIzNTg3OTcsImlwIjoiMS4yLjMuNCIsImRpZCI6IkV4YW1w"\ +"bGVBcHByb292VG9rZW5ESUQ9PSJ9.vQZqzUAOkjdqDRWMjUYQFwkwFd9sRn1UjXyZCIymNcE" + + run_test \ + "5.5 - Bad token (expired)" \ + "$(expected_protected_status "401")" \ + -H "approov-token: ${bad_token_expired}" \ + "${BASE_URL}/token-check" + + # 5.6 Missing binding but valid full token for double-binding endpoint. + if [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then + run_test \ + "5.6 - Missing binding with good full token" \ + "$(expected_protected_status "401")" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ + "${BASE_URL}/token-double-binding" + else + skip_test \ + "5.6 - Missing binding with good full token" \ + "approov_token_1_valid missing" + fi + + # 5.7 / 5.8 / 5.9 Various binding issues with double-binding token. + if [[ -f "${TOKDIR}/approov_token_3_valid" ]]; then + # 5.7 Missing Authorization with valid binding token. + run_test \ + "5.7 - Missing Authorization with valid binding token" \ + "$(expected_protected_status "401")" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 5.8 Good full token with binding. + run_test \ + "5.8 - Good full token with correct binding" \ + "200" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 5.9 Correctly signed token but wrong binding headers. + run_test \ + "5.9 - Correct token but wrong binding headers" \ + "$(expected_protected_status "401")" \ + -H "Authorization: WrongAuth==" \ + -H "Content-Digest: WrongDigest==" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + else + skip_test \ + "5.7/5.8/5.9 - Binding issues with binding-2 token" \ + "approov_token_3_valid missing" + fi + + echo + echo "Full request and response details are saved in:" + echo " ${LOGFILE}" +} + +main "$@" diff --git a/servers/hello/src/unprotected-server/.env.example b/servers/hello/src/unprotected-server/.env.example deleted file mode 100644 index bc74c47..0000000 --- a/servers/hello/src/unprotected-server/.env.example +++ /dev/null @@ -1,22 +0,0 @@ -########### -# SERVER -########### - -HTTP_REDIRECT=false -HTTP_PORT=8002 -HTTPS_PORT=8003 - - -############ -# APPROOV -############ - -APPROOV_TOKEN_BINDING_HEADER_NAME=Authorization - -# Feel free to play with different secrets. For development only you can create them with: -# $ openssl rand -base64 64 | tr -d '\n'; echo -APPROOV_BASE64_SECRET=h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww== - -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN=true -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING=true -APPROOV_LOGGING_ENABLED=true diff --git a/servers/hello/src/unprotected-server/README.md b/servers/hello/src/unprotected-server/README.md deleted file mode 100644 index d8ee461..0000000 --- a/servers/hello/src/unprotected-server/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Unprotected Server Example - -The unprotected example is the base reference to build the [Approov protected servers](/servers/hello/src/approov-protected-server/). This a very basic Hello World server. - - -## TOC - Table of Contents - -* [Why?](#why) -* [How it Works?](#how-it-works) -* [Requirements](#requirements) -* [Try It](#try-it) - - -## Why? - -To be the starting building block for the [Approov protected servers](/servers/hello/src/approov-protected-server/), that will show you how to lock down your API server to your mobile app. Please read the brief summary in the [Approov Overview](/OVERVIEW.md#why) at the root of this repo or visit our [website](https://approov.io/product) for more details. - -[TOC](#toc---table-of-contents) - - -## How it works? - -The Java Spring API server is very simple and only replies to the endpoint `/` with the message: - -```json -{"message": "Hello, World!"} -``` - -You can find the endpoint definition [here](./src/main/java/com/criticalblue/approov/jwt). - -[TOC](#toc---table-of-contents) - - -## Requirements - -To run this example you will need to have installed: - -* [OpenJDK](https://openjdk.java.net/install/) - This server example uses version `11.0.3`. It should work with earlier or later versions but was not tested. -* [Java Spring](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing) - Version `2.6.4` of the Spring Framework plugin is being used. The code should work with prior versions but wasn't tested. - -[TOC](#toc---table-of-contents) - - -## Try It - -First build the server with gradle. From the `./servers/hello/src/unprotected-server` folder execute: - -```bash -./gradlew build -``` - -Now, you can run this example from the `./servers/hello/src/unprotected-server` folder with: - -```bash -set -a # auto-export all assignments -source .env && ./gradlew bootRun -set +a # stop exporting variables -``` - -Finally, you can test that it works with: - -```text -curl -X GET 'http://localhost:8002' -``` - -The response will be: - -```json -{"message":"Hello, World!"} -``` - -[TOC](#toc---table-of-contents) - - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - -[TOC](#toc---table-of-contents) - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) - -[TOC](#toc---table-of-contents) diff --git a/servers/hello/src/unprotected-server/build.gradle b/servers/hello/src/unprotected-server/build.gradle deleted file mode 100644 index 923b8b3..0000000 --- a/servers/hello/src/unprotected-server/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -plugins { - id 'org.springframework.boot' version '2.6.4' - id 'java' -} - -apply plugin: 'io.spring.dependency-management' - -group = 'com.criticalblue' -version = '0.0.1-SNAPSHOT' -sourceCompatibility = '1.8' - -repositories { - mavenCentral() -} - -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-integration' - implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.springframework.security:spring-security-core' - implementation 'org.springframework.security:spring-security-web' - implementation 'org.springframework.security:spring-security-config' - - compileOnly 'org.jetbrains:annotations:17.0.0' - - compileOnly 'javax.servlet:javax.servlet-api:3.1.0' - - runtimeOnly 'org.springframework.boot:spring-boot-devtools' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.security:spring-security-test' -} diff --git a/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.jar b/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index afba109285af78dbd2a1d187e33ac4f87c76e392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61624 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�Zy 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 diff --git a/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties b/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index b371555..0000000 --- a/servers/hello/src/unprotected-server/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.6-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/servers/hello/src/unprotected-server/gradlew b/servers/hello/src/unprotected-server/gradlew deleted file mode 100755 index 65dcd68..0000000 --- a/servers/hello/src/unprotected-server/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/servers/hello/src/unprotected-server/gradlew.bat b/servers/hello/src/unprotected-server/gradlew.bat deleted file mode 100644 index 6689b85..0000000 --- a/servers/hello/src/unprotected-server/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/servers/hello/src/unprotected-server/settings.gradle b/servers/hello/src/unprotected-server/settings.gradle deleted file mode 100644 index 67a9126..0000000 --- a/servers/hello/src/unprotected-server/settings.gradle +++ /dev/null @@ -1,6 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - } -} -rootProject.name = 'approov-jwt' diff --git a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/ApiController.java b/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/ApiController.java deleted file mode 100644 index 1a42cd2..0000000 --- a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/ApiController.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import java.util.LinkedHashMap; -import java.util.Map; - -@RestController -public class ApiController { - - private static Logger logger = LoggerFactory.getLogger(ApiController.class); - - @GetMapping("/") - public Map helloV1() { - - logger.info("Serving request for endpoint '/', that isn't protected by an Approov Token."); - - Map response = new LinkedHashMap<>(); - - response.put("message", "Hello, World!"); - - return response; - } -} diff --git a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/Application.java b/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/Application.java deleted file mode 100644 index c547b68..0000000 --- a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/Application.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.apache.catalina.Context; -import org.apache.catalina.connector.Connector; -import org.apache.tomcat.util.descriptor.web.SecurityCollection; -import org.apache.tomcat.util.descriptor.web.SecurityConstraint; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; -import org.springframework.boot.web.servlet.server.ServletWebServerFactory; -import org.springframework.context.annotation.Bean; - -@SpringBootApplication -public class Application { - - private static Logger logger = LoggerFactory.getLogger(Application.class); - - @Value("${http.port}") - private int httpPort; - - @Value("${https.port}") - private int httpsPort; - - @Value("${http.redirect}") - private boolean isToRedirectHttp; - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - - @Bean - public ServletWebServerFactory servletContainer() { - - TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { - - @Override - protected void postProcessContext(Context context) { - if (isToRedirectHttp) { - logger.info("Creating security constrain to redirect http to https."); - SecurityConstraint securityConstraint = new SecurityConstraint(); - securityConstraint.setUserConstraint("CONFIDENTIAL"); - SecurityCollection collection = new SecurityCollection(); - collection.addPattern("/*"); - securityConstraint.addCollection(collection); - context.addConstraint(securityConstraint); - } - } - }; - - tomcat.addAdditionalTomcatConnectors(createConnector()); - return tomcat; - } - - private Connector createConnector() { - Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); - - connector.setScheme("http"); - connector.setPort(httpPort); - connector.setSecure(false); - - if (isToRedirectHttp) { - logger.info("Redirecting http to port: {}", httpsPort); - connector.setRedirectPort(httpsPort); - } - - return connector; - } -} diff --git a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java b/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java deleted file mode 100644 index 3abac84..0000000 --- a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.springframework.boot.web.servlet.error.DefaultErrorAttributes; -import org.springframework.boot.web.error.ErrorAttributeOptions; -import org.springframework.stereotype.Component; -import org.springframework.web.context.request.WebRequest; -import java.util.Map; - -@Component -public class CustomServletErrorAttributes extends DefaultErrorAttributes { - - @Override - public Map getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) { - - Map errorAttributes = super.getErrorAttributes(webRequest, options); - - // Remove from response in order to make the response comply with the Hello API specification - errorAttributes.remove("timestamp"); - errorAttributes.remove("message"); - errorAttributes.remove("path"); - errorAttributes.remove("error"); - errorAttributes.remove("trace"); - errorAttributes.remove("status"); - - return errorAttributes; - } -} diff --git a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java b/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java deleted file mode 100644 index 0e0fb02..0000000 --- a/servers/hello/src/unprotected-server/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - @Order(1) - public static class ApiSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authorizeRequests().antMatchers("/**").permitAll(); - } - } -} diff --git a/servers/hello/src/unprotected-server/src/main/resources/application.properties b/servers/hello/src/unprotected-server/src/main/resources/application.properties deleted file mode 100644 index cda3b69..0000000 --- a/servers/hello/src/unprotected-server/src/main/resources/application.properties +++ /dev/null @@ -1,41 +0,0 @@ -######################### -# SPRING CONFIGURATION -######################### - -spring.mvc.throw-exception-if-no-handler-found: true -spring.resources.add-mappings: false - - -######################### -# LOGGER CONFIGURATION -######################### - -logging.level.root: ERROR -logging.level.org.hibernate: ERROR -logging.level.org.springframework.web: ERROR -logging.level.org.springframework.security: ERROR -logging.level.com.criticalblue.approov: INFO - - -####################### -# HTTP CONFIGURATION -####################### - -# This vars need to be set in the .env file or in the environment -http.port: ${HTTP_PORT} -http.redirect: ${HTTP_REDIRECT} - - -####################### -# HTTPS CONFIGURATION -####################### - -# Needs to be set in the .env file or in the environment -server.port: ${HTTPS_PORT} - -# Self signed certificate was generated with: -# keytool -genkeypair -alias ApproovTLS -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore ApproovTLS.p12 -validity 100000 -server.ssl.key-store-type: PKCS12 -server.ssl.key-store: classpath:keystore/ApproovTLS.p12 -server.ssl.key-store-password: supersecret -server.ssl.key-alias: ApproovTLS diff --git a/servers/hello/src/unprotected-server/src/main/resources/keystore/ApproovTLS.p12 b/servers/hello/src/unprotected-server/src/main/resources/keystore/ApproovTLS.p12 deleted file mode 100644 index 72a21633bfa69d2a3289d47f81d8b2dd3f14f23b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2599 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 diff --git a/servers/hello/src/unprotected-server/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java b/servers/hello/src/unprotected-server/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java deleted file mode 100644 index 0a8fc7d..0000000 --- a/servers/hello/src/unprotected-server/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.junit.jupiter.api.Test; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.http.ResponseEntity; - -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest -public class ApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/servers/shapes-api/.env.example b/servers/shapes-api/.env.example deleted file mode 100644 index bc74c47..0000000 --- a/servers/shapes-api/.env.example +++ /dev/null @@ -1,22 +0,0 @@ -########### -# SERVER -########### - -HTTP_REDIRECT=false -HTTP_PORT=8002 -HTTPS_PORT=8003 - - -############ -# APPROOV -############ - -APPROOV_TOKEN_BINDING_HEADER_NAME=Authorization - -# Feel free to play with different secrets. For development only you can create them with: -# $ openssl rand -base64 64 | tr -d '\n'; echo -APPROOV_BASE64_SECRET=h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww== - -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN=true -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING=true -APPROOV_LOGGING_ENABLED=true diff --git a/servers/shapes-api/README.md b/servers/shapes-api/README.md deleted file mode 100644 index 1256ea1..0000000 --- a/servers/shapes-api/README.md +++ /dev/null @@ -1,831 +0,0 @@ -# APPROOV JAVA SPRING INTEGRATION EXAMPLE - -To see how a Java Spring server runs with an Approov integration please follow the -[Approov Shapes API Server](./docs/approov-shapes-api-server.md) walk-through. - -The implementation of the Approov token check is on [this folder](./src/main/java/com/criticalblue/approov/jwt/authentication), that uses the Java Spring Framework Security package to implement the authentication flow for checking the Approov token. - -Now let's continue reading this README for a **quick start** introduction in how -to integrate Approov on a project built with the Java Spring Framework. - -You may want to first follow [this demo walk-through](./docs/approov-shapes-api-server.md) before you try the Approov integration on your own app, but it's not mandatory you do it, but doing so will give you a better understanding how everything fits together in the simple Shapes app. - - -## APPROOV VALIDATION PROCESS - -Before we dive into the code we need to understand the Approov validation -process on the back-end side. - -### The Approov Token - -API calls protected by Approov will typically include a header holding an Approov -JWT token. This token must be checked to ensure it has not expired and that it is -properly signed with the secret shared between the back-end and the Approov cloud -service. - -We will use the `io.jsonwebtoken.*` package to help us in the validation of the -Approov JWT token. - -> **NOTE** -> -> Just to be sure that we are on the same page, a JWT token have 3 parts, that -> are separated by dots and represented as a string in the format of -> `header.payload.signature`. Read more about JWT tokens [here](https://jwt.io/introduction/). - -### The Approov Token Binding - -When an Approov token contains the key `pay`, its value is a base64 encoded sha256 hash of -some unique identifier in the request, that we may want to bind with the Approov token, in order -to enhance the security on that request, like an Authorization token. - -Dummy example for the JWT token middle part, the payload: - -``` -{ - "exp": 123456789, # required - the timestamp for when the token expires. - "pay":"f3U2fniBJVE04Tdecj0d6orV9qT9t52TjfHxdUqDBgY=" # optional - a sha256 hash of the token binding value, encoded with base64. -} -``` - -The token binding in an Approov token is the one in the `pay` key: - -``` -"pay":"f3U2fniBJVE04Tdecj0d6orV9qT9t52TjfHxdUqDBgY=" -``` - -**ALERT**: - -Please bear in mind that the token binding is not meant to pass application data -to the API server. - -## SYSTEM CLOCK - -In order to correctly check for the expiration times of the Approov tokens is -important that the system clock for the Java server is synchronized -automatically over the network with an authoritative time source. In Linux this -is usual done with an NTP server. - - -## REQUIREMENTS - -We will use Java `11.0.3` with the Spring Boot `2.1.3.RELEASE`, and Gradle -`5.2.1` to compile, build and run this demo. - -Docker is only required for developers wanting to use the Java docker stack provided -by the [stack](./stack) bash script, that is a wrapper around docker commands. - -Postman is the tool we recommend to be used when simulating the queries against -the API, but feel free to use any other tool of your preference. - - -## The Docker Stack - -We recommend the use of the included Docker stack to play with this Approov -integration. - -For details on how to use it you need to follow the setup instructions in the -[Approov Shapes API Server](./docs/approov-shapes-api-server.md#development-environment) -walk-through. - -For example, to get a shell inside the docker stack: - -```bash -$ ./stack shell -``` - -Now, you can do whatever you need inside this shell, like: - -```bash -$ java --version -openjdk 11.0.3 2019-04-16 -OpenJDK Runtime Environment (build 11.0.3+1-Debian-1bpo91) -OpenJDK 64-Bit Server VM (build 11.0.3+1-Debian-1bpo91, mixed mode, sharing) - -$ gradle --version - ------------------------------------------------------------- -Gradle 5.2.1 ------------------------------------------------------------- - -Build time: 2019-02-08 19:00:10 UTC -Revision: f02764e074c32ee8851a4e1877dd1fea8ffb7183 - -Kotlin DSL: 1.1.3 -Kotlin: 1.3.20 -Groovy: 2.5.4 -Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018 -JVM: 11.0.3 (Oracle Corporation 11.0.3+1-Debian-1bpo91) -OS: Linux 4.15.0-47-generic amd64 -``` - -The use of the docker stack is not mandatory thus feel free to use your local environment to play with this Approov integration. - -### The Postman Collection - -As you go through your Approov Integration you may want to test it and if you are using Postman then you can import this [Postman collection](https://raw.githubusercontent.com/approov/postman-collections/master/quickstarts/shapes-api/shapes-api.postman_collection.json) to see how it's done for the Approov Shapes API Server [example](./docs/approov-shapes-api-server.md), and use it as an inspiration or starting point for your own collection. - -The Approov tokens used in the headers of this Postman collection where generated with this [Python script](./bin/generate-token), that used the dummy secret set on the `.env.example` file to sign all the Approov tokens. - -If you are using the Aproov secret retrieved with the [Approov CLI]((https://approov.io/docs/latest/approov-cli-tool-reference/)) tool then you need to use it to generate some valid and invalid tokens. Some examples of using it can be found in the Approov [docs](https://approov.io/docs/latest/approov-usage-documentation/#generating-example-tokens). - - -## DEPENDENCIES - -Probably the only dependencies from the [build.gradle](./build.gradle) that you -do not have in your own project are this ones: - -```gradle -implementation 'io.jsonwebtoken:jjwt-api:0.10.5' -runtime 'io.jsonwebtoken:jjwt-impl:0.10.5', - 'io.jsonwebtoken:jjwt-jackson:0.10.5' - -implementation 'io.github.cdimascio:java-dotenv:5.0.1' -``` - -If they are not yet in your project add them and rebuild your project. - - -## HOW TO INTEGRATE APPROOV - -We will learn how to integrate Approov in a skeleton generated with Spring Boot, -where we added 3 endpoints: - -* `/` - Not protected with Approov. -* `/v2/hello` - Not protected with Approov. -* `/v2/shapes` - Approov protected. -* `/v2/forms` - Approov protected, and with a check for the Approov Approov token binding. - -To integrate Approov in your own project you may want to use the package -[com.criticalblue.approov.jwt.authentication](./src/main/java/com/criticalblue/approov/jwt/authentication), that contains all the code that -is project agnostic. To use this package you need to configure it from the class -extending the `WebSecurityConfigurerAdapter`, that in this demo is named as -[WebSecurityConfig](./src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java). - - -### Understanding the WebSecurityConfig - -The [WebSecurityConfig](./src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java) -is where we will setup the security configuration for the Spring framework, and -this is done by `@override` some of the methods for the abstract class it -extends from, the `WebSecurityConfigurerAdapter`. - -When implementing Approov is required to always check if the signature and -expiration time of the Approov token is valid, and optionally to check if the -Approov token binding matches the one in the header. - -For both the required and optional checks we always need to configure the Spring -framework security with the `ApproovAuthenticationProvider(approovConfig)`. - -Now we need to configure what endpoints will perform the required and optional -checks, and for this we need to add `ApproovSecurityContextRepository(ApproovConfig approovConfig, boolean checkTokenBinding)` -and the `ApproovAuthenticationEntryPoint()`to the Spring framework security -context, plus the endpoint name and http verbs, were the authentication should -be triggered. - -The `approovConfig` contains several information necessary to check the -Approov token, like the Approov secret used by the Approov cloud service to sign -the JWT token. For more details on what it contains you can inspect the code -[here](./src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java). - -Each time we add and endpoint to be protected by an Approov token we need to -tell if the Approov token binding is to be checked or not, and this is done with -the boolean flag `checkTokenBinding`. - -In order to be able to have endpoints that perform only the required checks in -the Approov token, while at the same time having others endpoints where both the -required and optional checks must take place, we need to configure the Spring -framework security context with static subclasses of the main `WebSecurityConfig` -class, and this sub classes also need to implement the abstract -`WebSecurityConfigurerAdapter` class. This subclasses will be annotated with a -configuration order `@Order(n)`, thus their configuration order is important. So -where we define `Order(1)` we are telling to the Spring framework security -context to perform first the required checks on the Approov token, afterwards -with `@Order(2)` we perform the optional check for the Approov token binding, -and then with `@Order(3)` we proceed as usual, that in this demo is to -allow any request to the root endpoint `/` to be served without authentication -of any kind. - - -### Setup Environment - -If you don't have already an `.env` file, then you need to create one in the -root of your project by using this [.env.example](./.env.example) as your -starting point. - -The `.env` file must contain this five variables: - -```env -APPROOV_TOKEN_BINDING_HEADER_NAME=Authorization - -# Feel free to play with different secrets. For development only you can create them with: -# $ openssl rand -base64 64 | tr -d '\n'; echo -APPROOV_BASE64_SECRET=h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww== - -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN=true -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING=true -APPROOV_LOGGING_ENABLED=true -``` - - -### The Code - -Add the package [com.criticalblue.approov.jwt.authentication](./src/main/java/com/criticalblue/approov/jwt/authentication) to your current project and then configure it from the class in your project that extends the `WebSecurityConfigurerAdapter`. - -Let's consider as a starting point an initial `WebSecurityConfig` without -requiring authentication for any of its endpoints: - -```java -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/").permitAll() - .antMatchers(HttpMethod.GET, "/v2/hello").permitAll() - .antMatchers(HttpMethod.GET, "/v2/shapes").permitAll() - .antMatchers(HttpMethod.GET, "/v2/forms").permitAll(); - - // the above endpoints declaration can be resumed to: - // .antMatchers(HttpMethod.GET, "/**").permitAll() - } -} -``` - -Now let's protect the endpoint for `/v2/shapes` and `/v2/forms` with an Approov token. - -The `/v2/shapes` endpoint it will be protected only by the required checks for an -Approov token, while the `/v2/forms` endpoint will have the optional check for the -Approov token binding. - -As already mentioned we will need to add to the `WebSecurityConfig` a subclass -for the endpoints we want to secure with only the required checks for an Approov -token, another for the endpoints secured with the required and optional checks -for an Aprroov token, and finally a subclass for endpoints that do not require -authentication. - -So let's prepare the `WebSecurityConfig` with only a subclass that maintains the -access to all endpoints without any authentication. - -Lets' add the subclass `ApiWebSecurityConfig`: - -```java -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedOrigins(Arrays.asList("http://localhost:8002")); - configuration.setAllowedMethods(Arrays.asList("GET")); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - @Order(1) - public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/").permitAll() - .antMatchers(HttpMethod.GET, "/v2/hello").permitAll() - .antMatchers(HttpMethod.GET, "/v2/shapes").permitAll() - .antMatchers(HttpMethod.GET, "/v2/forms").permitAll(); - - // the above endpoints declaration can be resumed to: - // .antMatchers(HttpMethod.GET, "/**").permitAll() - } - } -} -``` - -#### CORS Configuration - -In order to integrate Approov we will need to use an `Approov-Token`, thus we -need to allow it in the CORS configuration. - -If our Approov integration also uses the Approov token binding check, then we -also need to allow the header from where we want to retrieve the value we bind -to the Approov token payload in the mobile app, that in this demo is the -`Authorization` header. - -So we add to the CORS configuration this 2 new lines: - -```java -configuration.addAllowedHeader("Authorization"); -configuration.addAllowedHeader("Approov-Token"); -``` - -That will give us this new CORS configuration: - -```java -@Bean -CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; -} -``` - -#### Protecting the `/v2/shapes` endpoint - -To protect the `/v2/shapes` endpoint we will add the subclass `ApproovWebSecurityConfig`: - -```java -@Configuration -@Order(1) -public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, false)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/v2/shapes") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/v2/shapes").authenticated(); - - // Add here more endpoints that you need to protect with the required - // checks for the Approov token. - // .and() - // .antMatcher("/another-endpoint") - // .authorizeRequests() - // .antMatchers(HttpMethod.GET, "/another-endpoint").authenticated(); - } -} -``` - -and change the configuration order for subclass `ApiWebSecurityConfig` from `1` -to `2`: - -```java -@Configuration -@Order(2) -public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { - // omitted code ... - - // REMOVE ALSO THIS LINE - .antMatchers(HttpMethod.GET, "/v2/shapes").permitAll() - - // omitted code ... -} -``` - -finally you can see that was removed the line of code allowing the endpoint -`/v2/shapes` to be reached without any authentication. - - -#### Protecting the `/v2/forms` endpoint - -This endpoint also requires that we perform the optional check for the Approov token binding, thus to protect the `/v2/forms` endpoint another subclass is necessary. - -Let's add the subclass `AproovPayloadWebSecurityConfig`: - -```java -@Configuration -@Order(2) -public static class AproovPayloadWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, true)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/v2/forms") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/v2/forms").authenticated(); - - // Add here more endpoints that you need to protect with the - // required and optional checks for the Approov token. - // .and() - // .antMatcher("/another-endpoint") - // .authorizeRequests() - // .antMatchers(HttpMethod.GET, "/another-endpoint").authenticated(); - } -} -``` - -If you are paying attention you noticed that the configuration order is the same -as of the subclass `ApiWebSecurityConfig` in the previous step, thus we need to -change it again, this time from `2` to `3`: - -```java -@Configuration -@Order(3) -public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { - // omitted code ... - - // REMOVE ALSO THIS LINE - .antMatchers(HttpMethod.GET, "/v2/forms").permitAll() - - // omitted code ... -} -``` - -and finally you can see that we removed the line of code allowing the endpoint -`/v2/forms` to be reached without any authentication. - - -#### Putting All-Together - -After we implemented the Approov protection for the `/v2/shapes` and `/v2/forms` -endpoints the class `WebSecurityConfig` should look like: - -```java -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - @Order(1) - public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, false)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/v2/shapes") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/v2/shapes").authenticated(); - } - } - - @Configuration - @Order(2) - public static class AproovPayloadWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, true)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/v2/forms") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/v2/forms").authenticated(); - } - } - - @Configuration - @Order(3) - public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/**").permitAll(); - } - } -} -``` - -#### The Code Difference - -If we compare the initial implementation with the final result for the class -`WebSecurityConfig` we will see this difference: - -```java ---- untitled (Previous) -+++ /home/sublime/workspace/java/spring/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java -@@ -1,6 +1,7 @@ - package com.criticalblue.approov.jwt; - - import com.criticalblue.approov.jwt.authentication.*; -+import org.springframework.core.annotation.Order; - import org.springframework.security.config.annotation.web.builders.WebSecurity; - import org.springframework.security.config.http.SessionCreationPolicy; - import org.springframework.web.cors.CorsConfiguration; -@@ -25,6 +26,8 @@ - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); -+ configuration.addAllowedHeader("Authorization"); -+ configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; -@@ -35,27 +38,86 @@ - web.ignoring().antMatchers("/error"); - } - -- @Override -- protected void configure(HttpSecurity http) throws Exception { -+ @Configuration -+ @Order(1) -+ public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - -- http.cors(); -+ @Override -+ protected void configure(HttpSecurity http) throws Exception { - -- http -- .httpBasic().disable() -- .formLogin().disable() -- .logout().disable() -- .csrf().disable() -- .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) -- .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); -+ http.cors(); - -- http -- .authorizeRequests() -- .antMatchers(HttpMethod.GET, "/").permitAll() -- .antMatchers(HttpMethod.GET, "/v2/hello").permitAll() -- .antMatchers(HttpMethod.GET, "/v2/shapes").permitAll() -- .antMatchers(HttpMethod.GET, "/v2/forms").permitAll(); -+ http -+ .httpBasic().disable() -+ .formLogin().disable() -+ .logout().disable() -+ .csrf().disable() -+ .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) -+ .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - -- // the above endpoints declaration can be resumed to: -- // .antMatchers(HttpMethod.GET, "/**").permitAll() -+ http -+ .securityContext() -+ .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, false)) -+ .and() -+ .exceptionHandling() -+ .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) -+ .and() -+ .antMatcher("/v2/shapes") -+ .authorizeRequests() -+ .antMatchers(HttpMethod.GET, "/v2/shapes").authenticated(); -+ } - } --} -+ -+ @Configuration -+ @Order(2) -+ public static class AproovPayloadWebSecurityConfig extends WebSecurityConfigurerAdapter { -+ -+ @Override -+ protected void configure(HttpSecurity http) throws Exception { -+ -+ http.cors(); -+ -+ http -+ .httpBasic().disable() -+ .formLogin().disable() -+ .logout().disable() -+ .csrf().disable() -+ .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) -+ .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); -+ -+ http -+ .securityContext() -+ .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, true)) -+ .and() -+ .exceptionHandling() -+ .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) -+ .and() -+ .antMatcher("/v2/forms") -+ .authorizeRequests() -+ .antMatchers(HttpMethod.GET, "/v2/forms").authenticated(); -+ } -+ } -+ -+ @Configuration -+ @Order(3) -+ public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { -+ -+ @Override -+ protected void configure(HttpSecurity http) throws Exception { -+ -+ http.cors(); -+ -+ http -+ .httpBasic().disable() -+ .formLogin().disable() -+ .logout().disable() -+ .csrf().disable() -+ .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) -+ .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); -+ -+ http -+ .authorizeRequests() -+ .antMatchers(HttpMethod.GET, "/**").permitAll(); -+ } -+ } -+} -``` - - -As we can see the Approov integration in a current server is simple, easy and is -done with just a few lines of code. - -If you have not done it already, now is time to follow the -[Approov Shapes API Server](./docs/approov-shapes-api-server.md) walk-through -to see and have a feel for how all this works. - - -## PRODUCTION - -In order to protect the communication between your mobile app and the API server -is important to only communicate hover a secure communication channel, aka HTTPS. - -Please bear in mind that HTTPS on its own is not enough, certificate pinning -must be also used to pin the connection between the mobile app and the API -server in order to prevent [Man in the Middle Attacks](https://approov.io/docs/mitm-detection.html). - -We do not use certificate pinning in this Approov integration example -because we want to be able to demonstrate, via Postman how, the API works. - -However in production will be mandatory to implement [certificate pinning](https://approov.io/docs/mitm-detection.html#id1). diff --git a/servers/shapes-api/bin/generate-token b/servers/shapes-api/bin/generate-token deleted file mode 100755 index 446e348..0000000 --- a/servers/shapes-api/bin/generate-token +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python3 - -""" -GENERATE APPROOV TOKEN CLI - -To be used only to generate Approov tokens for testing purposes during development. - -Usage: - generate-token - generate-token [--expire EXPIRE] [--claim CLAIM] [--claim-example] [--secret SECRET] - -Options: - --expire EXPIRE The Approov token expire time in minutes [default: 5]. - --claim CLAIM The base64 encode sha256 hash of the custom payload claim for the Approov token. - --claim-example Same as --claim but using an hard-coded claim example. - --secret SECRET The base64 encoded secret to sign the Approov token for test purposes. - -h --help Show this screen. - -v --version Show version. - -""" - -# Standard Libraries -from os import getenv -from sys import exit -from time import time -from hashlib import sha256 -from base64 import b64decode, b64encode - -# Third-Party Libraries -from jwt import encode -from docopt import docopt - -# to base64 encode the custom payload claim hash: http://tomeko.net/online_tools/hex_to_base64.php -REQUEST_CLAIM_RAW_VALUE_EXAMPLE = 'claim-value-to-be-sha256-hashed-and-base64-encoded' - -def _generateSha256HashBase64Encoded(value): - value_hash = sha256(value.encode('utf-8')).digest() - return b64encode(value_hash).decode('utf-8') - -def generateToken(approov_base64_secret, token_expire_in_minutes, request_claim_raw_value): - """Generates a token with a 5 minutes lifetime. Optionally we can set also a custom payload claim.""" - - approov_base64_secret = approov_base64_secret.strip() - - if not approov_base64_secret: - raise ValueError('Approov base64 encoded secret is missing.') - - if not token_expire_in_minutes: - token_expire_in_minutes = 5 - - payload = { - 'exp': time() + (60 * token_expire_in_minutes), # required - the timestamp for when the token expires. - } - - if request_claim_raw_value: - payload['pay'] = _generateSha256HashBase64Encoded(request_claim_raw_value) - - return encode(payload, b64decode(approov_base64_secret), algorithm='HS256').decode() - -def main(): - - arguments = docopt(__doc__, version='GENERATE APPROOV TOKEN CLI - 1.0') - - request_claim_raw_value = None - token_expire_in_minutes = int(arguments['--expire']) - approov_base64_secret = getenv("APPROOV_BASE64_SECRET") - - if arguments['--claim']: - request_claim_raw_value = arguments['--claim'] - - if not request_claim_raw_value and arguments['--claim-example'] is True: - request_claim_raw_value = REQUEST_CLAIM_RAW_VALUE_EXAMPLE - - if arguments['--secret']: - approov_base64_secret = arguments['--secret'] - - if not approov_base64_secret: - raise ValueError('--secret was provided as an empty string in the CLI or in the .env file.') - - token = generateToken(approov_base64_secret, token_expire_in_minutes, request_claim_raw_value) - - print('Token:\n', token) - - return token - -if __name__ == '__main__': - try: - main() - exit(0) - except Exception as error: - print(error) - exit(1) diff --git a/servers/shapes-api/build.gradle b/servers/shapes-api/build.gradle deleted file mode 100644 index 7c81148..0000000 --- a/servers/shapes-api/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -plugins { - id 'org.springframework.boot' version '2.1.3.RELEASE' - id 'java' -} - -apply plugin: 'io.spring.dependency-management' - -group = 'com.criticalblue' -version = '0.0.1-SNAPSHOT' -sourceCompatibility = '1.8' - -repositories { - mavenCentral() -} - -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-integration' - implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.springframework.security:spring-security-core' - implementation 'org.springframework.security:spring-security-web' - implementation 'org.springframework.security:spring-security-config' - - implementation 'io.jsonwebtoken:jjwt-api:0.10.5' - runtime 'io.jsonwebtoken:jjwt-impl:0.10.5', - 'io.jsonwebtoken:jjwt-jackson:0.10.5' - - compileOnly 'org.jetbrains:annotations:17.0.0' - - compileOnly 'javax.servlet:servlet-api:3.1.0' - - runtimeOnly 'org.springframework.boot:spring-boot-devtools' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.security:spring-security-test' -} diff --git a/servers/shapes-api/docker/Dockerfile b/servers/shapes-api/docker/Dockerfile deleted file mode 100644 index 5b79eaf..0000000 --- a/servers/shapes-api/docker/Dockerfile +++ /dev/null @@ -1,96 +0,0 @@ -FROM openjdk:11.0.3 - -ARG CONTAINER_USER="java" -ARG CONTAINER_UID="1000" -ARG ZSH_THEME="robbyrussell" -ARG GRADLE_VERSION=5.2.1 - - -# Will not prompt for questions -ENV DEBIAN_FRONTEND=noninteractive \ - CONTAINER_USER="${CONTAINER_USER}" \ - CONTAINER_UID="${CONTAINER_UID}" \ - ROOT_CA_DIR=/root-ca/ \ - ROOT_CA_KEY="self-signed-root-ca.key" \ - ROOT_CA_PEM="self-signed-root-ca.pem" \ - ROOT_CA_NAME="ApproovStackRootCA" \ - PROXY_CA_FILENAME="FirewallProxyCA.crt" \ - PROXY_CA_PEM="certificates/FirewallProxyCA.crt" \ - PROXY_CA_NAME="FirewallProxy" \ - NO_AT_BRIDGE=1 \ - DISPLAY=":0" \ - GRADLE_HOME=/opt/gradle/gradle-"${GRADLE_VERSION}" \ - PATH=/opt/gradle/gradle-"${GRADLE_VERSION}"/bin:${PATH} - -COPY ./setup ${ROOT_CA_DIR} - -RUN apt update && \ - apt -y upgrade && \ - - apt -y install \ - python3 \ - python3-pip \ - locales \ - tzdata \ - ca-certificates \ - inotify-tools \ - libnss3-tools \ - zip \ - zsh \ - curl \ - git \ - maven && \ - - printf "\n\n----------> FORCING INSTALLATION OF MISSING DEPENDENCIES <------------\n\n" && \ - apt -y -f install && \ - - printf "\n\n----------> FIXING INOTIFY WATCHES <------------\n\n" && \ - #https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers - printf "fs.inotify.max_user_watches=524288\n" >> /etc/sysctl.conf && \ - - printf "\n\n----------> ADDING LOCALE <------------\n\n" && \ - echo "en_GB.UTF-8 UTF-8" > /etc/locale.gen && \ - locale-gen en_GB.UTF-8 && \ - dpkg-reconfigure locales && \ - - printf "\n\n----------> ADDING A USER <------------\n\n" && \ - useradd -m -u ${CONTAINER_UID} -s /usr/bin/zsh ${CONTAINER_USER} && \ - - printf "\n\n----------> INSTALLING CUSTOM CERTIFICATES <------------\n\n" && \ - cd ${ROOT_CA_DIR} && \ - ./setup-root-certificate.sh "${ROOT_CA_KEY}" "${ROOT_CA_PEM}" "${ROOT_CA_NAME}" && \ - ./add-proxy-certificate.sh "${PROXY_CA_PEM}" && \ - - printf "\n\n----------> INSTALLING GRADLE <------------\n\n" && \ - curl -o gradle.zip -fsSL https://services.gradle.org/distributions/gradle-"${GRADLE_VERSION}"-bin.zip && \ - unzip -d /opt/gradle gradle.zip && \ - rm -f gradle.zip && \ - gradle --version && \ - - printf "\n\n----------> INSTALLING OH MY ZSH <------------\n\n" && \ - bash -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" && \ - chsh -s /usr/bin/zsh && \ - cp -R /root/.oh-my-zsh /home/"${CONTAINER_USER}" && \ - cp /root/.zsh* /home/"${CONTAINER_USER}" && \ - sed -i "s/\/root/\/home\/${CONTAINER_USER}/g" /home/"${CONTAINER_USER}"/.zshrc && \ - chown -R "${CONTAINER_USER}":"${CONTAINER_USER}" /home/"${CONTAINER_USER}" && \ - - printf "\n\n----------> CLEANUP <------------\n\n" && \ - rm -rvf /var/lib/apt/lists/* - -ENV LANG=en_GB.UTF-8 \ - LANGUAGE=en_GB:en \ - LC_ALL=en_GB.UTF-8 - -USER ${CONTAINER_USER} - -RUN pip3 install \ - pyjwt \ - docopt - -# pip install will put the executables under ~/.local/bin -ENV PATH=/home/"${CONTAINER_USER}"/.local/bin:$PATH - -WORKDIR /home/${CONTAINER_USER}/workspace - -CMD ["zsh"] diff --git a/servers/shapes-api/docker/setup/adb-setup-certificate.sh b/servers/shapes-api/docker/setup/adb-setup-certificate.sh deleted file mode 100755 index 2b87a9b..0000000 --- a/servers/shapes-api/docker/setup/adb-setup-certificate.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# https://stackoverflow.com/a/48814971/6454622 - -set -eu - -CA_PEM=${1?Missing certificate file name} - -cert_name=$(openssl x509 -inform PEM -subject_hash_old -in ${CA_PEM} | head -1) -cat ${CA_PEM} > $cert_name -openssl x509 -inform PEM -text -in ${CA_PEM} -out nul >> $cert_name - -adb shell mount -o rw,remount,rw /system -adb push $cert_name /system/etc/security/cacerts/ -adb shell mount -o ro,remount,ro /system diff --git a/servers/shapes-api/docker/setup/add-certificate-to-browser.sh b/servers/shapes-api/docker/setup/add-certificate-to-browser.sh deleted file mode 100755 index cce7176..0000000 --- a/servers/shapes-api/docker/setup/add-certificate-to-browser.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -set -eu - -### -# https://thomas-leister.de/en/how-to-import-ca-root-certificate/ -### - - -### Script installs root.cert.pem to certificate trust store of applications using NSS -### (e.g. Firefox, Thunderbird, Chromium) -### Mozilla uses cert8, Chromium and Chrome use cert9 - -### -### Requirement: apt install libnss3-tools -### - -CA_PEM="${1?Missing file path for the PEM certificate}" -CA_NAME="${2?Missing Certificate Name}" -BROWSER_CONFIG_DIR="${3:-/home/node}" - -printf "\n>>> ADDING CERTIFICATE TO BROWSERS TRUSTED STORE <<<\n" - -if [ -f "${CA_PEM}" ] - then - printf "\n--> CERTIFICATE FILE: ${CA_PEM}\n" - printf "\n--> CERTIFICATE NAME: ${CA_NAME}\n" - printf "\n--> BROWSER CONFIG DIR: ${BROWSER_CONFIG_DIR}\n" - - ### - ### For cert8 (legacy - DBM) - ### - for certDB in $(find ${BROWSER_CONFIG_DIR} -name "cert8.db") - do - certdir=$(dirname ${certDB}); - certutil -A -n "${CA_NAME}" -t "TCu,Cu,Tu" -i ${CA_PEM} -d dbm:${certdir} - done - - ### - ### For cert9 (SQL) - ### - for certDB in $(find ${BROWSER_CONFIG_DIR} -name "cert9.db") - do - certdir=$(dirname ${certDB}); - certutil -A -n "${CA_NAME}" -t "TCu,Cu,Tu" -i ${CA_PEM} -d sql:${certdir} - done - else - printf "\n>>> CERTIFICATE FILE NOT FOUND FOR: ${CA_PEM}\n" -fi diff --git a/servers/shapes-api/docker/setup/add-certificate-to-node-server.sh b/servers/shapes-api/docker/setup/add-certificate-to-node-server.sh deleted file mode 100755 index 6d84496..0000000 --- a/servers/shapes-api/docker/setup/add-certificate-to-node-server.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -eu - -CA_PEM_FILE="${1?Missing name for certificate file}" -CA_EXTENSION="${CA_PEM_FILE##*.}" - -if [ "${CA_EXTENSION}" != "pem" ] - then - printf "\nFATAL ERROR: Certificate must use .pem extension\n\n" - exit 1 -fi - -if [ -f "${CA_PEM_FILE}" ] - then - printf "\n>>> ADDING A CERTIFICATE TO NODE SERVER <<<\n" - - # Add certificate to node, so that we can use npm install - printf "cafile=${CA_PEM_FILE}" >> /root/.npmrc - printf "cafile=${CA_PEM_FILE}" >> /home/${CONTAINER_USER}/.npmrc; - - printf "\n >>> CERTICATE ADDED SUCCESEFULY<<<\n" - - else - printf "\n >>> NO CERTIFICATE TO ADD <<<\n" -fi - diff --git a/servers/shapes-api/docker/setup/add-proxy-certificate.sh b/servers/shapes-api/docker/setup/add-proxy-certificate.sh deleted file mode 100755 index f102483..0000000 --- a/servers/shapes-api/docker/setup/add-proxy-certificate.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -eu - -PROXY_CA_PEM="${1?Missing name for Proxy CRT file}" - -if [ -f "${PROXY_CA_PEM}" ] - then - printf "\n>>> ADDING A PROXY CERTIFICATE TO THE TRUSTED STORE <<<\n" - - # add certificate tpo the trust store - cp -v ${PROXY_CA_PEM} /usr/local/share/ca-certificates - update-ca-certificates - - # verifies the certificate - openssl x509 -in ${PROXY_CA_PEM} -text -noout > "${PROXY_CA_PEM}.txt" - - else - printf "\n >>> FATAL ERROR: Certificate not found in path ${PROXY_CA_PEM} <<<\n" -fi diff --git a/servers/shapes-api/docker/setup/certificates/.gitignore b/servers/shapes-api/docker/setup/certificates/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/servers/shapes-api/docker/setup/certificates/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/servers/shapes-api/docker/setup/create-domain-certificate.sh b/servers/shapes-api/docker/setup/create-domain-certificate.sh deleted file mode 100755 index cd42c42..0000000 --- a/servers/shapes-api/docker/setup/create-domain-certificate.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -set -eu - -### -# inspired https://fabianlee.org/2018/02/17/ubuntu-creating-a-trusted-ca-and-san-certificate-using-openssl-on-ubuntu/ -### - - -DOMAIN="${1:-example.com}" -ROOT_CA_KEY="${2?Missing Name for root certificate KEY file}" -ROOT_CA_PEM="${3?Missing Name for root certificate PEM file}" - -DOMAIN_CA_KEY="${DOMAIN}.key" -DOMAIN_CA_CSR="${DOMAIN}.csr" -DOMAIN_CA_CRT="${DOMAIN}.crt" -DOMAIN_CA_TXT="${DOMAIN}.txt" -CONFIG_FILE="${DOMAIN}.cnf" - - -printf "\n>>> MERGINGING CONFIGURATION FROM ${DOMAIN_CA_TXT} INTO ${CONFIG_FILE} <<<\n" -cat openssl.cnf ${DOMAIN_CA_TXT} > ${CONFIG_FILE} - - -printf "\n>>> GENERATING KEY FOR DOMAIN CERTIFICATE: ${DOMAIN_CA_KEY} <<<\n" - -# generate the private/public RSA key pair for the domain -openssl genrsa -out ${DOMAIN_CA_KEY} 4096 - -printf "\n>>> GENERATING CSR FOR DOMAIN CERTIFICATE: ${DOMAIN_CA_CSR} <<<\n" - -# create the server certificate signing request: -openssl req \ - -subj "/CN=${DOMAIN}" \ - -extensions v3_req \ - -sha256 \ - -new \ - -key ${DOMAIN_CA_KEY} \ - -out ${DOMAIN_CA_CSR} - -printf "\n>>> GENERATING CRT FOR DOMAIN CERTIFICATE: ${DOMAIN_CA_CRT} <<<\n" - -# generate the server certificate using the: server signing request, the CA signing key, and CA cert. -openssl x509 \ - -req \ - -extensions v3_req \ - -days 3650 \ - -sha256 \ - -in ${DOMAIN_CA_CSR} \ - -CA ${ROOT_CA_PEM} \ - -CAkey ${ROOT_CA_KEY} \ - -CAcreateserial \ - -out ${DOMAIN_CA_CRT} \ - -extfile ${CONFIG_FILE} - -# verifies the certificate -openssl x509 -in ${DOMAIN_CA_CRT} -text -noout > ${DOMAIN}.txt - -printf "\n >>> CERTIFICATE CREATED FOR DOMAIN: ${DOMAIN} <<<\n" diff --git a/servers/shapes-api/docker/setup/localhost.txt b/servers/shapes-api/docker/setup/localhost.txt deleted file mode 100644 index 9ffb34d..0000000 --- a/servers/shapes-api/docker/setup/localhost.txt +++ /dev/null @@ -1,15 +0,0 @@ -[ v3_req ] - -# Extensions to add to a certificate request - -basicConstraints = CA:FALSE -keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -#extendedKeyUsage=serverAuth -subjectAltName = @alt_names - - -[ alt_names ] - -DNS.1 = localhost -DNS.2 = *.localhost diff --git a/servers/shapes-api/docker/setup/openssl.cnf b/servers/shapes-api/docker/setup/openssl.cnf deleted file mode 100644 index a25e990..0000000 --- a/servers/shapes-api/docker/setup/openssl.cnf +++ /dev/null @@ -1,353 +0,0 @@ -# -# OpenSSL example configuration file. -# This is mostly being used for generation of certificate requests. -# - -# This definition stops the following lines choking if HOME isn't -# defined. -HOME = . -RANDFILE = $ENV::HOME/.rnd - -# Extra OBJECT IDENTIFIER info: -#oid_file = $ENV::HOME/.oid -oid_section = new_oids - -# To use this configuration file with the "-extfile" option of the -# "openssl x509" utility, name here the section containing the -# X.509v3 extensions to use: -# extensions = -# (Alternatively, use a configuration file that has only -# X.509v3 extensions in its main [= default] section.) - -[ new_oids ] - -# We can add new OIDs in here for use by 'ca', 'req' and 'ts'. -# Add a simple OID like this: -# testoid1=1.2.3.4 -# Or use config file substitution like this: -# testoid2=${testoid1}.5.6 - -# Policies used by the TSA examples. -tsa_policy1 = 1.2.3.4.1 -tsa_policy2 = 1.2.3.4.5.6 -tsa_policy3 = 1.2.3.4.5.7 - -#################################################################### -[ ca ] -default_ca = CA_default # The default ca section - -#################################################################### -[ CA_default ] - -dir = ./demoCA # Where everything is kept -certs = $dir/certs # Where the issued certs are kept -crl_dir = $dir/crl # Where the issued crl are kept -database = $dir/index.txt # database index file. -#unique_subject = no # Set to 'no' to allow creation of - # several certs with same subject. -new_certs_dir = $dir/newcerts # default place for new certs. - -certificate = $dir/cacert.pem # The CA certificate -serial = $dir/serial # The current serial number -crlnumber = $dir/crlnumber # the current crl number - # must be commented out to leave a V1 CRL -crl = $dir/crl.pem # The current CRL -private_key = $dir/private/cakey.pem# The private key -RANDFILE = $dir/private/.rand # private random number file - -x509_extensions = usr_cert # The extensions to add to the cert - -# Comment out the following two lines for the "traditional" -# (and highly broken) format. -name_opt = ca_default # Subject Name options -cert_opt = ca_default # Certificate field options - -# Extension copying option: use with caution. -# copy_extensions = copy - -# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs -# so this is commented out by default to leave a V1 CRL. -# crlnumber must also be commented out to leave a V1 CRL. -# crl_extensions = crl_ext - -default_days = 365 # how long to certify for -default_crl_days= 30 # how long before next CRL -default_md = default # use public key default MD -preserve = no # keep passed DN ordering - -# A few difference way of specifying how similar the request should look -# For type CA, the listed attributes must be the same, and the optional -# and supplied fields are just that :-) -policy = policy_match - -# For the CA policy -[ policy_match ] -countryName = match -stateOrProvinceName = match -organizationName = match -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -# For the 'anything' policy -# At this point in time, you must list all acceptable 'object' -# types. -[ policy_anything ] -countryName = optional -stateOrProvinceName = optional -localityName = optional -organizationName = optional -organizationalUnitName = optional -commonName = supplied -emailAddress = optional - -#################################################################### -[ req ] -default_bits = 2048 -default_keyfile = privkey.pem -distinguished_name = req_distinguished_name -attributes = req_attributes -x509_extensions = v3_ca # The extensions to add to the self signed cert - -# Passwords for private keys if not present they will be prompted for -# input_password = secret -# output_password = secret - -# This sets a mask for permitted string types. There are several options. -# default: PrintableString, T61String, BMPString. -# pkix : PrintableString, BMPString (PKIX recommendation before 2004) -# utf8only: only UTF8Strings (PKIX recommendation after 2004). -# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). -# MASK:XXXX a literal mask value. -# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. -string_mask = utf8only - -req_extensions = v3_req # The extensions to add to a certificate request - -[ req_distinguished_name ] -countryName = Country Name (2 letter code) -countryName_default = AU -countryName_min = 2 -countryName_max = 2 - -stateOrProvinceName = State or Province Name (full name) -stateOrProvinceName_default = Some-State - -localityName = Locality Name (eg, city) - -0.organizationName = Organization Name (eg, company) -0.organizationName_default = Internet Widgits Pty Ltd - -# we can do this but it is not needed normally :-) -#1.organizationName = Second Organization Name (eg, company) -#1.organizationName_default = World Wide Web Pty Ltd - -organizationalUnitName = Organizational Unit Name (eg, section) -#organizationalUnitName_default = - -commonName = Common Name (e.g. server FQDN or YOUR name) -commonName_max = 64 - -emailAddress = Email Address -emailAddress_max = 64 - -# SET-ex3 = SET extension number 3 - -[ req_attributes ] -challengePassword = A challenge password -challengePassword_min = 4 -challengePassword_max = 20 - -unstructuredName = An optional company name - -[ usr_cert ] - -# These extensions are added when 'ca' signs a request. - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This is required for TSA certificates. -# extendedKeyUsage = critical,timeStamping - -[ v3_req ] - -# Extensions to add to a certificate request - -basicConstraints = CA:FALSE -keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -#extendedKeyUsage=serverAuth -#subjectAltName = @alt_names - - -[ v3_ca ] - - -# Extensions for a typical CA - - -# PKIX recommendation. - -subjectKeyIdentifier=hash - -authorityKeyIdentifier=keyid:always,issuer - -#basicConstraints = critical,CA:true -basicConstraints = critical, CA:TRUE, pathlen:3 - - -# Key usage: this is typical for a CA certificate. However since it will -# prevent it being used as an test self-signed certificate it is best -# left out by default. -# keyUsage = cRLSign, keyCertSign -keyUsage = critical, cRLSign, keyCertSign - -# Some might want this also -nsCertType = sslCA, emailCA - -# Include email address in subject alt name: another PKIX recommendation -# subjectAltName=email:copy -# Copy issuer details -# issuerAltName=issuer:copy - -# DER hex encoding of an extension: beware experts only! -# obj=DER:02:03 -# Where 'obj' is a standard or added object -# You can even override a supported extension: -# basicConstraints= critical, DER:30:03:01:01:FF - -[ crl_ext ] - -# CRL extensions. -# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. - -# issuerAltName=issuer:copy -authorityKeyIdentifier=keyid:always - -[ proxy_cert_ext ] -# These extensions should be added when creating a proxy certificate - -# This goes against PKIX guidelines but some CAs do it and some software -# requires this to avoid interpreting an end user certificate as a CA. - -basicConstraints=CA:FALSE - -# Here are some examples of the usage of nsCertType. If it is omitted -# the certificate can be used for anything *except* object signing. - -# This is OK for an SSL server. -# nsCertType = server - -# For an object signing certificate this would be used. -# nsCertType = objsign - -# For normal client use this is typical -# nsCertType = client, email - -# and for everything including object signing: -# nsCertType = client, email, objsign - -# This is typical in keyUsage for a client certificate. -# keyUsage = nonRepudiation, digitalSignature, keyEncipherment - -# This will be displayed in Netscape's comment listbox. -nsComment = "OpenSSL Generated Certificate" - -# PKIX recommendations harmless if included in all certificates. -subjectKeyIdentifier=hash -authorityKeyIdentifier=keyid,issuer - -# This stuff is for subjectAltName and issuerAltname. -# Import the email address. -# subjectAltName=email:copy -# An alternative to produce certificates that aren't -# deprecated according to PKIX. -# subjectAltName=email:move - -# Copy subject details -# issuerAltName=issuer:copy - -#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem -#nsBaseUrl -#nsRevocationUrl -#nsRenewalUrl -#nsCaPolicyUrl -#nsSslServerName - -# This really needs to be in place for it to be a proxy certificate. -proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo - -#################################################################### -[ tsa ] - -default_tsa = tsa_config1 # the default TSA section - -[ tsa_config1 ] - -# These are used by the TSA reply generation only. -dir = ./demoCA # TSA root directory -serial = $dir/tsaserial # The current serial number (mandatory) -crypto_device = builtin # OpenSSL engine to use for signing -signer_cert = $dir/tsacert.pem # The TSA signing certificate - # (optional) -certs = $dir/cacert.pem # Certificate chain to include in reply - # (optional) -signer_key = $dir/private/tsakey.pem # The TSA private key (optional) -signer_digest = sha256 # Signing digest to use. (Optional) -default_policy = tsa_policy1 # Policy if request did not specify it - # (optional) -other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) -digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) -accuracy = secs:1, millisecs:500, microsecs:100 # (optional) -clock_precision_digits = 0 # number of digits after dot. (optional) -ordering = yes # Is ordering defined for timestamps? - # (optional, default: no) -tsa_name = yes # Must the TSA name be included in the reply? - # (optional, default: no) -ess_cert_id_chain = no # Must the ESS cert id chain be included? - # (optional, default: no) diff --git a/servers/shapes-api/docker/setup/setup-root-certificate.sh b/servers/shapes-api/docker/setup/setup-root-certificate.sh deleted file mode 100755 index db1a30c..0000000 --- a/servers/shapes-api/docker/setup/setup-root-certificate.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash - -set -eu - -### -# inspired https://fabianlee.org/2018/02/17/ubuntu-creating-a-trusted-ca-and-san-certificate-using-openssl-on-ubuntu/ -### - - -ROOT_CA_KEY="${1?Missing Name for root certificate KEY file}" -ROOT_CA_PEM="${2?Missing Name for root certificate PEM file}" -ROOT_CA_NAME="${3?Missing Certificate Name}" -CONFIG_FILE="${4:-openssl.cnf}" - -if [ ! -f ROOT_CA_PEM ] - then - printf "\n>>> CREATING A ROOT CERTIFICATE <<<\n" - - openssl req \ - -new \ - -newkey rsa:4096 \ - -days 3650 \ - -nodes \ - -x509 \ - -extensions v3_ca \ - -subj "/C=US/ST=CA/L=SF/O=${ROOT_CA_NAME}/CN=${ROOT_CA_NAME}" \ - -keyout ${ROOT_CA_KEY} \ - -out ${ROOT_CA_PEM} \ - -config ${CONFIG_FILE} - - printf "\n>>> ADDING ROOT CERTIFICATE TO THE TRUSTED STORE <<<\n" - - # add certificate to the trust store - cp ${ROOT_CA_PEM} /usr/local/share/ca-certificates/self-signed-root-ca.crt - update-ca-certificates - - # verifies the certificate - openssl x509 -in ${ROOT_CA_PEM} -text -noout > "${ROOT_CA_NAME}.txt" - - printf "\n >>> ROOT CERTICATE CREATED SUCCESEFULY<<<\n" - - else - printf "\n >>> ROOT CERTICATE ALREADY EXISTS <<<\n" -fi diff --git a/servers/shapes-api/docker/usage-help.txt b/servers/shapes-api/docker/usage-help.txt deleted file mode 100644 index 5ef091c..0000000 --- a/servers/shapes-api/docker/usage-help.txt +++ /dev/null @@ -1,50 +0,0 @@ -DOCKER STACK CLI WRAPPER - -This bash script is a wrapper around docker for easier use of the docker stack -in this project. - -Signature: - ./stack [options] - - -Usage: - ./stack - ./stack [-d, --detach] [-h, --help] [--http] [--https] [-u, --user] - - -Options: - -d, --detach Runs the docker container detached from the terminal. - $ ./stack --detach up - - -h, --help Shows this help. - $ ./stack --help - - --http The HTTP port map host:container. - Defaults to use port map 5000:5000. - $ ./stack --http 8000:5000 up - - --https The HTTPS port map host:container. - Defaults to use port map 5443:5443. - $ ./stack --https 8443:5443 up - - -u, --user Run the docker container under the given user name or uid. - $ ./stack --user root shell - -Commands/Args: - build Builds the docker image for this stack. - $ ./stack build - - down Stops and removes the docker container. - $ ./stack down - - up Starts the docker container with the Java server running. - $ ./stack up - $ ./stack --detach up - $ ./stack --detach --https 8443:5443 up - $ ./stack --http 8000:5000 --https 8443:5443 up - - shell Starts a shell in the docker container: - $ ./stack shell - $ ./stack shell bash - $ ./stack --http 4000:5000 shell - $ ./stack --user root shell diff --git a/servers/shapes-api/docs/approov-shapes-api-server.md b/servers/shapes-api/docs/approov-shapes-api-server.md deleted file mode 100644 index d1ae0c1..0000000 --- a/servers/shapes-api/docs/approov-shapes-api-server.md +++ /dev/null @@ -1,537 +0,0 @@ -# APPROOV SHAPES API SERVER - -The Approov Shapes API Server contains endpoints with and without the Approov -protection. The protected endpoints differ in the sense that they can use or not -the optional token binding feature for the Approov token. - -We will demonstrate how to call each API endpoint with screen-shots from Postman -and from the shell terminal. Postman is used here as an easy way to demonstrate -how you can play with the Approov integration in the API server, but to see a -real demo of how Approov would work in production you need to request a demo -[here](https://info.approov.io/demo). - -When presenting the screen-shots we will present them as 2 distinct views. The -Postman view will tell how we performed the request and what response we got -back and the shell view show us the log entries that lets us see the result of -checking the Approov token and how the requested was handled. - - -## REQUIREMENTS - -The same as we defined [here](README.md#requirements) when explain how to -integrate Approov. - - -## INSTALL - -### Approov Shapes Api Server - -Let's start by cloning the demo: - -```bash -git clone https://github.com/approov/quickstart-java-spring_shapes-api.git -cd quickstart-java-spring_shapes-api -``` - -### Development Environment - -In order to have an agnostic development environment through this tutorial we -recommend the use of Docker, that can be installed by following [the official -instructions](https://docs.docker.com/install/) for your platform. - -A bash script `./stack` is provided in the root of the demo to make easy to use -the docker stack to run this demo. - -Show the usage help with: - -```bash -./stack --help -``` - -The output: - -```bash -DOCKER STACK CLI WRAPPER - -This bash script is a wrapper around docker for easier use of the docker stack -in this project. - -Signature: - ./stack [options] - - -Usage: - ./stack - ./stack [-d, --detach] [-h, --help] [--http] [--https] [-u, --user] - - -Options: - -d, --detach Runs the docker container detached from the terminal. - $ ./stack --detach up - - -h, --help Shows this help. - $ ./stack --help - - --http The HTTP port map host:container. - Defaults to use port map 5000:5000. - $ ./stack --http 8000:5000 up - - --https The HTTPS port map host:container. - Defaults to use port map 5443:5443. - $ ./stack --https 8443:5443 up - - -u, --user Run the docker container under the given user name or uid. - $ ./stack --user root shell - -Commands/Args: - build Builds the docker image for this stack. - $ ./stack build - - down Stops and removes the docker container. - $ ./stack down - - up Starts the docker container with the Java server running. - $ ./stack up - $ ./stack --detach up - $ ./stack --detach --https 8443:5443 up - $ ./stack --http 8000:5000 --https 8443:5443 up - - shell Starts a shell in the docker container: - $ ./stack shell - $ ./stack shell bash - $ ./stack --http 4000:5000 shell - $ ./stack --user root shell -``` - -#### Building the docker image: - -```bash -./stack build -``` -> The resulting docker image will contain the Approov Shapes Demo Server in Java. - - -## SETUP - -### Environment File - -Lets' copy the `.env.example` to `.env` with the command: - -```bash -cp .env.example .env -``` - -No modifications are necessary to the newly created `.env` in order to run the -demo with the provided Postman collection. - -### Getting a shell terminal inside the docker container: - -```bash -./stack shell -``` -> All subsequent shell commands must be executed from this shell terminal. - -### Building the Project - -Lets' try to build the project: - -```bash -./gradlew build -``` - -The output: - -``` -# omitted output ... - -BUILD SUCCESSFUL in 33s -5 actionable tasks: 3 executed, 2 up-to-date -``` - -The build went successful, thus we are ready to start playing around with the -server. - -## RUNNING THE APPROOV SHAPES DEMO SERVER - -We will run this demo first with Approov enabled and a second time with Approov -disabled. When Approov is enabled any API endpoint protected by an Approov token -will have the request denied with a `400` or `401` response. When Approov is -disabled the check still takes place but no requests are denied, only the reason -for the failure is logged. - -### The logs - -When a request is issued from Postman you can see the logs being printed to your -shell terminal where you can see all log entries about requests protected by -Approov, and compare the logged messages with the results returned to Postman -for failures or success in the validation of the Approov token. - -An example for an accepted request: - -```bash -2019-04-26 11:42:30.503 INFO 17062 --- [nio-5000-exec-2] c.c.a.j.a.ApproovAuthentication : Request approved with a valid Approov token. -2019-04-26 11:42:30.503 INFO 17062 --- [nio-5000-exec-2] c.c.a.j.a.ApproovAuthentication : Request approved with a valid token binding in the Approov token. -2019-04-26 11:42:30.524 INFO 17062 --- [nio-5000-exec-2] c.c.a.j.a.ApproovAuthentication : Serving request for endpoint '/v2/forms', that is protect by an Approov Token. -``` - -Example for a rejected request: - -```bash -2019-04-26 11:43:43.083 ERROR 17062 --- [nio-5000-exec-5] c.c.a.j.a.ApproovAuthenticationException : JWT expired at 2019-04-12T15:35:49Z. Current time: 2019-04-26T10:43:43Z, a difference of 1192074083 milliseconds. Allowed clock skew: 0 milliseconds. -> See: com.criticalblue.approov.jwt.authentication.ApproovAuthentication.checkWith(ApproovAuthentication.java:98) - -``` - -### Starting Postman - -Open Postman and import [this collection](https://raw.githubusercontent.com/approov/postman-collections/master/quickstarts/shapes-api/shapes-api.postman_collection.json) -that contains all the API endpoints prepared with all scenarios we want to -demonstrate. - -### Starting the Java Server - -We do not use HTTPS and certificate pinning in this demo, because we are running in localhost, that would require us to provide self-signed certificates to start the Java server with HTTPS enabled, that is doable, but we also use Postman to show how the API works, and Postman does not support self-signed certificates. - -This server has `HTTPS` enabled with a self-signed certificate at -`src/main/java/resources/keystore/ApproovTLS.p12`, thus feel free to use it in -another tool that supports self-signed certicates, and then just hit the same -API endpoints hover `HTTPS`, or change the setting `HTTP_REDIRECT` to `true` in -the `.env` file. - -To start the server we want to issue the command: - -```bash -source .env && ./gradlew bootRun -``` - -> **NOTE**: -> -> If you decide to run the Java server from your IDE, then you need to set all -> the environments variables in the `.env` file in your IDE. - -After the Java server is up and running it will be available at http://localhost:8002. - -### Endpoint Not Protected by Approov - -This endpoint does not benefit from Approov protection and the goal here is to -show that both Approov protected and unprotected endpoints can coexist in the -same API server. - -#### /v2/hello - -**Postman View:** - -![postman hello endpoint](./assets/img/postman-hello.png) -> As we can see we have not set any headers. - -**Shell view:** - -![shell terminal hello endpoint](./assets/img/shell-hello.png) -> As expected the logs don't have entries with Approov errors. - - -**Request Overview:** - -Looking into the Postman view, we can see that the request was sent without the -`Approov-Token` header and we got a `200` response, and looking to the shell -view we can see a log entry telling that this is a endpoint not protected by an -Approov token. - -### Endpoints Protected by an Approov Token - -This endpoint requires a `Approov-Token` header and depending on the boolean -value for the environment variable `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` we will -have 2 distinct behaviours. When being set to `true` we refuse to fulfill the -request and when set to `false` we will let the request pass through. For both -behaviours we log the result of checking the Approov token. - -The default behaviour is to have `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` set to -`true`, but you may feel more comfortable to have it setted to `false` during -the initial deployment, until you are confident that you are only refusing bad -requests to your API server. - -#### /v2/shapes - missing the Approov token header - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` set to `true`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -**Postman view:** - -![Postman - shapes endpoint without an Approov token](./assets/img/postman-shapes-missing-approov-token.png) -> As we can see we have not set any headers. - -**Shell view:** - -![Shell - shapes endpoint without an Approov token](./assets/img/shell-shapes-missing-approov-token.png) -> No log entries for Approov exceptions in this request? - -**Request Overview:** - -Looking to the Postman view we can see that we forgot to add the `Approov-Token` -header, thus a `400` response is returned. - -In the shell view we can also see that we have a `400` response, and that the associated exception doesn't belong to the -Approov implementation, instead its from the Java Spring framework security authentication. - -**Let's see the same request with Approov disabled** - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` set to `false`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -**Postman view:** - -![Postman - shapes endpoint without an Approov token and approov disabled](./assets/img/postman-shapes-missing-approov-token-and-approov-disabled.png) -> Did you notice that now we have a response with a shape? - -**Shell view:** - -![Shell - shapes endpoint without an Approov token and approov disabled](./assets/img/shell-shapes-missing-approov-token-and-approov-disabled.png) -> Now we have some logs entries from the Approov authentication. - -**Request Overview:** - -We continue to not provide the `Approov-Token` header but this time we have a -`200` response with the value for the shape, because once Approov is disabled the -request is not denied. - -Looking into the shell view we can see a log entry informing that the Approov token is missing in the request, but now -we can see another log entry for the `/v2/shapes` endpoint, that says the request was fulfilled. - - -#### /v2/shapes - Malformed Approov token header - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` set to `true`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -**Postman view:** - -![Postman - shapes endpoint with an invalid Approov token](./assets/img/postman-shapes-malformed-approov-token.png) -> Did you notice the `Approov-Token` with an invalid JWT token? - -**Shell view:** - -![Shell - shapes endpoint with an invalid Approov token](./assets/img/shell-shapes-malformed-approov-token.png) -> Can you spot what is the reason for the `401` response? - -**Request Overview:** - -In Postman we issue the request with a malformed `Approov-Token` header, that is -a normal string, not a JWT token, thus we get back a `401` response. - -Looking to shell view we can see that the logs is also telling us that the -request was denied with a `401` and that the reason is an invalid JWT token, -that doesn't contain exactly 2 periods `.` characters. - - -**Let's see the same request with Approov disabled** - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` set to `false`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -**Postman view:** - -![Postman - shapes endpoint with an invalid Approov token and approov disabled](./assets/img/postman-shapes-malformed-approov-token-and-approov-disabled.png) - - -**Shell view:** - -![Shell - shapes endpoint with an invalid Approov token and approov disabled](./assets/img/shell-shapes-malformed-approov-token-and-approov-disabled.png) - - -**Request Overview:** - -In Postman, instead of sending a valid JWT token, we continue to send the -`Approov-Token` header as a normal string, but this time we got a `200` response -back because Approov is disabled, thus not blocking the request. - -In the shell view we continue to see the same reason for the Approov token -validation failure. - - -#### /v2/shapes - Valid Approov token header - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` set to `true`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -> **NOTE**: -> -> For your convenience the Postman collection includes a token that only expires -> in a very distant future for this call "Approov Token with valid signature and -> expire time". For the call "Expired Approov Token with valid signature" an -> expired token is also included. - - -**Postman view with token correctly signed and not expired token:** - -![Postman - shapes endpoint with a valid Approov token](./assets/img/postman-shapes-valid-approov-token.png) - -**Postman view with token correctly signed but this time is expired:** - -![Postman - shapes endpoint with a expired Approov token](./assets/img/postman-shapes-expired-approov-token.png) - - -**Shell view:** - -![Shell - shapes endpoint with a valid and with a expired Approov token](./assets/img/shell-shapes-valid-and-expired-token.png) - - -**Request Overview:** - -In Postman we performed 2 requests with correctly signed Approov tokens, where the first one was successful while the second request failed with a `401` response. This was because the token in the second request as already expired as we can see by the log messages in the shell view. A token expires when the timestamp contained in the payload claim `exp` is in the past. - - -**Let's see the same request with Approov disabled** - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` set to `false`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` -**Postman view with token valid for 1 minute:** - -![Postman - shapes endpoint with a valid Approov token and Approov disabled](./assets/img/postman-shapes-valid-approov-token-and-approov-disabled.png) - -**Postman view with same token but this time is expired:** - -![Postman - shapes endpoint with a expired Approov token and Approov disabled](./assets/img/postman-shapes-expired-approov-token-and-approov-disabled.png) - -**Shell view:** - -![Shell - shapes endpoint with a valid, with an expired Approov token and Approov disabled](./assets/img/shell-shapes-approov-disabled-with-valid-and-expired-token.png) -> Can you spot where is the difference between this shell view and the previous one? - -**Request Overview:** - -We repeated the same two requests, but this time we got both of them with `200` responses. - -If we look into the shell view we can see that the first request have -a valid token and in the second request the token is not valid because is -expired, but once Approov is disabled the request is accepted. - -### Endpoints Protected with the Approov Token Binding - -The token binding is optional in any Approov token and you can read more about them [here](./../README.md#approov-validation-process). - -The requests where the Approov token binding is checked will be rejected on failure, but -only if the environment variable `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING` -is set to `true`. To bear in mind that before this check is done the request -have already been through the same flow we have described for the `/v2/shapes` endpoint. - - -#### /v2/forms - Invalid Approov Token Binding - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING` set to `true`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -**Postman view:** - -![Postman - forms endpoint with an invalid Approov token binding](./assets/img/postman-forms-invalid-approov-token-binding.png) - -**Shell view:** - -![Shell - forms endpoint with an invalid Approov token binding](./assets/img/shell-forms-invalid-approov-token-binding.png) - -**Request Overview:** - -In Postman we added an Approov token with a token binding not matching the -`Authorization` token, thus the API server rejects the request with a `401` response. - -While we can see in the shell view that the request is accepted for the Approov -token itself, afterwards we see the request being rejected, and this is due to -an invalid token binding in the Approov token, thus returning a `401` response. - -> **IMPORTANT**: -> -> When decoding the Approov token we only check if the signature and expiration -> time are valid, nothing else within the token is checked. -> -> The token binding check works on the decoded Approov token to validate if the -> value from the key `pay` matches the one for the token binding header, that in -> our case is the `Authorization` header. - - -**Let's see the same request with Approov disabled** - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING` set to `false`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -**Postman view:** - -![Postman - forms endpoint with an invalid Approov token binding](./assets/img/postman-forms-invalid-approov-token-binding-with-approov-disabled.png) - -**Shell view:** - -![Shell - forms endpoint with an invalid Approov token binding](./assets/img/shell-forms-invalid-approov-token-binding-with-approov-disabled.png) - -**Request Overview:** - -We still have the invalid token binding in the Approov token, but once we have -disabled Approov we now have a `200` response. - -In the shell view we can confirm that the log entry still reflects that the -token binding is invalid, but this time a `401` response is not logged, and -this is because Approov is now disabled. - - -#### /v2/forms - Valid Approov Token Binding - -Make sure that the `.env` file contains `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING` set to `true`. - -Cancel current server session with `ctrl+c` and start it again with: - -```bash -source .env && ./gradlew bootRun -``` - -**Postman view:** - -![Postman - forms endpoint with valid Approov Token Binding](./assets/img/postman-forms-valid-approov-token-binding.png) - -**Shell view:** - -![Shell - forms endpoint with valid Approov Token Binding](./assets/img/shell-forms-valid-approov-token-binding.png) - -**Request Overview:** - -In the Postman view the `Approov-Token` contains a valid token binding, the -`Authorization` token value, thus when we perform the request, the API server -doesn't reject it, and a `200` response is sent back. - -The shell view confirms us that the token binding is valid and we can also see -the log entry confirming the `200` response. diff --git a/servers/shapes-api/docs/assets/img/postman-forms-invalid-approov-token-binding-with-approov-disabled.png b/servers/shapes-api/docs/assets/img/postman-forms-invalid-approov-token-binding-with-approov-disabled.png deleted file mode 100644 index c2edac30906eec1c047227d04aa12addc8903296..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87455 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 diff --git a/servers/shapes-api/docs/assets/img/postman-forms-invalid-approov-token-binding.png b/servers/shapes-api/docs/assets/img/postman-forms-invalid-approov-token-binding.png deleted file mode 100644 index a74d5e75289071e026855ba62bdb7d3177ff1138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87229 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 z 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

w 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

Qc3zPf6$&h*yK} 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 diff --git a/servers/shapes-api/docs/assets/img/postman-shapes-expired-approov-token-and-approov-disabled.png b/servers/shapes-api/docs/assets/img/postman-shapes-expired-approov-token-and-approov-disabled.png deleted file mode 100644 index d93f909d221a93cb62addc6039e6c62c325cb963..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85715 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

ktAosZRrM2Hg&4 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

  • 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 diff --git a/servers/shapes-api/docs/assets/img/postman-shapes-malformed-approov-token-and-approov-disabled.png b/servers/shapes-api/docs/assets/img/postman-shapes-malformed-approov-token-and-approov-disabled.png deleted file mode 100644 index b6de92aa109ad92eb7406f64fbfccc8d8718d8ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74920 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

    Uu+jnk#$bJYNDO%9QPK+(~ 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ǧk<6B`#-b9dI-C)=6tjB0Xm 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⁡mY8@GQ{^nEil^(3jEJ_Z!g2 zO~9=A#+cAZ&Uz4MY!~}4ffFWBVC-Dc>^G%it6R{aP}){RMO{(IP;*ocjpC&V905In z&ut_Jbh!5)KInit9CoahZwP zontTOcfiKN;tvcVBAQm87p~5~VqjuoQanka3z?crua!z6Q=<)>67vv6L82Syz%K?2 zz3~hl5ltPG(u{D_Wk}?Hfq}aF8#6-%h;Ry=05AmkrobDy>H!SB2oN9Ux-Y7zbhwS^z zT@CKtS136gLLxd_e+e`xn4oJWUWi@NAh0**Y>*;e&ENgqsf_=G07Y?Y(2=+1*VY5d z3j8zxZH)iqP`_zuX`7+T0A$eU9Lwp)6l_X&p*8~B z)w9zPD?ty%5QtkUF{iu&qeduQ)Z#9Jh`e~l?U5YS9WAU>h4lL<6v7w*P?7<#^-nR~ ztRdtyX#D8sH&KmGe-r8e1kwi74x?H>fW);RbDbk5PX6)33zTxezu@@k^*LL%Gh}>$ zUOWn%57uiF_ke3kcs?)ywm!td1J)Wilyi{A`rc(>Kr#Ii+p- z^z`&RCNoyGN&+Aozxi0}Cx!=kriq5b;HvwcmGud_qAtLY&_Tns^e1b)(=;n9x{dqu z3||$#CIJaW3uIOJSqywYC!|~uz*~S{$)8bSdLHqx((M>fSfiGOYu(B~wr6sTlVqx* zi3uCvzeeEP;j2JmDn8yB##SU4Bb61c_Q1x08V%PQV<&y{>l4EW^p>DGLvpSH5l|3# zQ*TTYyc2jg9-z(?QPZ^^Fd+6C7=R^C_lXg?S#`P%lo2do;?G_a5-L{n#K0j!3N9k4 z2nmHl6KI&(m;-y(2)l|fMg!%}yN;SIfJ*9&@~3Qs^V1@TX!*hSQAQBN4z22!foo#5 zwA2pTvAAU3hqXjrj?85zzJYdn-apx&^WI@jsS;^SKMGweY23HhmvxiQ?-J|08z=YL zFoG^2zFVx*BNJO8Nn~#_kIuu~eC>^?PxPXT?H(=p6gQnqw035exK0EW6_wH5NmvK31bJFDQ=HqnH6DAfz_XMIU5D$nUFB1G!HH;Q-v>96P}4 zzltsNm`XsNfFyQPP>{+40M#XO@_Imo*dw8TOvWq3{NsyoO~Lqh>*h@_Nc`A$Oowi6M8j{+q&6~74;;;2DrxsHyY| zRJCv+YerB-zQX~Rjuoe~;B!Ev(yw31uDb2LM${JsDZvHTc6Mfq=VGP-u}?!}zF8S5 zUK%Oh)aKyA0%sONenQKF-C5>n4H;u^CQOsXRR%<0Dj} zXwRw%ILn$~r{XYI6w;`2v>i@n@G?t~JZXvZ^@1B=&?Bn#-ofz>IeJsGm?Ph=e zhP{%*q{VyHEMgMV{?9K`w2!R|N-bo)Z?RI{o#jdXu5N_YhQBP@-U`@(>wU zd!{)A@y$T81O>M_&{w0x<~9^wU~F57*IWaQ*s zsfwI{8v&o!)zu*yae>(=LPfNw)0S%l0l1g; zS`HNg>jgfR`M%UJ)o^6(03~;KcPqi0LDPb7VsOaA!?O=Sy6M-i2?+TgQ1evHiXRO_ zL$wbLY&*28$Spz2dieM;BDLkh^24?F7g943S0b3Dzau6ECns)D44~Vu?T|Qa1wc|m zXFq~n1$oSHDDO6WG@jZiF`#n>KECZT_uw3}%40jAANP+oI|d8Q=~pXH#leAlfljzL zeT2Pmq$VLqycr59kO?2`+M6|65;rzB_TV$Ytp6KG1iM2K;M(%1KA%hAcXKzyREEBD z+bjy{dLAGO=gXNXjqE6VJJt~OY@f$q?DO2s-rq5UN8{3ptInZBIcY45JZeE7qCOc} za#pT%xZaXc3SNoR*V@-A)%5#JFEgBt&d{mT6)w7cSN8LR`ivTn7h-twFQuA0UXS-m zP0Fup#*S;?(NQ#N&PYa0{5)J-|9PG1c{%#3N{6t~jMDeqksTdx89lo6!SC2#x}k~T zgSrL=yqwLXEn=WIfb#&HKzJ9}3h3W}dk+J0=`Df=0TC1qqHxZfae)2<`Kl27{RJ@j zUGsv`{z& zE$QS`vLnnsx&tP;@67(gr%U^A@^W%=UZ6068uR0eE`jnu=+dM3eIy$3hOOyrwlSN= z1vn>Ha$L$|Yt|Ybi=LF_cZN_mMVY_K&q1H@o;y3hqSblZ{p76oToivt#${7BdK3I` zElH^xLA(NIw7P4Pr153QVnkom98cmk_&BdWK&#Voyl6J*l(T6UV!KFA?|DCC)Ygq2 zhb%U?@)!0=gCr-)J87kG%~hYX6%VtjrllBOGH&%&9~J8&e4gPU5i%tLVKWz<*P(T% zGgGtDs`@t?m5K-xfBI4>fjKk7b^*_ydD%K1G$>^o&8%iWXMuMDbX{kvwgFBM$HV2q z{olc|4!=J?aey`(@uU`vPo_9nMI-bK(iH+8h=fv0{YXwJSMPbTRU$TBQD{2Oul9Dv z8#i#0dzxT-M;DZY<>x_}Ihv+Fy~f5C;C`|hixf(55VS52z_HZ>B#uR?_ShUqWGH<; zT?tPBk=LG{>`H*6pyM!VZ_fde&HO<24TO9Q5S|)M?m4QG?_7YJu2jbV*wiRuOJTB6MI66%;~MapVxj6O^++8oq8CHXm(@#paH^F<0DnWJgrZT>t0Z(ewKIHWk3)rsS~1Aqs9 z|C7!bZW=&{FQ`!jgoL2=ze>dX;D%QYIac>Q?M2SiW5!2v;BKNUnu~GX1Ak+a*LhO( zmP*E-U5fkX*2B(mdUKpOoiJN%6yCv+h_;+a^;H~pS{oR<{DqB0LpUT+z^POso5ngE zmzv?YLp8&P(ff+(en%f$YO{W_$&e`aoFuE9<1sPq+sCxI!;YWif4^B2njxTLd41Kr zZ|=?KU_A~0(C?kCQpv{`CerQA<5K){?Y@;%ddcdj4PJV+8)i{3_46FZ`yX3`40X38 zpFY)U`f`gh>icO@q*+ZzN2c1fa>(}Jbw^eV&dSnoA+ZJS{mt1nz(Co0Z8Rlz%aUMg zorgj&5s?Bq;5KUXDWqHcJ2`}?AWpaE2A*g=EhF;|Pg$q|NHyZlj6R0;Y)zn&Xh(+&0j(`FMgHuqD5eF5pU_T&ffbkNUA-iA#DFf+< zpM1Q+ASAS3wk-x48W5H<2t-Qec_0`^>>{?3E12o{CK{vtR# zK!(~MKRszgjQpA4(1o#<{PSn3`#O1GP79bUga?9N$?RVCpvf#KcZtB)gDr{(oCBNf zAr{c70$tnyNqim#NW`4BCV&~y0f-0sn?Yu<|m*Be_Q!a~{Rbv9Lg3|-4ixOFA{T74zsQ$!0?i_e)}X5~SeAJBf%Df7Of(coC| z0kc|BViF(;^~FRNa1!M$17U~cCV(9XvMAJf^zb1fPE3L^4Y(8sD2U)6Gs4;&mB*#h<&PKPDPW_qpPs-f+r;?cVRFb@%S z0C_g0tHJi4Cm>+iEdh#Y3Pwltp@h2tMD$1%IEE<+24Ufd-d_2W{SNn%?Kkw|E>xb? zRq%ywb8yT;Swoc3kbXH7DoHlB9pnoK=nlYkiUby1i{2vfKmr69(Stt;WhV!V;Bs7R z6Bu8E?`YTvLxbAzZV0uL`0o8`zU*o6`%pvs1~{VgL|;1A)u1~hWGq_i+@!M z8oH2*P@vb2bgc+UgRh@B9qnllauIDs6$lPSOcQ8Gi0DqwD=@~0z0uvKrqvvuc$AGp zkvt@%UOljn&O(3EwcT)~e{v;>|2dFhPPb9oTaJ_+J~}$eGncGi}}r zPqu?%2%Jf_c0B>&nf#|pBHpws;OT=_wLBwLsU0|6<#MO|;T-q52xy>zs+InB=XePdv)><6=Z;794k8w8<3M-)?XF82lB{L8dOl z&>c{JawziPCd6+6ISH6O1D!#H>$jXYO4Xd5e#m-*mi7)y$ZpW$3u;=k3C}uKup3If z1W&|$KPmZ_FA-l2HSpMA1FX@@{Tv$F0N^--eHghRztks2=SB09y{umyw^+sBF*L8= z+*Z5&6@cb*Em@a_8I+s8he>6E~>Y^#IeP+jrfUp>UH<$lBeqgVeYxIYxT ziTyv4xW8wxf}n5PHa<=dQ_}^!v4{c$?|F()@4gT8{qd|5!Z# z|KCg#+wpxrl|B%d0Xe>y*#Ko%3#=_+*^mE8t-Z2}y2Pi)lie~5b$w{zYVo_^hv9tn z{2$StGHxVlRl(EhQFxWCDh?;IC;zxgnW=O$n$J}jXKaxlq#6HK%GIIIHT(Sf`RM&lIV=vLtwgCTzkoJFXBwiz>Z)A^z zG>>cXc3x`UW?!}#rn*Tx1PG?13k1Rw7H@-H_0_|%mRp5~BFMM=-}Rkehwfo{J%sAW+1VLJzrBgexe5Qb7vSGKI;{KlyV}V( zD2Kq-ut+qnTzdL=*!T8@`FFK9Cb;`o7QR!=#X0n?PiDBXbR&Jg zs=Dqo$&e2nF6_yo>F~AsAAGL0y%2py4~OkpzRn9Rg9kW7&sp@-`YN%&u%|efcUm$F zq&76v^EM!;`^Wd%hCJl^iAKAIOEab^7^^D+-*Fb~LU$tDkoni2E(f+jmIaopEo!Wm z4ExXVJ>okJI*d^)tFQu1Z%SJ8(e9F&%CgxtW~&Q67z0wWa*jZI9Em(Q?W$MPfSIKWkmADR*%a79UIF_Wu~3 z|DBxh3g-rXyReYMPA2Wrl=VtJDx-S_&x>RZ718aUxV5#o?F7^OTBj_@=mk{dV~~Do z>J51@w&ZoO=*_}Uc)K6$voRU%n8FW4{1y{wp3{#qX#adCI;Ejho$%PZ0(03i2R?tA z3UA+3y=kg>PR{b|ogTH(K;akQsD%l1shF6R^OIfk2FX9p=ir!zB?%Tr|bIoFrO$*U9^g~X=k+5QYO z$~4Ya!t4xbv-?vT;)aDjy2JMN8p$~Z+Vg|EQNg(#t3f(GQ8&Fjw63|0XHsTT>c

    CR+SofmXQ7NrxYXH|&U))HBoWUmUDf&!L!iBTcWMwp8 z2g|?aIjskRdq-_axV>sTv|zli^=LUvoq7Jh=Le|$X;-b%oa^4ps#z{f8#;fQwz0>~ znrBEhbc8Y9luJymy{wsan*8!~yD}|oJ@3968$woqThgf%9#MhZ$ChLHSS_d5o*6P9 z3{-`XuH)g=BSO<|@qc&8!B{Tt^M4)&K{6Nf-wZ#z`yu_!+mLezLw{`ibN5*8{P6uh zFa6{Bf7y->uKj(~gx^&sAefv=2}(3iHo^j^xTd1a?EwpmLf>_;NI3tEQxBnYLE~9k z23gH(@8jpc526sn2iAmI&?4?+2p%*5#tiekwpG_vXYf@?yVH@9)~*7+fuD`_uZ!A( zVtXAK)jwJDm00_rdGrnlSS+$flZZnBP{S;sB>na%p#$dd}ILp?~m{;sG0)AHu z3%m(R&2?engRi!d&z?;JMKlK^q1s?SS99I&i|(J_Q-*HSKBlPq-Ex!LL*=hy8UBB! z-yn-6*Z~-+KK{{%r_Y{M8}PnVR&D|*vje&Va~S#%c`gH1ayMjz2e{@*j>1CFBaDoU zDgx0TcoUY@QGjxzT z3%x%@*Q#*9{cBb-&*--1NxueEkySmpBG`5jIrv z4o>3h36+;hRj0MQedh}EbGSPChEa#@py}KI-v`ilWg47BL`2AA0)XWo%NTm}1gUX? zK?q8NE~g4~5(n@Z0g3r~ZKArjzyBb87Y0hKxBkdsr75s(Z*Pm9>`h}KJnz@g&<$W% za6B3s8q9aEd9}}2A;S}h6xL<%2C5qZ?2y?DF!ykQ*_VP{r4FQf2^;+fda7sBi8hJ@j}uqo#}JmuO3w#s%;&=Rd9KI--) zfT|jyRqM6y_3&yqFY|$Q;<&wM)ooXV5p*(GZeR^XVUAv2K|#B47#m!7dO*Ts0iq8_ z04zLYrDq=TH0yyF2y|`QaL&$y%NMT*dceFk$R??M1bZis1wg-pZYUgBd0EkQuZoin z_Y-SG)I%^4XKH396AY3A1{a$!KUD^1*%I0b5L=*3Oa;q|cP)}oQ#XMMcTY|23OhSH zLR7#A0G7r6Ojs^B;NXvefx!gWE&DRVVaObGT6j9defU0Z`?@Twtk`}*L351~CtScp z%cD^1U@rk%PLHXW7YS2hBh}tv+jlYn2S+nwRt7!q+n#}5XQRer?3c^Tj;AOnC>p?v z4~QMk%Grdjr_$0F7=wQnrrOENxf=5gwT~$qOiE;qj zX{~Q)NYd1FSzzJz3L)|+2hiL~*;rXv7B5+*t z7+YduW&N-`T!@2Af?8SS#8h*c4BP>0ScfOE_){3UfajN_sTF^TJ^IZA(~dACa+{U4 zXO|C1LwFJf;ju039Y@#)U}t5vOO^|UK@fif@;9)L2$Dvl(ICf)fZmDOH3nBaAt6p& zQj!m_As;t3tQtPjwLnf8n&Gp9Qvy(}@UR>%fiy3GEEr*5*ZA~oMP*^?6U?<(z>XKe zAx9p>0#Ca@9?0=mbb+yG3uxlXHFR}#LC##r(_JQl2NonHF^UZ+qC(&a3>#sUN4Q}v z^}uCsHDGfGZb92Fu3mlvp2psv7{q---Ax@N=~jC zIM{Z$&1QdcRxD;_W-ZX}VI|CpXDDVnVly>G5G4-UqAH_&Zt%+>W6*BEb0shnw1jca z!LBiih(xkx6ur}J30;RlUwc(zhPr33@MyWHC!VYpW|a?&&It4PQ0=!xX>n^4edTv@ zv`vl#mRlsG92*VHs*5No(==^56@uc935%>7{E<9TehSn7wB*Ft1B z)yXi<6(Q3iA&Qi^)|=lvI9g8ZGd)ZDRVrs_qRHs!0?}xAkVk6E5-Z5?pe%vx0WK2| zT0qf&@o8YTs`xN!FhR=&LP_^HkLA=u#I*oqt7Wkoq7uWvGVsZKe0+#B5gHn5?Z!q~ zV@^p86_aGH369%)KR+!<#s(2SFna@o+u$#5)yo|(@sEe$96*oE{sD7~&2VZB4GjL| zm3{v{sk&ctc6@FNwC6Kg@B|Zh?hOOO_r_HTa6f^c0t6$rzq^01MgF}#6 z-@bjD%x(-LBubzanU`;eR+zwi599?H@~{++Mjnm=5-K)A#sD(~KXDsI2IPT+jV~!t z(d<9Tg?Q1~_}v5#(ZDJkUJh#u4hcz2P5`$mW_1YW6}vm+8as4=ad#SoDZ6_RPVjJ! z3s*&{GBK$Fy@-i$_KOq;c))G`o|`AeE^l|^rCL+eU5+mXyim56q9Sk8pr{;fb=DM8 z+IJ-^{3t@r7I|Uqz};)DkxfM4IFUL?aXRqy+%4{3h1J>b@ia;}zCA8&(1|qZ9V{E+ zyPdV!Uh&92JwK;1-a4W7gg`bE?+~l4tqlttp;;~C47TPI-osR$ zY^V2suc**Ct!$jGHdxwMG*p$fi)?6k45G3~Iwd9L6D_T{F+r?~2`7lr=ze&dM2*&+ zJ=|VfTU&U{12zdc`6G38_2gZ|+63O)OC%GAU1)Uj3eKN}Z?c8spssVlLtJ89ca#w= zHum&LUqw|_wwQPgcY=_T<2RGU{&{fQ0$~^p1ND(%nr_taFq(SpF5kSo?FFpS(6^ag zQ^4g-Lo|TNbiQS{dw&>aM*>qbD9NF#9gZN?k2Rd#bYG z>{@?J@NPI@mW>9p@x_zxb{fhg(vRJ7G|7sKP0KioPOC-QuB2|C`9zh$ZEUcbl%lz< zLh4KJe@(QLl1gBRFT*MQr{dz-it*=&%Qi9b5hy6!ypPNyacQ-At51KtK;-A4)g5Ud9Xr*76v{xX?XL5u?d3hKxu@)kKUY~UmoW` z%<^@P-Jvx76rH;8h?qYKK~|%-7+Zpk6Y$$14m%GHPoBx1omMEnz=;;$g&_)n`8|f^a10N(XZ7E_d7+`PLV2ga(A2aZ%%_1;t6={bOBn9#ybErf zqcKt#0Ydx|!1O@iA`hT|;lW(rCquc%L(6vkY09Va73CA9uKS%$8I)uM`>8%r$^Sve~A7ErTNzbVzJ)kVz7aW0+IO| z#&V%1Au=9HQ9UuNu+j{kMFG&Y7lT=p(30h=o(u1P;J1o?a`JjQ)0ytb#)+gdTxYW4 z_FJ_>JDy_HRi9k}5(BRY&4ckLK>`lP8uTU@RSo^k5N}s8;=7Vx-?F48;U8iR>aJ)I z?+u?h;&h){j4N8mXQWxCY*;!2rq+a%6hE-O@xZ(nD9i(30)PJeIe3bFi0Ng3o`pQ> z5q%>$URYVh#s8)(bO*GGhLJ1+w z6iTVks5zxjN>YnvB@IiHN~`((UDpXwcS>n%#?Sot& zBMBay@4&MkB#VOqMram&px*37bhtTL02SHy+|hmY9MjWV4xt!;-DjZ> z$g`T-b_s%EShT~9T_aRP_P_v$;>l8o> z{p35pbIe;&@pRcqv7b;$&P*pA$r>vZB`~2}^30Mte0-c5o501~5=9Qf4 zp#oax&TWSV0w3=|axz8uX=T^LXU~G6iT9x&wYC;BNjK0LMTpbDSmym3Uyt@o9rvW= zTz@gkyc_(OalO=f#c&+LP*9zLq(f=!<6c18>q0B*yH&!%!p1w|pFVvjdH1CAv7<*n zH|zHinpxr^9am z^3PAC!om<46*Zo@2gNqXnc0e1w=vM%#I|bUH|v7WLE0nOESS8NmttKJ$R8FBVo(Ar zT1whmUvLW$svBY}F;wnP%AYkk|6vDl4JOtfICEwr!sE=sd#oYsLxV-clc+aKZf`tD zWaz`5g`XQ5`i7bdJfuOjP3?0B|0d#GTJyHLJHdmi%R4gkVy19A3`tO zEmu6rQH&mL>m_MXKqL9?oF8gYuecf!3M#_1#bjGH88tE^-K0oaJNhg9}A%G-zrB!#;JPo7KKb1#4c>uudHp z-5t|&c~X|W*-7&|4=zyoSO2)GQ|-})|W%O3feMa??DfTs+}jDS_R+v z5?GTZB||~@GZm=^pbY8@VI|2LIjV?PIDGgpTAT-Yc~IC92Lx6-O)opDs=Gf+gZX#n zt@weF?DggV?K=ym(aTKYSN@ii&EAzWRI^-u z?a9Su_xy!Tprom|-Prbt51RlSy?#H$n!q@jC2;KQ&q>~&&;F8AoqbzTYr#B{?@>B4 z8WiTGa`symZEsDzo^eZZN(yc_f*BX9>EU6;_c0i%t9|$G6vS|l4zR%Vg#8o^$Y}GG zC)O}9Y(pQ5(&DE9r1UCS17uYxD6GMgsIT8($YGbyO9;tM#ewGDZ#+B#Fcb1D!~e8z zEUYVQ4RqmLu`Hj zG82OTLzC38{*M!IZ1?|cQE$a3PgtBVY>#ls9lk#^F zqnaLp8H27z_uKRhhzF%Vm9Pz^-W_VsaLewgalb*sIqGxF)^;;eW7YI@_4OCcU%&ap zdP)_4&XeBJZ!9BHO|ZuGkA7VjNT;291%$olg{)6_Rrk)634C&AA`Jr6Hd8!5G4Gi# zzQ^b$xBvz?ih0?un52cs^L*C`1j8F`#+ABfB=1EKH)x# z2c98VT{v0%-4Eq%=bhu{-JVRHE-6Mh836;Z72Vd zXSFF78DEcs{hZ5#ND%b{d}cNB9Xe2r;L@TuVI(k2@j0BH>AvHearSeR;KY258{{>6 zT)<~c53Vi5YQQXdkzn4)SmYKItc5}lCMq*jzPO$@p`3-}J+RfDl?dy}fe-%w)0Z!A zp$0BPdC5pQRxwdDp^P=;njZr}{WUz+t{&{rq4fX;_;H!XWc{X1SNi+=C8)MGHfAWQ zm1c&^ES+!sLo~!o_MT@FfoY)x0OprW>lHvaX`j7(2*?M(iWqf>HwV9HS>{$&WiB#`A6_pXpBuli4)km&mjdv6E8V-ZA&C=TW_`NPC9*W))A zNaC@eY>g%V52-&vdWa|)je}gP^9s_}qBh#7s#;t%70NG1AY#->xcE${fm_8wcYs(# zX4Au}E&rrkUh1Vy9W9BAjy?nt8CGN^iV9?2rsegE7rT%S#i!*hbQJKsuSa=l7+M86 zxF)n$bDq$S6Wax9L57=AQM8m$O?Qih;I!g zYinvMXyc2Xqa1~jYk?t`a$w9?<>W*EXjy5F}!)vgaL?iwtP|wXjD5=O*hE z?IZbKsFVSGO-=S&LHaIrfJwRE!8!Zl0_uar|2hXVj-^RM2qJEwX z85-(^Lr>w1p@EAZFai2#-25|1+ThpE#ZwLGZ_#TLs1_Nej^FkaIx%`@^qkzXT6r&m zO-*X|B&DSRtew6y4&WU6+Sv8@>cj*PWuJFdb+%8(mu7@|p2(E|74=p9lhT7Ji-aax`uLJYph<(6pEHY8IK!@T# zwA=?L(72dLB`t|k?27`ZW88Bo7Z)M;Vj4?@bzA?{0=(+Jcanj^M0D;I=#p4UV7G=r zbeLa23bHKV1|TpzH|;Vv7p@Ey92z@&R!uJ#S~_eA0qwug$dXT7{BZHVB~DSdz#Md& zE1-=mR)JI;2pKkNw-Z$R9Q0`QU3O&ktImAmin%wBoAI4Ib5wDEI@Todr@6)OHb zfr5P)VKTAjWG8W;ZAWh-k^gf$7VOWQAzZxl%AO>zI1^dL%rY#wdyT^uEHf+aeBQ%6XbL_X0`{l`E(i0B#S zXu@~kfE5T0L>17d!(t^3HUJMCsEpqy2c35kK`ngl7bvy=>SnyDVu&!K72uFiCWT`Kqy%iUXfKpW^enJwb|F0g1?OObp zYu2BmPJXjps9KhpbD#WkBD(xYwk3{3;_lYDpo^O1NG zUcTHuJFm=1hh3rdOusT+K#eLZJr{x0&coq_(+q%WEVH!0VXnaO^NC>pSO!zk(wcq6 z2x~wn-pI*g#>OAW(y)zyxLL_<#SrTwyF#<(>n?oXpJ3V^*!d&qLMlPc6_{?VZ9n4;5$8ht~g;2qpijyMKYjxg3l0}UByD!z!%s$fDZSJI{#D3 zUdnwt9^o&DbVm}610?$$NRX##X@i+Hc=vJtf&?h3@vebY-G8HqK|tpVc!87zxZqP0 zLUJS&yaeC`tBq?*TE4J%&P{n*_qScZ-@vFyG`g&+bVm4E+tYfbQ*AEGN4DwZM6pj^a_U1N+_Wj zNM17HeAcRX--p`mr>j@u1ZIFp1JFTn!OFSz0r;?L?cjeG$xyV)s^J_^Z$vzRcn{@{ zI7n7Eh4tORL#Um2WWG3F^v>P8Bd93osgR#>7gJ5rC+;-cwvQq=f<(xwRPKtxvKdDB zR0u-tS4$YZg@H;_U;l3VP9UiS3IU}@jBF@cU>NEUo7nu%bFpVEqGcFK_v|bIb30K( z4ZVv)F^0folqpz0M;r{%_X38+z-Ls4OCVz*q`V9 z;Ez|ovG!>(=aMB1-XV*yHR8MD?ckF7NVQgs&Gvz1-!D?&H&I4$i4vgZM^A~SK>l7tqloyaHOM%n2YZBny6~ZTnc22iC}O0GLR||2f9uC- zbDA~YXlzTXkdqbN|Ly7+gKuumsJD6N>v~_4T$Orqx)fR?A|D+(fNYfH_+*o37<{N% zv(M{gI1=iTEX`vGxqxl7r&}W}UKCVfj6R%*V95Z%jtQp7Mrm#5Dhfalmb_CZbL0~Q z3uqv%0qDRP2LoF4`Bz4;ATbRuP7XIZw-lm}%xsgH3)N4Z-R2RkIg-`@sKXxii zOi#H)UY&T~y4Fgi)+ar(!fylbE7_X;XZ^2zNF7N(!6msmuV%>C%PL4s=w19@k1n1J zSm7GN^dT`;cwo;e+ha*CHqq}M|Mlo~`F^I8w#x1omOm7~dV$S^~K4)l7_G0WzM-=5W?j;NpDDNSA!7)`5zD5_hCYqXT|A>;Hz(u=& z!AzN%nP|waKd~l@8ERxunmPKqx+O4Kj!mlIfd#J(q#L=b>Hr$9#e+ku!87GG5bZw{ zXpCkHH6L0fQlL>jD&urOMfoH>DmGSION%2p`BSl{3=RB>Rj9O1Vj$~WvolVyT)WFJEjQfBsoVHkrh`a+)#AaGk3TPKY8 z$;qALp816WNHE0i@JE*c&+^nSY&bU|7tmo}3-%N#Mc9W1vbt>3@u1ziw;BZq4sqkQ zD%?d4@GQ8}pfM2w6CPq~SH>qSEKKTuJV0PJuq;q1fJ3+)7ndFvho>IB2#z}3dT1}K z&z=RgrOx&G;K758?c!vn&>ZJ!f`pTQ*uK?eA31wVhYow3A9TzF8& zr(~lLb%h5PGe`1fw3Aa)2b{U=AQ5R8N;9luxyKUm=w%WLn zynSfqarK8bb;;ey6*@<%PhU!sFBmp^c-=?Kgq>~1IVeKvoA{=tAU>MzKl}ky~dqov9HpX^3S47S`s0C z$0l>U*_Rx3cTc)%m7#gLwaTwY@#)Th4dL8O8(74=k9Cz!j$6BW*3CN{?YOOb*Vke( zhiJBkg2iZqm(}x&hWbl(_#2Mj6+HX<=IUo=GoHtP#Hw?-O74qXzvGLW$=(pt!z(#u zy{>W{T_PpQt1tiY=fmGf0bvovci~-`x=Sdrk9MV%;j(wi6%D3PmdmLoEX?9E z*;Yq)%BWv?%A8EMOGuomhR0+{T@-ofAUR!wXbmh(&uj6>r3t9QVLQ8YUB~qD<42D^ zVx8_-rqo=aCMzpDl}a%%NK9{TX*uNMQ>gL;^DHi-fGeSLuYq3@vV+JcF;0lwKxauW%J7K*a6Unj4=r2 z%^%X<2tY4A)=u?PGwV}3o!i#Um2wIqJ@1i$JqeU<%x@ikrX>Jv!0!JLoaTI{ed^6Xl@ChDq^Cf zOrWSF02$dd3abmZf)qhcxing3JZ6trB@^=n5)u-|W350b$q5v_e0dwsHdB%5&TZSC zQ~3j$Dn^iKehb=up^kEDnIMk`8ip}Lpa9C$u`P4_FeI*TyZ|j$)k&oYO_qQ ztG*_+P3lw0!1Rg9(!paVl!p^aEf_kPFe1!CK(X`tl~z}kXJf;s^VU#!JwIt(Rev4K zmU3-p;-`75=Mj7&GgK4S;+pfnjz>nU*Ec_WNi%47mukkqOr?OLqpm$27Onq^PNIjE# z;^z;37R{5H6=i$Hen=;u%rtyh@wAW8S0mz~I46fn%Er+=$ekcOs%Q9wOTSEHIe6J#V*o zFx&X}XTM`zyBA+!j%(@hU$54#5vwmO{MjvyGuujD>3Kp;*>6ut^~Hy`ibvUcH-Bvq z`obC{BPNsk(9Y?(-orOOzan4c36=LY=dgUvmx-^o43AiddUfK&qH|Wr-VVqWD?nL4 zv+I&Ss&~qhWO2;Q`y0AVEt2j(MqBEzY_K`IzUbkudKn)@+)S%Tb?lj(fdK$u#{1=) z0bV1J>^>P$mf~e()MBV}_REOIgXF2Aqz@M76PIQ*U6IdJXr)tOsKhxle%>pu_WMyZ zR685qd~>9aA6JOcE~b4uBywFz5P@E;-H&`aY}w(lZS)!`m2*OEA_@?(#e0+(kh;b_ ziCvT=@i4T1yz;y7_5f2p3QRO}ll5_Pk0dirq+UWo&H^_!r3@zlA#F&y4230}UKb0YEW`>oDRj%p0g2c6&TqSdFrS zpP$C_J!hS5vkwN4(!OdBsP5I*N0AC}M4e&*)h%C0QgTzb!obzReze7vKqb)fvg6Q% zhW=3Pr(SJ4yRBJSS@?j^ijnDWcp8$D``!HPp<>CORUD!V;8}H>&$|it6}hO}PF*aj z9&k06;q#h_`5e`5ynGX7*hAc4AHT=YCH{N^#>H)0oJI!e>ti=NN^O1r_TGumwuItW zjb*7!A?)xheeQpgVtr`9()5HX(}bYoE*@&hGhSi2!I5>gPATdU#^&xx7tZCYp9s3( z^iANmjHlSpWc1A`Cw;f`M&TO#uTJS~7G;x_d?t2YN~E#8*hcwK$o7}nEg=U-8z#!w zZ%4JZmEva>Id&WBmA0S1XGiZ^e<|e4qRc}AbJB;k69j%$;{=WU&iqFK<^ycf4V;m=Wa>BTUeHn}NN*!j3HR`t| zi=^LOoueMKo3X~57nLRKow3O81Hsqa4L((mKIf3WFEzF;%{ zO(o=Fiw!KNBb@ca{r&y5Lu7eYNkgGsSv2 zQSGf{a8q(f6sM(Wo1}+>UK3<(%J&I@YJrH@xbx&g<3O+#TVsn~HuqH{Hk@C|JzG@;ledPEg$A}%E3y}!EW!dCa%_<4Q_`ky{sI3-BvXfh>8Yt(mdnFC4!d9 z8?Lq)UYy{Xz9;73=w_y%rMhDRrxVyzn;a@rt!FgMdc5wnrhM$Yuu&nkrGQ%V!E0bk zOT+sgCn$bH7c4^J)}8y+t`Re%w8Q_S^!?9+DVrp_{${`A>a?^;iO)o9q}e3cu&(l@ zT&~bdV>XZbec$J8WB4x1rkk`!O*Fl7wX_Wl@EP8*eqYq8L&oJZ_8)kHawL}>UUg#D zqMYWD;GrW}VLq|vKuSeVmOy(kAJ<7*Q_cqGj9N~$RFk*Xzc>_lxs(2C7FyT-*qXO_ ztBsSbCz~q$hy3$w+Alfrj^D8!Ln;gL4bgHqXR#l_ViW`^C(wiDh`XVJsszC&GxD;s z#-9n&c$P0Og{=D#yzG?aarU5}k^+SYNfyR7IBXdOcT8e={O0GT zw#>Go-62gW?rrC}S7V0pI*E2Og9sa*&2DJ5Jbd!xLEwFG+{EYResSoOK*%ek<7m>7 zlCQPeQ$;r9-%rKaO62*FX|N*A3pkYr$ok3V_PGj4-;rf$g}+Z=Olv7P>_^3x(2H%@ zxN!t>P;_FGApgb=UCll)LpC`=cpue=X=f`DdKwSTLknt&l2<-PoBX`r{Dhz1=E~L> zblXtEFi><|AzV=Ac$H6+0^WxCE>iH&;7daB?z{U%gUuT&8IwD;c?3ZKrVn}nQ)Wio zl^~6u{&2D`1{?+uFA}tZelg=K$-06h6xJMM9ACpEu*Z+zq_Y;FW`6s2KbZ^AJn#f< zfy3I~G;L6T(5is$1&{)Cg16Uu-nxDG)9)qf`uafbz!UV9=|h}L;+=qLJ)O%F$>^7p zkwHjH8AQzTrS^r`S!68o#d95o2IAT0-}y_waC7$PHZTuwK$j>$fM3Y?E5O} zaDK&@uXu92cMQwmvX01>=iA%gq$Di*YB=;Tx9sOk+_C&u((kG_t4Xv(riZ`!H265q zuyk;|u=r8K_12V!vAfTG`L*tJ^>R6|m^Q>bpK6 zBK-V&g4wz)9etaRfPJf-A0;ym7TrY{mWPJ|fPG?gH*$X3xF@K{8od5mCHLpl9rqbaE|jmE*y1JmJiV@J z*PVunVtF}l#SNdIf zwUw|C3r7@dw*+hC8eVqg+5a2hZ@(n_eX`aCzZV2cGoIH za=h?S!@;8Q?^|YBR^B-7BZx-#^8T>ba~AEi;~9HytDQ0k2;aYgolEbl$&}lxTP%qK-w@SGjf9k#N0+bc>?)v6Si z^wBvi2`f8dya`bloqOQ2)57Ki5r)2lLHEUlKQ!ARVf6UZ!@iKciGT4txViFC^e?f$ zjI9NS{}~WbzW8s9>jMIXW)zkNT?YdV$U8l5H+P=dbLqm0-(iI_>%{1>pP%QvVC`bl z&f*|5FTBGK{28lpsrO*h#BddXBK}be3ZBMv$Dac`|0OoLJJ(9zyK`sEbsgqdQ8Se{ z8!r4!P?7pSd^{+>AeFbGVMqQWzcdWw6&rw%^!yPZ1meW@)s8P_Rj~5f>*B{9N;tZj*q_x=R4k@T*2Vju_yBs z5;DRJR^djx=v47CHR9Z${g!hSDwm`FmfPfaa!<6^uZfNOhWckCB zcp}soRxLdkb-Sl}wi{akoJIYFwvch#ED{kE3$D?$XXd?rxQ<`jaOvhHhE+Rxx2-#? zxmG0iO~`ltX4S;`iv!~oQ6Jon7`@b)IT+26eZ@SGT-7ZR3YI@?oQHa%rQ^)EJC$+BJ;yP~C^(A9A2NuK zIL{dnAw7zi#Pi^$IW=Pf%id5Cfw4fPXv%;QYFo*wpxZ#HwpC=^WzW~udiR}ZH{Q&(MG zEkLQNtrc8;Aq^@RVvHn0(9_#r_)NQkqOXK%a}u`NYM7cxq_{hjRs<;`fjAH^lB6ow zdw!KLaeV|qOTwEuIe);~hWuXzh8aM{7DSCZKR3+)h~;*4bTy8{@m~gMM(;x5QnnvQ z-1HA54p`!#gV~0-B;c@kSUiUpe2#Ai*)bV?1-mEl_K-L_EHpsP^W&6xHCI>H;@Zi> z-OxRSX$W{+f`nK`tBY79kSxeZ?L$P^+RO>{CH|;ANn$+%$SQRYk4gW=KhX^%9=z5e z(zp-^rNa)*i^u||Mrvc@jUWuyvy%A>@Vi0LuT}UAM59T9Y{_Qn-O);ST~4zR1EOqwDyl9 zw)Z21uOz(y$RNxh3CYRV5Mpo#BF>l4mkPLdFg7(cAr_kzdi}__*`Jo^@rkq!dX8rE zlJ;f=L8Nfko)h%=zMSOC0_ek7GPQac{8XN?h!9IX-WQ}${ro(N4Nj}VKZ}8yAf(ll z<2&mat(}NAU?(xN=&trKgmx7HP|QFY$fQe@JX3}9kXj)noO$MmXAC3~pt2cj-D3Jfyjhd zEWtd%eL4Q?GOy<9>t}TT+?}9OmyyquM7PnTv1DXHa9)lZ}4+cnqK zU8wC5mXWywa;Ze{JJ2ZxT?(Z=wFN;Ez9ZKu!yg=c!@v&#hM_~-IqmUeb~7|~qtF`; zBWnR85p~GOn^EKr{B}3K#JdG8m@;Qoam$|xOM8q$uVe-mA3?c{ku`A|dI4ZYB0%N) zcLRCzw*z1`{*;NNmIF+K+jWD}y4 zd!W4)Ay$3XZqTxHZZoZE?U&b=vF8rbAuVJpw;9wxs?4#D=H!N8{5u+SVGRpC)#AaRCGl$6n z<_IETAXFT2)#D?KhQ-ZXiklltoVrPe+WjWv$@m^%^kF7toO|Q}t!1zDJM0)VSk%75 z+ABf?hWTzoje#P5n9M_Jau|%$z43dZ!2|b3_}w<&X*=?3=gyrhcVY_C&kaHPNA%zX z3W5E<7Qq3H1IXRHq5*;qf$A+zmFpG)JID}C=$l_c6$mTVcpTA>dXGl6p9UWbD4Ne7 z6SeL_SBpS6spv$Z@*qra(!{^SNTYh{Y$s3g5_+{4?4L;f{o&O<9a}Wm>GiUn$l!^5 z*~bG)r$zLyt$eoSkmEFFs!}2co=$c))p=t11ue6J4G)8 z2~PyReb1EnGkCkclSminq-L;Joq=y}%CZBH{3MnUnN~DD;0K_GEOCGT+V_~$PSzM~ znuy}G$(beq(8D4hOUnmHIVABgB%Xt8>j>?`A+WJS$!)OZY3L`d{rlG|DxMr#TVOI{ z8XvOm;NM?fieA)OChTr)A$p`N@W+r*?(%c?*S?3nSw2-;E3%k!t~gkiX@19!eUu`p z_dzZ}!ar(gFI}9N1-Axw^c^VO7wPGzG<}X^^5)!TC)hEBlzlCSyc28KXF7BayFtsz zT0k<-d*|aY2bw`gdHiT-rSF2f+>ds${nPvqaDSG7w(Oza-rn)t$R{J<R)FDc{`bDq+zf*~NvX+wSFPV0bb2V>cdommJ*4kS)94C8!0Vql;F z%`D1_A6Sn)wv=hU;+byA$tG%11qwXGRleOuH3_(E z)}C6?v-lo_Uxvt`64VVru=lyU%j4T31@|__Ngg?IqG_vPD@0{>q(6rH#m{lDMS=XD z$evh(^RkX_A+`;o?B%;w#cR4j$987gOmXOr;_iC7*~QD2iI;x8QP$df_}Fy~^EYW# ziod_QO3wQ<4pKhK6z!;~C|+y#<{SS-HrF~2{vaF1j8_)sj)eSUTXuuqmkfrNXla z^4SsDIDCA3*h!c>uUc9GVSh7V*~kImAoFPppgNxUX{k!`ho_v#TnJ)pq0$-z zj|{v6Pk%heejQ*=XmH3>D5%e1REk#hi^XH+gt!QQB#nK;jz?6CWai=wmPC)G>hv0v zSW{;W7$7P*g)I;j1^as!+QA-~H~0(B^{O|=_iF0V=>=i?!!D{V&RC>)Zy)p7Uq_E^ zlY0|6rF2O1=6h9pcHz3Fc>$+@Me{qQf+lz_jZXd4{h@9wYVI9$VJLJ$M8wZ|4|kss zi?5t?uxd4XVQ?6KE~n&KrJ=tS-U>cZRaL&kpKxf#MVoi1W>lwA;IzL;#zlH%$f*J; zk>H5s>azvDcLpi#cNc)}kX$GY!MFF2C6lv8kHk?SlIK|{oggw-;zh}|BBAWj(b3kfXmOyGTlT_A{L8deyg&8BIYXK5IMDt z7aC4l7H7=vJd9XF=rd*f2JEC386+aq#~3qCRN^E}^M>$!xB|;c<%&i^eAi8A8gbO~ zrC7D_Iec>rW9?z^suk8^tJPlm%~GWKspFXHEqXt*v~?*<(aZF!fhx9VEKb*ku+{Q> zwRX0hDGoeIAN7Q4Tmsrvf%zbp>ZHC+#uNNJ4SoV)e2^Wm>OOQc#Lx3RXh?P@&fFwm$-ua>UW zg%-@kWrx4OBN8F?DPMA*APKgB8Mp$=`M#o?1oXaTJ)?e##s%(VU>YHUu{APg3AhY*l2*@3`1NkwWnH- zRL6|-vn`V?zB(i#sbv262tc>b={qOfD#XDV!)pHyafmHL=3JkVp1^dam&N!9uj&B+faxp*9ZN?wEd}sa>}GoX2r2%kQ;NOLgY?ToWP~$oyIyL}cnw+3|xyX(}kjer%>pvLO?| zZ-)5&VM0VZD2$LIDJiKL1b$fH54}+n`OhEp>-kAkxx`6{5VJ5r%-=#Nk0VZhL^kb4 zvH;{)t-t%C`3!<=4I%x;IZIq|TJ?)8N)gmW4XYJEt}DshM~erZiv;$d9?s5|CEX?g zib)I%9Df=}3ZvtE_Xk&(R&ZrQo7pb2HM9S`Jm=R zk)>do>y6uhe1Z8gh?8flB)U!{Jao)`xA#?R<)dxFUbI%Dwe1@BJ^iM<4`y9YZP1R5 zT=|-MF4DRtRE}$auhqFJAIJT^~#Yl$%yR z*CyVh+$*_85+o4i7b5LmptQ>U2*h=+m{+_CPROX1p9O6nmpNqBsZzc5>j#)6FDhMV+uc6PRXZRI=y zW*d3-Jykmd&p}^3(W0(7uv&bGDD{#1evdcXqTqoIh z#?*{kr`v5TzeU-_zUa1r>_hIDGF3)u)USMuo09?`3-5{ctB+qH8@ z>Q&AqUhi{$9I+tnm%FW#%+Xf8Z`IYvyqPndOJC3G+$4R}ko9Ep?A0qg`=aPI^88x` zLRiANa=3nfenro0{J`|?SatI2D$AdY^KxRt{Xe&vD41J%4P35#`a0yf%Yl{aVwdfm zn4soQ>X|62FBXX6F7M=BF<|1JSY4xhKz6X!+Tz@O)r0eHb8-jTwGygls+jq=+J~eI zEID*V?mqQ#W|>>vP2b|4#K7Sx1&v*Q71unS{-F`IErspzIxMWl_jFSx)emf?4<3ln znHDm774W~gMF)2MUHR>K^uL*xY5(JO&)p*2 zr{GejxR8SR2aMdk?GxXg{~|JjmY;pJ_*Q4X(ErI7cH&rw!Bc;J?HZeP1MzBK;$|{i zJIDqEaX-8&{>jPUf8s^UjMx3?FVpTX6d$V~%~(4qzQjrEw%5U+hr$!#+;Qn?3471% z$IkTUV>@x=ZSo{o;0=hL!>?bz{xl_pzk(0bePyu=|8s9AuDug5$v5s*d-+iRhzZ=e$TX4PEepEf~=M08_5*0EaS$5JEz^rlS z3d=toFt_mQprv$7UxD!Q2Rw0ay3ZNcy@1*M;Jqz<#ux+X38Kj%f>@>RnD#csan`yqzrbkk=bDL%w$R#X6kJ`jsN z*b5~p8+c{3E}jaL|ncZ8cw9ptmV`w$%cq5 z>cejj1HFHjORq(_Qd#@EKIfM(&n*v|NkfML;T*0R$_l_kdL|~?@af>$XKZF+Wp%S< z{`Z~U9!^dr)>GB)1K5Djh;^@mzi2F45?q$MJ)6{gLB<|6W>Rgv9y-&yQJvp+; zTn(IElG6*fE!P#7naoG|`0?Ym7Ge!?TE{2FIDc2(bFBAf_zR3(wx{7-q5~{d`F;i? z{ro;)zeHeTePbg_3G(EL>4FO!}Yo`dT!~an$_RL>$yMo=R`xd&nU5Nbz1n-2gU&ul0(2;=p`~VaL zDsiDWSs?8thIcW@oS!~D(C!9M9N7hK@;bYNmZNgjL$zaM6dfBahoNB5wjelQJr+97 z^p$E4p{~UBa2r)CE1UCZ`beShLb(2AMw$$WC)J9wbZv#ULViVB)#}JdfmW zLQ6%&_YmhmpNyv({sg389zj!%R22}mu(A+O{|!M^ZN!ZxC*z(3Kd}ym0UuWxfq6;k z>4}ihLu)BW{pQFG*(Xv;(Y69s=j?gBn!1$ipPhV|i$=x-A+E@C+oEkK5TS!XYbYcy zf1kh#P#EhX!4j)w+@IpP^>XhZR>B4m5gMbPx3_nR&tc@>K0T7ia9`O=7M?3eO2?+@ zm~f4_EE2AYUhDlGF-W=J>Yj3HO-9bejvcFdr{^#WQ3Me(D3*dNmOa!$oF=SY2vlTz zkUV$c14920vWkv3g|*B0O-02^zj=J?i9e0FS6a?i^*}-H1cN`)L9wjGh@{O0@3=<*>mk^k_%B^JLMKw#Nknf}HZsp*R zh(ZL#bxoWqQs$n`oe>ohx&S|KZDHG<;L~WyA?Cms551L_@t7=ToD&_Q4$AGF)?qPWIDL#4j}mD4ZlbM9yKrc7v{m_vyUKMf3th+P?$d%vI~eN3f6 zJmjaRcdN+z1ulrs${T;Qr05C`Hp<~sAn)VbxF_BjiY7>M7TtjSm)*a40PdnwStnTC zT`u*i5>_wB_7Hl^eN~Wz-X>Uxonac2yddH5rzB6~Vy8{U#Z~|c5Dd{xtwHiUR zTkz;5(gtaB#1w@&8$^dBxPiOc zCxD(j2FQgNW_0J6ahdS^Ik#3lo>gU*S)avCJUZic8DEo9Qu0sx;5Ck==*JmCV)Siv z(sSK`_2oTkSIC%~9myEa3k^k~1{T#ds6%KJ=d-d=D#69DQ2=U3-_||pBji~JD-9(7 z@WL}rT>W~s!afHd(;`FR0nf{nno6sZ_Gw-op2T9fowe`*v4{DquD|uIsMGWG_6Vrf z&H&bhw1df~T`(qM26DKpEd6<-l(aMpYzb4pd1_zQMPbjK72xFJ5`l^tM>80kcEiBy zEXR%q_2^jYH;aN^L?DFLM?BXF`t}H> zsr@$lh00wvgR+6J2inwY@x7|Tpo7gy&Z()rffWiz1J3>Q(ret*_!_UXqC;DS(hLlm zXIBXbr0LX&lsAZ@RqTje*e8UZe?41XQSp9wFFE#uY=hV_?jnfRf?X7Qk>@!Qe1zS^ z?j~_or=8#KOiB}f>^YN%R#Mk49DRR|{Qu8dmYez~%zdG*2(ta3+^6y#`(I+UG5=r1 zX^aVIR!+B7mvT3~E8Iv5>4QPvgq8mbiz?sI8`=8}gC=*bzOF{WM29D7Y4*If8!qKW zB3@_l*kI^)0knIhj+wG8XP$wx#uU6DQpy)!z?pr@WvVuxMFqTvcjMMv$rsO)YjY34nc<^=vp1*BbD2NXOe7#- zEoY^p{(lWZZyn0E(sspSOpZdC7nm>3K!#$X4l|^fU>Z4iRK^Yn$#7yGbtyMi|M$~U zUoDq@tE2lZ6 zzOTGzl!Go$Ez9C#4{#~W=W}8#uJ1dISRmm|RlbPi!_I!6i3)QnU)6L!!Z}~l9MxYa=8BYmGl_>utLE<7I!}K39!SBKn6d1Xk`Ld&z}xu zk5O@O#qw2}98WhZQ)zuCIIffymi0peA}HM`F%PPG-~B$J7}$y+^A~ERpJkKm$+V`t95Q z!d}YDPR8Bf$U^6hIn{-yZ#=*jdF1F(nbR(xgT;RjZ7p?wwrI3wkBoll?3;J)VF{%V z%%(O7c3l-`P?Fow6&to_6VsIyckkz{a#oC;t&1voaFH7LL^NsK?tZ)S#U|fVGKsXR zBO`~_1q{qLU+NqYN&0o@K)Fk^%$;Mbyc`|BOqCp0AE}8DQkfJQ%u4l@45so_|H%MzQ9k!0@lHM-;tV!tR{WT_5l>J1x!D&rBx0c| zPj7!H3QQ>+^$F1AYM!Fu#he04`+a<7SH;!8DKP)rvGqLDmA#MeyRBZ-5pnAh?cO_4 zd^V?^kyF#HoJN$$i*j3!wHqwUGMk$g3QkOBHJSr(0!(9onhohFlSGdV>L!^EpY$Bt z9lUAZJ>6ntearvR&={ov*}sAn2Tp(n8k!wAR1fN(Sfs9U%_7ah0_0 zPkW!QipoplK3p1bQyjj0!qL}D>dI@rOjGH>%Uv&Kd|9tGUmxXPHWD0Ce!S_+!2KV^ zKTMOX)%KRT^c+$;e^|;vbupcvSLw(Ky-3Aji;bpACJ%=aS2vjY(4-l>m&-;^wE0^| zpK8;SKi%UeMq&~epqxY{3Y>^@Hmg?n%LHCoamVuJAvfH$(Ro9Exy_7a@5G~XbSkIR zIc@CtYZ{K!{q2S|RG!m%P47x!nJ2 zk?GsilJE!yW#*Zk0c^)sX!Ohn__rUUla4!M$QA}1hK#`=R6PU} zxfm-z2EU`5k&%%haXx?8H3XWB-5v_-9O)~4CMnBIIlS^o$SeBx6}mqq)=pGk3|jyB zCCj0c+VSq`&rXpTCh$b0I)c$#6wm*?s$^I?(eNGB@6K+vCxOEL#moCaAi^u#-!lgm z_I6ZM^ASCsn!48Wy6J`?^uL6MEh-Y$91Wg6xNTkjw!bTQ)?B*BePd+S+`zeJkJ0si zP%vInfEQrRLc)S5ptqnGBG95Cr`5N_6$)%rj>poBuA%^g%suPG^bW!Eu+d|all1Roywc^f2qw}W|a(#Gzr3@buOi|5f^*W>BJ7j06iy5xtmMsXcL58G1 znmkxMN2$zVnNs%w^F6Wc#r^w*3i{ zWqPj?3@s$P45k)yJfXx)1(XItg;@LM8br5Z#ms)4K(FS6e2)I~X>XM+tE>EPTQc$L z=qJRaPR#S$yctPVOKRB4Ta&}k5v$5scIzeMx|2b+F$DP|8_F~3FPJnyT5_<%WZW<+ zQl{*KXkD>p!49IFr%Zhcm+&|nP^yYK1fxVoLY&;#-CrSseiCdWDK_J#y`(#Zq!!g) zlv$D$FUEGQKIBtp36IV0*>-J@t<_h~{Ziu9_rA58hm+f4uXQ#hFIJ<+Pn z_vFsaBnS+11sEhp>aG=FU{6dQ2?@!&eS|?`rsfzqx%JgBkB=lQf!L&!xWbeyBqjBt zIbn&Q-;9(%XwNkoqp7@?kivsc{kxP6LM0^*anTFcEWJOMdtUebU*w5J%l{Hi=-tYL zWG4YH?$2MuqWLGrEJ(-|-fql*+qL_GYE&UI;Vd!`nWAZBl{EJ(^MeHm8`7!|f?FIT zWH9Dr(%Z8H^YlO^8U;TfId+&Ix`~PiRDY_b@VUN<#G$Ld+kSJPGGAdU=9Fm>+b-Xj@);YU7$8EVZP)Zmb}o#LBOo$78Co}QNE_#_rG4R+(r|2PY`?YQ2WuVDzgk*C@p`(O|mz39cF6* zE|gJ6mR`*QK8OhUb*~Dbw!`S4Mzq2)7;V56Wvh_TVS#Qq!@S{55z$bQZ@)fly*;eX zS8Ds3u7Mhc$(ZZ=H(nU`NjwJl6fZ9|%fM*EHdxFd^ChHhm^%Y?4O-9wU7$mjmILdr zBo{_4K9o<>CuLy zW_)&I=m&sf!T19h3Vb4fp`;sC7SkMILsJFUv&mwPg8gvqKx&X7x;xi1qaq$X>Q`Id zuweim%Fdo&zW}!VrF;Uiwu^tT4!yC^2pjQ8%BNwMS zr0;4UGIhMrqV3=1roKp&cY7VB$_zNka0}l@$-A9JZZ_;d03+E>4qb!=*uC*=p`gke%>k$K&yJ7hjAA>3%J~F}=6=^0TzYtLX4=z$Bo$rNtjl$)(hlP8qjbfq$A> zTEYQ~s9ND?iwyYqC3B2V(A?@WT0BQ(FADSzI0#yI)GOQ6_HU(WkgO?`gs`sefD9a% z3=xyy(ZNh0b^Q>}N+z`G_%38=eYclEJJtmhk5R$MYLOQZ3g9=mWO}9<4q-1lChG-v z^|8j*XTnZOKP=Gr0QZ6UsnmiJ=cM7!?@Ef-QK=0rdw_sUdjv zz)tGO@=1|`%t$%Y)HnQLL1T@_URZqISeUtX>(L9)Nqf(`=CoSMTj!s)r9@$5Y@KpX zs?Te2o`QxxFSXWgTLRdFGs&`GKGfi?2Ur}Y-}wH61SSAI6)nX$?J5o{D-+MD zOv~0L+Fp$3MC`KzT!rBhVBI8K2Z~>URm38u?5mHTn;btd51DkGzrTh(&khU_@)mAflrMT^8_?L3gU`JH6-ns0-14;~fx@ zA;4?a9_u%Ofq@4G$0k1U`svj5vyQJ?{&~hIc4>I-7G`melit*yM_wH3w z$8SJufMQ^j+J9?xOd@O+PivtajBRfJE2Kgha3hJZg(4PKF^m`y#D;m~2!~Ovub*Em zHUOwxutOmU#~m5qM9&BjHe2j)uRyKd!Vumr;{8luew-yFO9ukuP(?3=4$Uyw88GgL z^Al!UT~i(aRpVvx;kPdP(`gX?7=G_uik|LSwlh0c%+|n2t|uP*PcZUjK(UUdkw6U$ zEPaC)KEkCsIy#=_?)P{z-R^-PJlI)k5N}-~DDr3p%k=?LoK>*6B03C&#ALMbL|~Yi z)pLju202h&Pcu*BhQ_adOb|$z$3f$UYJpl69iNosHr|Emi=>v}6oxq^Z0c=_Bm#g(1C1RuC(d|>4jl@jcI0p5s!{Rkh)aqFM%s*i#~JSw3!#SH_r(TwmZqB&-?HQWY2MsC z6<%qCxg?z7+wLCJ(pryih3_h`9sE*3MMcF9C;BBmKEBtPnE=b7n*233*O!ol!WSRd zCbt!pTb~2X)E-J`ZUCXMM_LcR2sD*&y~b~5LzS>F$)-OpUI`rTMimv4`h3Ld7nKH) z4{AioB?PJT@*eqxlyFnijnLkJ3B=t4`3KkqxFP49ohwv&*vC<<9)M7Brv8zPGW;~GV@`+!h~DD%@46h$zd^Qkkt zfkk1 zk2n8P8Dks3Ney8A;g6W6=X%S4oixuAa~sai(OCFKVb4w^yAEK;#Uda5u_Qs zSxYa7iXyRq@KkZ8uJ?pDz8|aTu_x})XjX~)1DuEq5l&C+_d-Jx6jN&Vy%u7wkP_4Cqn9ZVN02r`{YO9J;C}+wvpzDK@TuhWDD4~93K#8 zEgq$Vkk*1QbKSIiwdiYoINLQj)-9|eT%|pP=ByGN^3v|liLRpZWEPGQU73<%^7$+l zN`pEUCY<;>pbC;_K*r}KGRYrA2bxDFX+Ue>Emhao$4yK}f^Ec3&Vb3zMtHh|i5DlJ z4bZv{w3;5{YU3g0mwU&!QZX(~CceG+SbUFexA90_s*vV z%`COB5CyYQ7m}-ywUn+u`&sEUHU&I&h@?0- z!a^kng|hak+(^X04K_E=NPS5YuD9vi+|pySjYX>Q%+7(5oll44niPX#JE}0A!oBKq z(ZuKJ_L<}1H0Q2&)|8LM92~d5*Bm!%7PZ=UN2hyGuXnO@N0JCl#Uk(T!XlgYRh*iq zFMdicqW?N(vX#+URZK3;ZQ z>$T`kwfpmvaq`NKS@e01j4D<22emC>TA!yNp?o0O>fP)>aH0$kU6nfQ{Gqb)3UpQ8 zUYjpmy!aGTLa4t-Enu@oQYs;T0|D9V1t&`>NErBDZ)ZDv7e#*lrgxpzOD+%lthkn4 zMU90n4gV7y8;sO2dyPI8#b769qNf$|_xd|w;ekX2Urna$f8CLSAN=T?jPa?SU46DZ z{>*-)A^xgKw0F4os3FrZLFEY{><|QA;orV}vy{IZx#)GwwpRT4~>BQe$;x*K;ujN&I7m=U5c(Gz+ zzY{+N0Rec&cn%H#g+tb=ywINXu;USP^Jy{C@+Oa-&Z+K%tAm)Sz@*Oz%3HkfX`!Vk z=O}e6CSi827Go*<{+DFXnyI-`4@ZI^jCC zX5K}&Icn5_juRS=NgxLS0%7ZR>bur+r^$s)*B{nknr)-)|p8`*=6zOMN|L8HAK?Uklnz;ei}<2`HI7 z3QDh#qFYHCM37&}_Y%K- z4!!GuF=4i!|L|&e{)JGHiXX$yBom;0o<4!a20`ip&DAvt=^@RSh=bAakWK?@KL~Dk zmY`n3(N3g@tJL`5GyxynRm+acX15Mlo}$|;Y@!W2!x#X2E%PYo)DFfpxHv#BgSw9l zz-AR;u8XKDuuW~W9-fkR8sLTG2*=7b0Ga$*?`&KS#2JYdUy)e7QZl*r5GMh)0>uVkvmW_b%PiR^V$aR{;FTPcpD+JJD&|y!{*4p|&JP)5ARWRVdiSw- zy-ExX_$H9cRl!^)#xEj}Y2Ms0b;B!a5L+XmFh6|w<&YbNQX6L!nuSgj#2y7+`41h2 zmjxBLS_-#;eK~3Wa{4-oI2-N_K#IDwWd^Uf8d}q5 z<-5SBfSyRPzMIGP_Q^EQioRyy{Ny*gAX0+HV^Lz=UF;FWw#DK>cz6YF@X(Yy7zz7| zcuZ@k85tSvANU(My*ND4E%V3Dz^4^LWV9g$4vXe7zsWFfd>%v=YVZVwm#=`ggON`M z)&a!6f0i|MoWRaIJW9-*&T~0CTJ&8%sZbH^W5{BVZ3}uWO>-2dY9a5f> zU0P;(NL4N|6kvo7_2QxP=Xv1weF^g`Bo_legd`Hbe2M23vKN5N7f8e} z(im_j#qnz)$9*DTjydxA;G#p^7D4EtZ~}{u z*obAYFu>x+ybkstYyo(?FJ8PEn$3iD1;jyEb#U0F2r>1ah5;~IG#L0n(8{QMV)VpP z6tWPZJvHS95-ZP?!k}g-t8-a2?B%HW*+O=nyG>s_%W1byLR}9JSkxuIs*IerKDNtk z#ZrN9a@20lCzut%k=mEPFEUn$0cv?5cUE%M5&=)1JkfU}=iiO!Y0(Y`z#nJnX{;HQ zipwv*NwF}Xwog&wOi^p!d;ECWB+v2baEC(RE*NTC4Xab=P$+{2)Gw8O6}Hm6i(=2p z#B=l?p?+AxO8>gVC_R)Vn#Xv0+f{1wkbX?VVL#S));Vq(EE%sCO{^-H@3(RBck{DO z3H6%`4nOW^E*ddDzip3=9YbZ})1~3NzpnKBmlhzEPTNrMepx@ONYQvjdP5g;Z@{JTfu@{V?lU zoQ8P9zdWfQ9?8ULhq@*FS{lt6pqeX#gnR9)0iszx+m>OjU1aOxl1+E_A|`oT3=FQg z$nj%tf$vpH-;CDDlLwC+Dc@3c<;4O-Hdi~f(u*oLN`iP6%`?9psZvDhGt~>0i{OL4 zlgQ2m`()?dgm`DPe}64s9)kwHSvMDLZ*px>#Hz7ohb7*Ksm2z84G?N0 zY((fZ0qA3F@wxJ>B9w8Bm{)K`3>29ujPd_A})|9EXdZZ z{D}!>>a6*2)3_rYyF6mF&lQ#duv|4cSOSY^;)3kyS)i~kQwX>U9zlHU!}|LASXowA zw6wL?!kZl)VwigRBlT-DJclu)O_xgTd#k&Cz1hfR_4g{Lzk?qXOCDU2xcw!Cd5w)o zq%XB}#iE##4Y$Vv7%!a84OsIfYZz-VrNT3XQn||ccDwa!UJ%E%M$DOt{qK1MZd>W@ zihADjM*H$b4^xi2Grhg*dCgqYDp)wo?(@}kT0PThioCG*;4sH%og51=$m-^UU2Y6S{CFTXAowH{Q-L5moK;7t)^@izOfw# zYWv)PQwzqk@;ws@`Ln6dI@JA(ez$#9$f~(s`K_>UWwV#X!;WXsKbk!05sC3JXR7Kf8Re>00;k^DSX+~Jwb+4ZRh`ZVuu-oSa_ z0K4+dSNHcHJh&#!%BeiRP;pPh&wESmtxjvniw>t;%6L{$+Piz`+^qIs(J-r_wXP!5(XF4TW`CW{ zXS8#uImz1>#~aZQ^t_X~2j{`jhhs~U+OCyPO&r@R5>d_CG5=d~wxPc`b;vB@)a`2( ztrB)lw7+e-kcx$81t&znX)Ohnsv)IwV`gW6Qj&FmZmv`}q)in)QeQSQl zc1QK_)cXgdVRxZPd!XcEr@URmW_rx(akYqGwf?}+e(pz=n=f?xxC-QaSpQ`EoJGw8 z`aqr5scDZ(H@yI|>X%`Y0ke=^`K)ltvL^Bh-00!Qa1O9I2wQZWLoIeyHt=Svusjb! z_u1Z`A6=6K_)F=nT#q#$bj%MFs2gk+6r6jcxp|gjIV^0!6IetUWZQOMX-8`AGQ_Q8 zN*hDnHfWZd=E8AnG+ zP#nFX8fW3u;R@8GlP49Ktix^xsK2#oY>nKV98J z=s++qy`u8~)0m^qX{>*ThL&Tm4d{Yo8_+>xOdH1jE$o;3sx}biE7W=@&o>1R9?ixx zr>dPup_Ex>bve!qgdasQja;(n>FElyctyFylrLIUx!L>zoy-7tIxsktnK~TRYAFN= z)+g5N-ou9_NLedFa2PWKuHQQ#OZmMx;?tdnFBKr|WkShUP$6;3C?e#PFu87Z`0=Q3 z^ui*hcE~42)pTu|Wnl4nxASe)hYv-azxZUUqW0O{hI$7;>PPg4C{2dLw(|1xe@53y z25EqX%5x_84njCj^6x-Hq=G2d2tkOXukYyL{N4$-p)uJU({_Td zqOwJmhdOBltoC9w^~L0*MXuOqc&^CQ#`%u202Z26D2P~{C~%EkTr!G;ZjyVbNW&YA?hxDaS>_=GJ#KM;fMVT@5on` zQnRyu$RGu#n2wazjAk02Wg+Y#fIQC5&ib!nLc>>uDlq$Jn7Q-MP-Fj``N^R957!u( zW!zbD?%^vqr8Y5c)X&#G3v@M%7LYLpCwm0bx2@et7KX=}0|%}RXK4Bl`T6Pwf`I0} zL!a^@eRb3abD2Fa1zm zvj|syJt{YVwX<_`V&QcLI|?dcv6xvsK|#LQ`IrCkC8!pjTezB^?8-GtnVbg3TxQIV z$pxF!zWZWdk@|BntAif9$}q46TiQc;g4i;Ta#xT$?oj&a*;avU1&)qzp+!%i_W{{J zCTzCQoRkXHFm}vC9m@$te}iVnwPau-*~$ZhCZ$NLY3b>cX}*oSGnrDh_aL@KVe0)k zC>A99paHQzqHmJk_y*IR0ZIb!G$F)4S|`A7hUiSBc>^m7wB5!M|ChbeYM{h(n=s*d zh-YSG&Ka_I=~&V^DlopEX7sK0$pG(1n)C4o)h7&a`j0T!AFx2uOnkQW3-DSRb&@Yp!|f z5LR;OB19K}o)&k2PlV1CGB6tU^^Q|1{k;3dy>!qtqvQq4#D+K!a3ze zO;4W53`su0IKg`;UEL-uJt2%ep{?zttax8l6Yhl@Fy`Tn`FpPXXMDQ{kMRTDC%Py2 zg^+x9m|LT)cYF~5Lm|YW2~*}zkSWI5S*qe-#$Ss2(F$f~XXChMTFF@igMN}7v-MQF z-ia2t_+U%&j{D&b2n7KMPK^@)P_ALKaXfN9Uki~MSiV$rKQS1Ag1wpHR3wN2VCrNp z9wQtbw%J(xoiKU10<2j7h!^e>hy+AgB*iP-#r9!{3&BX72rSdd$P^lQW8^ZZO^U$! zPZ=%=eyccezPTPtvyu!av-OCgyLUnof;|$R2ImJthPThOO*sDuKFo>02F2;GL1!_% z47J(pXuKks#mz%hjYVc5e1`}(htGW&2~)&R2V+;WKcxzL0)vFAX&{jTOto?P=1un| zM(!94z_KjEKe)II9dHR9USl9?DhU69!Cl^fVoJl(S z7KwICi;!77IpH<$geHzQ6TB0@%|WaZ=tCq z&qPAPQ*bZn_Z7w>gxBHm!n?sh#Qqw)BnpK&%rm8;q9Q{gT|{{H^_{vVn#`6ul@DT*Fl<(#8q=J4Tq zJkj`kOD;h0jhO7ZNy979VB#4Xi=oBG$D^>~?qYpP{G2Yly}on!gp%v6pW#>aHC(J7 z0EI!Lh%Ac26ON?Z$F%z0=jtJ_UY#u0^el$m4p~QpWyUBVKy6|+*ug`oeBHhJ3v)&B?-vGJ$J?{xF zd;k6wo1-gPvoZ8u; za@=3z)v#j4iU5rOY;X*lrcz$K5H)fJbG#O!SZtkV64xWf80`Wm-_m>>T{uwQ_t;}0 zA>`N?u6)1;C#I?PV)&up(O`=Dajd~W6M=I`2YUuh8cLX60ZkC&@Bphb+dF<7?-`SV zA)}-A06r`p7^LhzpGnfbxcRn$-^PE~A88JWjm;hPnRIz0n-d%^*y=8n8EmXMk)XIp zS;;jYggI1fFi0~Or=&MtMP2UHmz1k8VK9Tk&2YJw6<6~0xK#`QUOvDtz|XM`8Lpjk z6YW%l5SvWMW7|7?`t$=EUUqiGPajVcQP_!Mpw4uPoGnrAzmMQ-(UEU(-z*NP3^qc_ zyb92kjO_IOTc3k|N5fBzxJf{SIQ4t+;9_dS5Hm9~&!*-t5;6)18ABc89XHPvCF{iE z4R{Fui6wyY{1gyY>_}K0Z*)_H)q77#!3@XidWydOR>m$OZH- zzr1J7%!&!gS31e4WSr+#MtI%MpWCMgJ6)=uNI^#;rQmy*dCEmdXG!J~HWw6`e$%*L z_seT9wTFYgMO?#sFc5i?L%F=vwa_L}8ISQXgfv;jOT9Fe7*1b02bp#>6;#c=|z36|kxvV6j+uB@Wv)kS&m7BL{3H7rnT-i@6jSM031K7u3^esGIcC`FvVLAZ%=KRvESlL}7XI~Y4+mI-a zt;q$}Op{q&Gg731ljco=59CC{K6pTbGYwA(rr7PbX|VP1;9X%QkopPx z@e&hP#j8*W;iy0|*cbDCns`z{|EL7nKqZ1|rv;8u`DunjfJ{lG5ez&_E@9JMglDki z(#Bo8K5=#`7XH;X)id|y0Vjgj#bix63I+#Y_ed;x}JsiK`%wZ?kBG-Pk{@0;Y;oD5k-_F&=XIige z>sk9*M9}~>Iw_nchdN6Wn?zck4T1nQMlaBsCYNupWfpOrCF{*+V0w1ZFAcd3ZhWvV zB`LyP&M3;<;VhQ(%Yh?v7*>ko)7vWqZKu$zFBpIgI2Ben6^!tqDIh*(3aPiQUj)Af7BhYBi!l-~XDG zi^kFT`=_-uqA*K$5w|+@Sktv1#$51e$*`w@fK^^{$E-{N{tDGQ;1bg@9mqQ|sEnpy zPkleY~Jl;>)JFJvar#ilG*0!)6)47XMA-Hja5 zN)8S2n|)!LH~EY{UMeJ59fC_^JwwaN%B4f+N>SxS3&m{Nu99LRNm94?Uf-|YV(_}i+k5*ln9b>v=er7nJ#l5IrZ{r=`Q8P$( zzR|`VcMn^dXX*ABanNcGE!VeHlrZ({*Zfz|-r{C;Un<1e3tUcxtc^_QugF z9@;4MaIgh$1=BeT!-)PKQSZ2C^RV0Of8<7x%2D$Ix#tGY679zx(CH~zpdIk?VZNp~ zEz*7hYh~V!cfIg6d_ZlIMAzfX{qKdo-4-raeAiX8`aV?Udma`}&QgqRq4^z6=vYEy&U=FOPksnv~imY${>6i<{ahy3> zGyfnI>1k(^QWx@s$9ZV_xN=xax%A;NU{1S=2M)&!v6wm|tn%=6e$^1oNH)Nvl@PL^> zbMF+q0}x@ZhH)d52}m`IKu}9{;%5MYM9_|dwUy1*rxNC}fF0o0 zG4V)Q=KX*|B3_R+*qYnmyj8GuqlCl~zq*4q!{@kpumm&``yF$K$GjIkUBWzd>ZHz{ z)`2BO?d|xa(qj&eA3r9Z*Htw7WWoSN)i?P???tMqC-D(czuSnOl&wfU)KBb_nAcdkG?c#947gvSpu33D6BhZXP-|;-XPLJkWeW2Q5GF$Zc>!GpruQAE#bqNk&@?>;zRv)g zhUb7xa4UJeA<4wx)dvV!FY1b8G5`?FKl)Y>*e{iH7se{mjagxl3KrR@G7Q7Vf((Qz z1e_Wfc<$NWw{JH_$e+L2+*+WK5GA=m@bPtV>Z|5RJlv<@T~r1qCUmrJ05E*Dqg|Q& zN{Z8~==W&NiakBn0xwdn^gQwg8iLN1E9tEiq)Q#=!xEFuwX_Q^Mj}i{w7|gq~8E;CP@j! z$T{>Q+WIa;(ia_V5Z|@l)UVPgH>TWE?W5MSfZVXG`pfo5+~{;k!^`vG?Yf@|=V#LU zTc)@eHoj%IEO22v73UtgMSbAJ0?=Bm?jjeZAtFQ*2p1;b+ofEY5fF38^gNQMC6xTA(k7wukMa1&i-%cMK1!U%b{dd_UC z3N3BD5)^*mS8?J}8d(MNBT?40&F<6nsC?{4_tXy@Np}}M4Ux5~>WB5&0BQm9B+vq5HJ#RQ|t)vK^XgzoAfgo&7`6#ER(quA*K?ElgNpu=wR z7n7ELqwI#d7+vyl9UZd=B-k92+g#o#n$m%_v0FqMyz|<=^?rHZo2O6T_Ptq1r7V)9 zWa%UWai?Td2zuNp>*@sb@-p#d_HbMu<(o&#z@x|zTB|sY0c^%mp20)mf$KU$BvL&_I|5_T%q z7c@?9QL5Tzr+k+$O_rHSEE4CBtgaK(- z4}SV~Fji3U=e$@e>t!+Wb*@4SBcF({@$bUHL>a+`O2S$9*YK<$Vi>5Hm7C?z*~1vH z`0^g0Qz9~(_CHe`o|q64x044J@-!(auVgAM%{Gu08E65194F^e0k$rNyY?)Uw zV-1h2jy!du#z{xSz^136%;7zp-4XL{;P)G|8P;WdPOmImWn!Fz|JaY~RXRJhV(-Gn^4;(#>Q0@a?SgY>paw?ejD-rL>S4-WNWDt8 zKGr^HVzNxC&0gNBVAwIf*`y#u*-UNCKA*5h?~?TAgy4Fo2qew7A^X9D6LR#)psD(- zFqsOltE3Y9?6`f`a+2Eu-gJT$_*KOtl`oSF)0OT}}6d32haF zg@Yw|&Q;qRLKHC%LHjL9b7ZE|&-6PAk(@R}uFo2rtJwpx=nK2mPYe{Zv9&)T z73SfG+O=!=)@vLw-C~tD%nsLMX-rNa@%`SkEAwDpIy))_5wGl+_(SW-+uFI`d{X(D zLEkTKI$%r7z*mNVaq0bxl!` z1JYXuXeg_Bkg(DCnmYt0$@tUbPKOAHDFNIxADv#Ye7TH6bcT5Yh@K!!aI_@!{Zm#8 zYva`->%c8Qq|+={XxsgfB@4pLvuf(<|DCuD>J|TMo)AjMj#-T90`h=Pzm@kyA2E9X z3bzPJdW#7w4!8@H0bwGBfsZe?uH4%&^vy5`3eRE?ATF4TA*r%}I^&~U?;>gl&>C?L zhV>#-*rUbhAbfy|AOrh7w#2DAil;JU_zVPLmuj(wW6&MaffBgf8}64khyy0(w-L%s zOyue|ZuGzgNXT-At4*)(;74mbT&ToH4|^EZ6#S2@c-ZCktCARnu!mdYAqHaY;W?fj zZ392)-|(a+4o|TIz?GeUJ@t8m8XK4$73RfDp1@)Uy>dF{`N-4xXxBL$GB<5np|_aA zgig^RR(V9I$>Y>nbOGk7fPzA|s6Qeuo^}`wA@Y8_LE-~}C##@@meu|_$ZOVc%S<&H zs=&Cr%GtAzgFiUM>5}u~nIf*a;(pk^JLa}ZXExI?b2oZHsSN=7d+=4bj!YfUW)W*> zpf#sp+=FE06S!9G&r?!Zyis|h8(rpI)^!mM-3*{k;KO_b$)%TdLqbDwbcr=d7mBDRVZ+9h`?>G7$K?f96~V>{6~$ccJX58L$B3>de5e|hW{b%1*-+d5^lD4T03u< z1R9Sj2{`=uk)Bxwk}Ci!y&oi30MNol%w3db|KwSkqbt1YQC!`6;9@`T2t_Rn3y_56 z^73*t#<7+o8aL33GqLb4+Ycu#@Gw*q9N+QJB|t<=mM-md%yl7T4kD6?i7XGAiS;wH zf_fGJ_QA10idcf#5*a-rDTIV2E$u((V37{m~jnl z@V|jdhOm`H0F9u(do*-Nb2BO#lLzMTq9n(ZOcD_@oWeEE?M&zpB-q>uy+S({5 zw@~@xqXKi%Z`WUKDjKQM3Z} zg}DVbAmcDonry7{bS!rycqDN=MFkG8HPh6MofzJjBwp!g+lY%TJjEGFp+ck_nC%6? zLg>*@wfv=S#yjLpQLzIluR|)FLacHn9?Gn#C!!Qni{|b7QTZ0PW@Y@FkQz@ zFBm{>#Q{y9e}0|EO|p+Kd@aBPf4)nApcM;W{{f=#|I16y6Sq82k5^~??%wVF>I{3F z3bfhZQgYzHBP1s`yZkWZNaQO&@_9Vto0ISlIeg~KnfR1QF~i#pHW*ElbsB)*!|S@~ zrAwDa=4cxGV_?CD-_;lL8=qFks+|@7F?cpbR5T>6If0P{>OfmlZ_s1fnvdd7y!h5UOM%>|bIKy$|v6qabd`mNqf@VD_iJ z*PH`p@+^4cF+~buje)eIsH4jvfqe%)^Qf+_u3z6_f6lj%X8U)cQ4P*&_Y6mNPb3*9 zwQ#f~X>??x#J-C3hei9*mEp8sM<#%+i3>N@ zj(-lBB*Hw%V;grQ(G0^c9CnjBgwu|l4U`=q!5>NIvjXu8h$;fSG)eG55(NFiuJb0z zQGX75d;hAyp=b`Ag7OnBhrl`m(39t5K|@IFRFjx$@IZC!9dty9IM2S0sg0iA>O5*_ZY0( zBVj$#XQ_h6BR>xWxOoGW_&nYh(lmlWJSs_msdOK_5qNM^pe-O?#W5WQE#7rz&w(G+^);W@{PQ>pf2JOugzpAU4-3mT4Xt=n??6qU zx`6y0u(;vo&a4*O6{IX)Pzk9(TCLoC*WZ71S{E=@SXh{3AB@GCCXuxbPqNi#l69^; zz;i$ZMP|8FSwS7cJ)!;-!%LUW7P#*tcZmVeD2O&d1mqx@9M3AOB&iT#d(EBU3$OFK zuI-=eWox4lIRxb#<_&Ec!^a&mP&Z)KCZM8wkIDokcRq3`u_cQc*+|4?s<5_ z`@^o)p@Hkv@2A^M74SaL)lSaLVCJD%J#z$A7-r;n4Nny#gorP(u4zCTi+BnkzF$do z?ciDgfuK4wi?0JP92y!K5l@j-91{SF)^2{M7)Q~$w99u=-x|Q32)}&Ek|lpXc(8<6 z-$8h%k_74>WHO`f>wg}h*U@-{jDZMGH-Vi(ztyaTKp&?!bKn=D(87<8efDgLH>gTt zVnGsTumoLb84YK_1LG0`MfaMniJpWRwkqbV2ucNHgBI8Y0htU#{hW@QLeq)$viwtN5a&jb7TmU5eN5q4m0*pYLF-|qzU{D z_XuKSi{1u=E^(#6yN=B_j&dRV1HC7jo>2L(XUH=SVyAIh>DIX>NPn`aQEqt3`hle9 zoc`ZCt$cbi8^Cj*&}3_|PsQk%Mx;z#XP>(xuZ>osn+;hpq9jb7DYx=&C@^E zZq!w6vUww722sIex_Dv_IAQGwjnhNDu zt{7FggaN(eQb|<%WUBx#@P^p$RL#$761W)R1qI7Doe)^BCF_~Q%rW5MA`{j`CWbPY zP?_Mk&OzV`{5KZ!uS6Q>4PnQEUq94eYl-bI9qDi+&<(8U)Krz%XQ+FL_jW>j)FmKe zxNvlME&ql6l|KpwIieyoTqs9uQO#mrz~^m)tdTY!kU zY5bU@BCDy4-_0MGZ=zmw^W{Cm0`tQHM9)RCs)*}C^z08I2BKv{pp+f4yv9GN2!O+! z^=G2+MW;Zt;jr_(nh`bm2#N|!{KBYMLD2KEc~ebHp&8t7wd$ z8>*f~5bi*1<%_$430CY;;wr!5G1iV13W)(C%3s0JjRD&o863O8v?}M9JehjO?`7Gq zth^NUghjoDiOGe!ms&)yNOnTVly1Oe7XTyK8p&9HoMyD;>+|~hZ37w)!8CxlH#u6> zj(J7kM(;1BTEoK|M^Ys?6ikLDJ9aS8QiMFTM=Hfd;{RzKe`jx>gO>URDkc(U^dy0? zsMC7X`m{wNgenD=z(_BdPG^F?BRwx1%Uy|H+iftPxd_Pm6i&xu=)-_-p+!Hs^;9^G zdFj$W3NW#cNJ0o`WaP-PUR#XS_XwmeA{SPAgThBinVfn4%o!B`n~5~ZATbQ8;5w10 z_1Gjx&%jm?cTRXZlkN#hP;^f*bqS5MWFe0R?5p{4znn7v^#RIn3OsrJx|Y*oU?-(E z_Y0XP$Gp>>yLSa)ULq9byx7|~+T#&&+g_1CFZGo3l*Gh$UBhIk3^fQ*P|*T$-rOV! z!F83tg|AA<$+bu~{5g4#Y_1I9!UVz=9YuLF- zOVb^*MV^U@?R>izdXb(WcU!f27nFy@iO!xgvL1Km>X`|+;R7)Bj(b0a$vXz(e2qO% zFD)5Q2hqPj*}gqm%1S@C>z^i0?A{bE$0nC~%(-U6%Ol|TPd7$z5pEVwoG}={V;~^w zxbn}Sa6lSP5Qf_B^(An(AuK5O2x3cV{-UBz|1nTW05i)h1Vod4+ulAYOf@W3fvB$jwAY6 zK>ox90*bF$tcmV;#kuX|`NZ^87ry(gQTie>T!1j1vX@$kFA@?uQC&ksyUL`A(m`g` z=6{RK7egF(8+-s($3j#lrn<-vBZc1i^A!}&v7Jv6>^f1XcOZeR^P#r>TeFNzoqr0& zB6N|}wo$KDg<4^EL-1utJ4Wrd3DPhf`@eLNYp|kPc`ueh4n1nWj8wnXB|x+xo;mG9 z8R;Q#<-*t8LlDJ(z674_ovnV3QY7*pQNNPXmu3GF#%uo9h+6lb8Sbd5|2h7FG*X_j z{rmU*``G{gq`3d}*8VduEsRz_a^xa5WO+W7Lf}&||N1=c5o_rB{a|s0L`7d!F2Lw` z)QLe|i}kxz{+wbl%8|sQ{J{hJE${lzpxx@gtuPtO{uCu2PD)JaC}fNweTJ{#FbEaY z{)I`>BI^VM+Mm<*h5%j!UX*fnX5qqCOKtBQd=4rw0dDUF1qGEdkkPr1)oBy!KX;^- z{}GfMMM#BLLQ-mjH!`p+yBYP^p35IrQ_`SB256V}kznP}>iRTOQc`|mKMGlIXa{ph zOwS0LQ}*32e-By!Ck>3p^n>00)Kl%3f%>_w%_>nEtG @{-BQ%!>&o8-6E?3?95+iytOLS=Ez4iY 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 diff --git a/servers/shapes-api/docs/assets/img/postman-shapes-valid-approov-token.png b/servers/shapes-api/docs/assets/img/postman-shapes-valid-approov-token.png deleted file mode 100644 index 2033c962642ecc42575d76c23716e74f9e424a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73792 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�q|AT5 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 diff --git a/servers/shapes-api/docs/assets/img/shell-forms-invalid-approov-token-binding-with-approov-disabled.png b/servers/shapes-api/docs/assets/img/shell-forms-invalid-approov-token-binding-with-approov-disabled.png deleted file mode 100644 index 3a092e3c802aaed6b197aa46a48c5581c9f343db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74252 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 diff --git a/servers/shapes-api/docs/assets/img/shell-forms-invalid-approov-token-binding.png b/servers/shapes-api/docs/assets/img/shell-forms-invalid-approov-token-binding.png deleted file mode 100644 index 9a9da5d09ff4b8a709ae33f7e7b77c40312ced32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85321 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

    *0t!? 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
    =Io@NL%# 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

    s!iEy{NaYgL8K^RpdwBGxaw@Q$xJS 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 I>~@|c7$-4Xs*dRbt3p^!VHihh4@v)Z}x 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 diff --git a/servers/shapes-api/docs/assets/img/shell-hello.png b/servers/shapes-api/docs/assets/img/shell-hello.png deleted file mode 100644 index 1835234d895344d2b4ca9c56ca401d3b97c48151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58305 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 diff --git a/servers/shapes-api/docs/assets/img/shell-shapes-approov-disabled-with-valid-and-expired-token.png b/servers/shapes-api/docs/assets/img/shell-shapes-approov-disabled-with-valid-and-expired-token.png deleted file mode 100644 index 29d759f2d529561175f697b43467ab2fa452c637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91718 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 diff --git a/servers/shapes-api/docs/assets/img/shell-shapes-malformed-approov-token-and-approov-disabled.png b/servers/shapes-api/docs/assets/img/shell-shapes-malformed-approov-token-and-approov-disabled.png deleted file mode 100644 index 0d90377e9950cdc4d4ae9f92241aa5162f99851b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66689 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

    Jr( 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%0ATT1zqTpCT{_^3UI&l2wU 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 diff --git a/servers/shapes-api/docs/assets/img/shell-shapes-malformed-approov-token.png b/servers/shapes-api/docs/assets/img/shell-shapes-malformed-approov-token.png deleted file mode 100644 index be65d8536f176a4a3633af02fdaa6f03690868c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78586 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 diff --git a/servers/shapes-api/docs/assets/img/shell-shapes-missing-approov-token-and-approov-disabled.png b/servers/shapes-api/docs/assets/img/shell-shapes-missing-approov-token-and-approov-disabled.png deleted file mode 100644 index 1d75c929d7c5f3112c8e66633a40a2722ce84d69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65792 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 diff --git a/servers/shapes-api/docs/assets/img/shell-shapes-missing-approov-token.png b/servers/shapes-api/docs/assets/img/shell-shapes-missing-approov-token.png deleted file mode 100644 index 6274893092978ca7d783be97d019bc3d2c3ff9c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61735 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≈{L$*`#j+DhViIz)Ju4 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 PD7)art9Bu0Pcm@7C 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 z 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/servers/shapes-api/gradlew.bat b/servers/shapes-api/gradlew.bat deleted file mode 100644 index 0f8d593..0000000 --- a/servers/shapes-api/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/servers/shapes-api/settings.gradle b/servers/shapes-api/settings.gradle deleted file mode 100644 index 67a9126..0000000 --- a/servers/shapes-api/settings.gradle +++ /dev/null @@ -1,6 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - } -} -rootProject.name = 'approov-jwt' diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/ApiController.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/ApiController.java deleted file mode 100644 index 58e28e9..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/ApiController.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.ApproovAuthentication; -import com.criticalblue.approov.jwt.dto.Forms; -import com.criticalblue.approov.jwt.dto.Hello; -import com.criticalblue.approov.jwt.dto.Shapes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; - -@RestController -public class ApiController { - - private static Logger logger = LoggerFactory.getLogger(ApproovAuthentication.class); - private RandomShape randomShape = new RandomShape(); - private RandomForm randomForm = new RandomForm(); - - @GetMapping("/") - public String homePage() { - - logger.info("Serving request for endpoint '/', that is not protect by an Approov Token."); - - // This endpoint is not protected by an Approov token, thus the Approov Authentication does not take place, and - // everything works as usual. - - return "\n" + - "\n" + - " \n" + - "

    Approov Mobile App Authentication

    \n" + - "
    \n" + - " \n" + - ""; - } - - @GetMapping("/v1/hello") - public Hello helloV1() { - - logger.info("Serving request for endpoint '/v1/hello', that is not protect by an Approov Token."); - - return new Hello(); - } - - @GetMapping("/v1/shapes") - public Shapes shapesV1() { - - logger.info("Serving request for endpoint '/v1/shapes', that is not protect by an Approov Token."); - - String shape = randomShape.create(); - return new Shapes(shape); - } - - @GetMapping("/v1/forms") - public Forms formsV1(HttpServletRequest request) { - - logger.info("Serving request for endpoint '/v1/forms', that is not protect by an Approov Token."); - - String form = randomForm.create(); - return new Forms(form); - } - - @GetMapping("/v2/hello") - public Hello helloV2() { - - logger.info("Serving request for endpoint '/v2/hello', that is not protect by an Approov Token."); - - // This endpoint is not protected by an Approov token, thus the Approov Authentication does not take place, and - // everything works as usual. - - return new Hello(); - } - - @GetMapping("/v2/shapes") - public Shapes shapesV2() { - - logger.info("Serving request for endpoint '/v2/shapes', that is protect by an Approov Token."); - - // This endpoint is protected by an Approov token that MUST be signed with the secret shared between Arppoov and - // the API server, and an exception will be raised if the Approov token is not signed with it, or its - // expiration of 5 minutes have been exceeded. - // - // The shared secret is the one declared in the .env file in the var `APPROOV_BASE64_SECRET`, and you retrieve - // it with the Approov CLI tool. For this demo purpose we will test the API with a tool like Postman, thus - // we can generate some Approov tokens with the help of the Approov CLI tool. - // - // The raised exception will be: com.criticalblue.approov.jwt.authentication.ApproovAuthenticationException. - // - // Throwing the ApproovAuthenticationException on an invalid Approov token is controlled by the environment - // variable `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN`, that can be found in the .env file. Setting its value to - // `false` should only be used when you want to limit the response returned to the client, instead of totally - // blocking it, but once Approov uses a positive attestation model(no false positives), we discourage this - // approach, unless in an initial phase where you just want to assert that everything works as you intend to. - - String shape = randomShape.create(); - return new Shapes(shape); - } - - @GetMapping("/v2/forms") - public Forms formsV2(HttpServletRequest request) { - - logger.info("Serving request for endpoint '/v2/forms', that is protect by an Approov Token."); - - // This endpoint is protected by an Approov token, where in addition to what is checked in `/shapes` endpoint, a - // check is also performed to see if contains a key named `pay` in the Approov token payload section. When the - // value in this key does not match the request claim value, an exception will be raised, but you cannot catch - // it here, once its thrown before reaching this method. - // - // The exception will be: com.criticalblue.approov.jwt.authentication.ApproovTokenBindingAuthenticationException. - // - // The value in the `pay` key is a base64 encoded hash(SHA256) of the Approov header claim value, like an - // Authorization token. So the Approov header claim value is retrieved from an header that is configurable from - // the .env file, by changing the default value `Authorization` in the var `APPROOV_TOKEN_BINDING_HEADER_NAME`. - // - // Throwing the ApproovTokenBindingAuthenticationException on an invalid custom payload claim is controlled by the - // environment variable `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING`, that can be found int the .env - // file. Setting its value to `false` should only be used when you want to limit the response returned to the - // client, instead of totally blocking it, but once Approov uses a positive attestation model(no false - // positives), we discourage this approach, unless in an initial phase where you just want to assert that - // everything works as you intend to. - - String form = randomForm.create(); - return new Forms(form); - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/Application.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/Application.java deleted file mode 100644 index c547b68..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/Application.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.apache.catalina.Context; -import org.apache.catalina.connector.Connector; -import org.apache.tomcat.util.descriptor.web.SecurityCollection; -import org.apache.tomcat.util.descriptor.web.SecurityConstraint; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; -import org.springframework.boot.web.servlet.server.ServletWebServerFactory; -import org.springframework.context.annotation.Bean; - -@SpringBootApplication -public class Application { - - private static Logger logger = LoggerFactory.getLogger(Application.class); - - @Value("${http.port}") - private int httpPort; - - @Value("${https.port}") - private int httpsPort; - - @Value("${http.redirect}") - private boolean isToRedirectHttp; - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - - @Bean - public ServletWebServerFactory servletContainer() { - - TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { - - @Override - protected void postProcessContext(Context context) { - if (isToRedirectHttp) { - logger.info("Creating security constrain to redirect http to https."); - SecurityConstraint securityConstraint = new SecurityConstraint(); - securityConstraint.setUserConstraint("CONFIDENTIAL"); - SecurityCollection collection = new SecurityCollection(); - collection.addPattern("/*"); - securityConstraint.addCollection(collection); - context.addConstraint(securityConstraint); - } - } - }; - - tomcat.addAdditionalTomcatConnectors(createConnector()); - return tomcat; - } - - private Connector createConnector() { - Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); - - connector.setScheme("http"); - connector.setPort(httpPort); - connector.setSecure(false); - - if (isToRedirectHttp) { - logger.info("Redirecting http to port: {}", httpsPort); - connector.setRedirectPort(httpsPort); - } - - return connector; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java deleted file mode 100644 index ef0b726..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.springframework.boot.web.servlet.error.DefaultErrorAttributes; -import org.springframework.stereotype.Component; -import org.springframework.web.context.request.WebRequest; -import java.util.Map; - -@Component -public class CustomServletErrorAttributes extends DefaultErrorAttributes { - - @Override - public Map getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) { - - Map errorAttributes = super.getErrorAttributes(webRequest, includeStackTrace); - - // Remove from response in order to make the response comply with the Shapes API specification - errorAttributes.remove("timestamp"); - errorAttributes.remove("message"); - errorAttributes.remove("path"); - errorAttributes.remove("error"); - errorAttributes.remove("trace"); - errorAttributes.remove("status"); - - return errorAttributes; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomForm.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomForm.java deleted file mode 100644 index b3c624f..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomForm.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.criticalblue.approov.jwt; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -public class RandomForm { - - private final Random random = new Random(); - - private static List list = new ArrayList(); - - static { - list.add("Sphere"); - list.add("Cone"); - list.add("Cube"); - list.add("Box"); - } - - public String create() { - - int index = random.nextInt(list.size()); - return list.get(index); - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomShape.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomShape.java deleted file mode 100644 index 40b06f9..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/RandomShape.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.criticalblue.approov.jwt; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -public class RandomShape { - private final Random random = new Random(); - - private static List list = new ArrayList(); - - static { - list.add("Circle"); - list.add("Triangle"); - list.add("Square"); - list.add("Rectangle"); - } - - public String create() { - - int index = random.nextInt(list.size()); - return list.get(index); - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java deleted file mode 100644 index 8560927..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - @Order(1) - public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, false)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/v2/shapes") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/v2/shapes").authenticated(); - } - } - - @Configuration - @Order(2) - public static class ApproovTokenBindingWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig, true)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/v2/forms") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/v2/forms").authenticated(); - } - } - - @Configuration - @Order(3) - public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/**").permitAll(); - } - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java deleted file mode 100644 index a274c95..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.util.Collection; -import java.util.Collections; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; -import io.jsonwebtoken.Jwts; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.GrantedAuthority; - - -/** - * Validates the Approov Token is signed with the shared secret between Approov and the API server, that have not - * expired, and optionally also validates the token binding in the Approov token matches the token binding header. - * - * @see ApproovAuthenticationProvider - * @see ApproovSecurityContextRepository - */ -public class ApproovAuthentication implements ApproovJwtAuthentication { - - private static Logger logger = LoggerFactory.getLogger(ApproovAuthentication.class); - - private final ApproovTokenBindingAuthentication approovPayload = new ApproovTokenBindingAuthentication(); - - private final ApproovConfig approovConfig; - - private Claims approovTokenPayloadClaims; - - private final String tokenBindingHeader; - - private String approovToken; - - private final boolean checkTokenBinding; - - private boolean isAuthenticated = false; - - private boolean validTokenBinding; - - /** - * Constructs the Approov Authentication instance that will validate hte Approov token and the token binding. - * - * @param approovConfig Extracted from the .env file in the root of the package. - * @param approovToken Extracted from the header `Approov-Token`. - * @param checkTokenBinding When to check or not the token binding in the Approov token. - * @param tokenBindingHeader Extracted by default from the request header `Authorization`. - */ - ApproovAuthentication(ApproovConfig approovConfig, String approovToken, boolean checkTokenBinding, String tokenBindingHeader) { - this.approovConfig = approovConfig; - this.approovToken = approovToken; - this.checkTokenBinding = checkTokenBinding; - this.tokenBindingHeader = tokenBindingHeader; - } - - @Override - public void checkWith(byte[] approovSecret) throws ApproovAuthenticationException { - - if (approovSecret == null) { - throw new ApproovAuthenticationException("The Approov secret is null.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - if (approovToken == null) { - - logger.info("Request missing the Approov token."); - - if (approovConfig.isToAbortRequestOnInvalidToken()) { - throw new ApproovAuthenticationException("The Approov token is null.", HttpStatus.FORBIDDEN.value()); - } - - return; - } - - approovToken = approovToken.trim(); - - if (approovToken.equals("")) { - - if (approovConfig.isToAbortRequestOnInvalidToken()) { - throw new ApproovAuthenticationException("The Approov token is empty.", HttpStatus.BAD_REQUEST.value()); - } - - return; - } - - try { - - approovTokenPayloadClaims = Jwts.parser() - .setSigningKey(approovSecret) - .parseClaimsJws(approovToken) - .getBody(); - - logger.info("Request approved with a valid Approov token."); - - } catch (JwtException e) { - if (approovConfig.isToAbortRequestOnInvalidToken()) { - logger.info("INFO: " + e.getMessage()); - throw new ApproovAuthenticationException(e.getMessage(), HttpStatus.UNAUTHORIZED.value()); - } - - logger.warn("Request approved, but with an invalid Approov token: {}", e.getMessage()); - - return; - } - - if (checkTokenBinding) { - validTokenBinding = approovPayload.checkClaimMatchesFor(tokenBindingHeader, approovTokenPayloadClaims, approovConfig); - } - - isAuthenticated = true; - } - - @Override - public Claims getApproovTokenPayloadClaims() { - return approovTokenPayloadClaims; - } - - @Override - public boolean isValidTokenBinding() { - return validTokenBinding; - } - - @Override - public Collection getAuthorities() { - return Collections.emptyList(); - } - - @Override - public Object getCredentials() { - return approovToken; - } - - @Override - public Object getDetails() { - return approovTokenPayloadClaims; - } - - @Override - public Object getPrincipal() { - return null; - } - - @Override - public boolean isAuthenticated() { - return isAuthenticated; - } - - @Override - public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { - if (isAuthenticated) { - throw new ApproovAuthenticationException("A new Approov Authentication instance needs to be created to set this.isAuthenticated.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - } - - @Override - public String getName() { - return null; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java deleted file mode 100644 index 494c792..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.web.AuthenticationEntryPoint; - - -/** - * When a failure occurs during the Approov token authentication process, an exception is thrown and Spring redirects - * to an authentication entry point, that have been configured in the Sring security to be this one. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - * @see ApproovAuthentication - * @see ApproovTokenBindingAuthentication - */ -public class ApproovAuthenticationEntryPoint implements AuthenticationEntryPoint { - - private final static Logger logger = LoggerFactory.getLogger(ApproovAuthenticationEntryPoint.class); - - @Override - public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { - int httpStatusCode = HttpStatus.BAD_REQUEST.value(); - - if (authException instanceof ApproovException) { - httpStatusCode = ((ApproovException) authException).getHttpStatusCode(); - } - - final String httpStatusMessage = String.valueOf(HttpStatus.valueOf(httpStatusCode)); - final String exceptionType = String.valueOf(authException.getClass()); - final String exceptionMessage = authException.getMessage(); - - logger.info(httpStatusMessage + " | " + exceptionType + " | " + exceptionMessage); - response.sendError(httpStatusCode); - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java deleted file mode 100644 index 6e695df..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.AuthenticationException; -import org.springframework.web.bind.annotation.ResponseStatus; - -/** - * Custom exception for failures when verifying the Approov token signature and expiration time. - * - * This exception is only thrown when `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN` is set to `true` in the .env file at the - * root of the project. - * - * @see ApproovAuthentication - */ -class ApproovAuthenticationException extends AuthenticationException implements ApproovException { - - private final static Logger logger = LoggerFactory.getLogger(ApproovAuthenticationException.class); - - private final int httpStatusCode; - - public ApproovAuthenticationException(String msg, int httpStatusCode) { - - super(msg); - - this.httpStatusCode = httpStatusCode; - - logger.error( msg + " -> See: " + getStackTrace()[0].toString()); - } - - public int getHttpStatusCode() { - return this.httpStatusCode; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java deleted file mode 100644 index 1ed431a..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.apache.tomcat.util.codec.binary.Base64; - -import org.jetbrains.annotations.NotNull; - -import org.springframework.security.authentication.AuthenticationProvider; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.AuthenticationException; - -/** - * Used to configure the Spring framework security with the trigger for the Approov Authentication. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - * @see ApproovAuthentication - */ -public class ApproovAuthenticationProvider implements AuthenticationProvider { - - private final byte[] approovSecret; - - /** - * Constructs the Approov Authentication provider with an instance of the Approov config. - * - * @param approovConfig Extracted from the .env file in the root of the package. - */ - public ApproovAuthenticationProvider(ApproovConfig approovConfig) { - this.approovSecret = Base64.decodeBase64(approovConfig.getApproovBase64Secret()); - } - - @Override - public boolean supports(Class authentication) { - return ApproovJwtAuthentication.class.isAssignableFrom(authentication); - } - - @Override - public Authentication authenticate(@NotNull Authentication authentication) throws AuthenticationException { - - if (!supports(authentication.getClass())) { - return null; - } - - ApproovJwtAuthentication approovTokenAuthentication = (ApproovJwtAuthentication) authentication; - - approovTokenAuthentication.checkWith(approovSecret); - - return approovTokenAuthentication; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java deleted file mode 100644 index 4c19146..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.springframework.http.HttpStatus; - -/** - * The Approov configuration that is built from the .env file in the root of the package. - */ -final public class ApproovConfig { - - private static ApproovConfig ourInstance = new ApproovConfig(); - - private String approovHeaderName = "Approov-Token"; - - private String approovBase64Secret; - - private final String approovTokenBindingHeaderName; - - private boolean toAbortRequestOnInvalidToken; - - private boolean toAbortRequestOnInvalidTokenBinding; - - /** - * Constructs the Approov Config singleton with values retrieved from the .env file in the root of the project. - */ - private ApproovConfig() { - this.approovBase64Secret = retrieveApproovBase64Secret(); - this.approovTokenBindingHeaderName = retrieveStringValueFromEnv("APPROOV_TOKEN_BINDING_HEADER_NAME", "Authorization"); - this.toAbortRequestOnInvalidToken = retrieveBooleanValueFromEnv("APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN", true); - this.toAbortRequestOnInvalidTokenBinding = retrieveBooleanValueFromEnv("APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING", true); - } - - public static ApproovConfig getInstance() { - return ourInstance; - } - - String getApproovHeaderName() { - return approovHeaderName; - } - - String getApproovTokenBindingHeaderName() { - return approovTokenBindingHeaderName; - } - - String getApproovBase64Secret() { - return approovBase64Secret; - } - - boolean isToAbortRequestOnInvalidToken() { - return toAbortRequestOnInvalidToken; - } - - boolean isToAbortRequestOnInvalidTokenBinding() { - return toAbortRequestOnInvalidTokenBinding; - } - - private String retrieveApproovBase64Secret() { - approovBase64Secret = System.getenv("APPROOV_BASE64_SECRET"); - - if (approovBase64Secret == null) { - throw new ApproovAuthenticationException("Cannot retrieve APPROOV_BASE64_SECRET from the environment.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - return approovBase64Secret; - } - - private String retrieveStringValueFromEnv(String key, String defaultValue) { - - String value = System.getenv(key); - - if (value == null) { - return defaultValue; - } - - return value.trim(); - } - - private boolean retrieveBooleanValueFromEnv(String key, boolean defaultValue) { - - String value = System.getenv(key); - - if (value == null) { - return defaultValue; - } - - return value.trim().equalsIgnoreCase("true"); - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java deleted file mode 100644 index 60b7576..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -/** - * The Interface to be used in the Approov exceptions. - */ -public interface ApproovException { - - public int getHttpStatusCode(); -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java deleted file mode 100644 index 5d5c68f..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; - -import org.springframework.security.core.Authentication; - -/** - * The Interface to be used in the Approov authentication. - * - * @see ApproovAuthentication - */ -public interface ApproovJwtAuthentication extends Authentication { - - boolean isValidTokenBinding(); - - Claims getApproovTokenPayloadClaims(); - - void checkWith(byte[] secret) throws JwtException, ApproovAuthenticationException; -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java deleted file mode 100644 index 19c9f1a..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.web.context.HttpRequestResponseHolder; -import org.springframework.security.web.context.SecurityContextRepository; - -/** - * Used to setup the Approov Authentication Context when configuring the Spring framework security. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - */ -public class ApproovSecurityContextRepository implements SecurityContextRepository { - - private final boolean checkTokenBinding; - - private String approovToken = null; - - final private ApproovConfig approovConfig; - - /** - * Constructs with an instance of the Approov configuration, and with a boolean flag to indicate if is to check the - * token binding in the Approov token. - * - * @param approovConfig Extracted from the .env file in the root of the project. - * @param checkTokenBinding When to check or not the token binding in the Approov token. - */ - public ApproovSecurityContextRepository(ApproovConfig approovConfig, boolean checkTokenBinding) { - this.approovConfig = approovConfig; - this.checkTokenBinding = checkTokenBinding; - } - - @Override - public SecurityContext loadContext(HttpRequestResponseHolder requestResponseHolder) { - - String tokenBindingHeader = null; - - HttpServletRequest request = requestResponseHolder.getRequest(); - - SecurityContext context = SecurityContextHolder.createEmptyContext(); - - approovToken = request.getHeader(approovConfig.getApproovHeaderName()); - - if (approovToken == null && approovConfig.isToAbortRequestOnInvalidToken()) { - - // returning an empty security context in an endpoint protected by Approov, will cause Spring to later throw - // this exception: - // org.springframework.security.access.AccessDeniedException: Access is denied - return context; - } - - if (checkTokenBinding) { - tokenBindingHeader = getTokenBindingHeader(request); - } - - Authentication approovAuthentication = new ApproovAuthentication(approovConfig, approovToken, checkTokenBinding, tokenBindingHeader); - context.setAuthentication(approovAuthentication); - - return context; - } - - private String getTokenBindingHeader(HttpServletRequest request) { - - final String headerName = approovConfig.getApproovTokenBindingHeaderName(); - - if (headerName == null) { - return null; - } - - final String tokenBindingHeader = request.getHeader(headerName); - - if (tokenBindingHeader == null) { - return null; - } - - return tokenBindingHeader.trim(); - } - - @Override - public void saveContext(SecurityContext context, HttpServletRequest request, HttpServletResponse response) { - } - - @Override - public boolean containsContext(HttpServletRequest request) { - return approovToken != null; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java deleted file mode 100644 index 2971d38..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -import io.jsonwebtoken.Claims; - -import org.apache.tomcat.util.codec.binary.Base64; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.security.authentication.AuthenticationServiceException; - -public class ApproovTokenBindingAuthentication { - - private static Logger logger = LoggerFactory.getLogger(ApproovAuthentication.class); - - /** - * Checks the value in the key `pay` of an Approov token matches the token binding header, that by default is - * the value for the `Authorization` header. - * - * @param tokenBindingHeader Extracted from an header, that by default is the Authorization header. - * @param approovTokenPayloadClaims Extracted from the already verified Approov token. - * @param approovConfig Extracted from the .env file in the root of the package. - * @return - */ - boolean checkClaimMatchesFor(String tokenBindingHeader, Claims approovTokenPayloadClaims, ApproovConfig approovConfig) { - - if (tokenBindingHeader == null && approovConfig.isToAbortRequestOnInvalidTokenBinding()) { - throw new ApproovTokenBindingAuthenticationException("The token binding header value is null.", HttpStatus.BAD_REQUEST.value()); - } - - final String approovTokenBindingClaim = getApproovTokenBindingClaim(approovTokenPayloadClaims, approovConfig); - - if (approovTokenBindingClaim == null) { - - logger.info("Request approved, but not able to check the token binding in the Approov token."); - - // When is `null`, it means we have not met yet a condition to fail the check when the claim is missing. - // @see getApproovTokenBindingClaim() for the conditions that will throw an exception. - return true; - } - - boolean isValidTokenBinding = getHashBase64Encoded(tokenBindingHeader).equals(approovTokenBindingClaim); - - if (isValidTokenBinding) { - logger.info("Request approved with a valid token binding in the Approov token."); - return isValidTokenBinding; - } - - // When the token binding header does not match the value in key `pay` of the Approov token, the request is - // aborted, but only if it is enabled in the Approov configuration. - if (approovConfig.isToAbortRequestOnInvalidTokenBinding()) { - throw new ApproovTokenBindingAuthenticationException("The token binding header does not match the key `pay` in the Approov token.", HttpStatus.UNAUTHORIZED.value()); - } - - logger.info("Request not approved, because the token binding header does not match the key `pay` in the Approov token."); - - return false; - } - - private String getApproovTokenBindingClaim(Claims approovTokenPayloadClaims, ApproovConfig approovConfig) { - - if (approovTokenPayloadClaims == null) { - - if (approovConfig.isToAbortRequestOnInvalidTokenBinding()) { - throw new ApproovTokenBindingAuthenticationException("Approov token payload is null.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - logger.warn("Approov token payload is null."); - - return null; - } - - if ( ! approovTokenPayloadClaims.containsKey("pay") ) { - - if (approovConfig.isToAbortRequestOnInvalidTokenBinding()) { - throw new ApproovTokenBindingAuthenticationException("The key `pay`, for the token binding, is missing in the Approov token payload.", HttpStatus.BAD_REQUEST.value()); - } - - logger.warn("The key `pay`, for the token binding, is missing in the Approov token payload."); - - // The Approov the token binding is optional, so we cannot throw an exception... - return null; - } - - final String approovTokenBindingClaim = approovTokenPayloadClaims.get("pay").toString(); - - if (approovTokenBindingClaim == null || approovTokenBindingClaim.trim().equals("")) { - - if (approovConfig.isToAbortRequestOnInvalidTokenBinding()) { - throw new ApproovTokenBindingAuthenticationException("The token binding in the Approov token is null or empty.", HttpStatus.BAD_REQUEST.value()); - } - - logger.warn("The token binding in the Approov token is null or empty."); - - return null; - } - - return approovTokenBindingClaim; - } - - private String getHashBase64Encoded(String value) { - - final MessageDigest digest; - - try { - digest = MessageDigest.getInstance("SHA-256"); - } catch (NoSuchAlgorithmException e) { - throw new AuthenticationServiceException(e.getMessage()); - } - - byte[] hash = digest.digest(value.getBytes(StandardCharsets.UTF_8)); - return Base64.encodeBase64String(hash); - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java deleted file mode 100644 index 62dd601..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.security.core.AuthenticationException; - -/** - * Custom exception for failures in the validation of the token binding in an Approov token. - * - * This exception is only thrown when `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING` is set to `true` in the - * .env file at the root of the project. - * - * @see ApproovTokenBindingAuthentication - */ -class ApproovTokenBindingAuthenticationException extends AuthenticationException implements ApproovException { - - private final static Logger logger = LoggerFactory.getLogger(ApproovTokenBindingAuthenticationException.class); - private final int httpStatusCode; - - ApproovTokenBindingAuthenticationException(String msg, int httpStatusCode) { - - super(msg); - - this.httpStatusCode = httpStatusCode; - - logger.error( msg + " -> See: " + getStackTrace()[0].toString()); - } - - public int getHttpStatusCode() { - return httpStatusCode; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Forms.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Forms.java deleted file mode 100644 index 5740756..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Forms.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.criticalblue.approov.jwt.dto; - -public class Forms { - - private final String form; - - public Forms(String form) { - this.form = form; - } - - public String getForm() { - return form; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Hello.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Hello.java deleted file mode 100644 index 2480ca2..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Hello.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.criticalblue.approov.jwt.dto; - -public class Hello { - private final String text = ""; - - public String getText() { - return "Hello, World!"; - } -} diff --git a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Shapes.java b/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Shapes.java deleted file mode 100644 index 9892347..0000000 --- a/servers/shapes-api/src/main/java/com/criticalblue/approov/jwt/dto/Shapes.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.criticalblue.approov.jwt.dto; - -public class Shapes { - - private final String shape; - - public Shapes(String shape) { - this.shape = shape; - } - - public String getShape() { - return shape; - } -} diff --git a/servers/shapes-api/src/main/resources/application.properties b/servers/shapes-api/src/main/resources/application.properties deleted file mode 100644 index cda3b69..0000000 --- a/servers/shapes-api/src/main/resources/application.properties +++ /dev/null @@ -1,41 +0,0 @@ -######################### -# SPRING CONFIGURATION -######################### - -spring.mvc.throw-exception-if-no-handler-found: true -spring.resources.add-mappings: false - - -######################### -# LOGGER CONFIGURATION -######################### - -logging.level.root: ERROR -logging.level.org.hibernate: ERROR -logging.level.org.springframework.web: ERROR -logging.level.org.springframework.security: ERROR -logging.level.com.criticalblue.approov: INFO - - -####################### -# HTTP CONFIGURATION -####################### - -# This vars need to be set in the .env file or in the environment -http.port: ${HTTP_PORT} -http.redirect: ${HTTP_REDIRECT} - - -####################### -# HTTPS CONFIGURATION -####################### - -# Needs to be set in the .env file or in the environment -server.port: ${HTTPS_PORT} - -# Self signed certificate was generated with: -# keytool -genkeypair -alias ApproovTLS -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore ApproovTLS.p12 -validity 100000 -server.ssl.key-store-type: PKCS12 -server.ssl.key-store: classpath:keystore/ApproovTLS.p12 -server.ssl.key-store-password: supersecret -server.ssl.key-alias: ApproovTLS diff --git a/servers/shapes-api/src/main/resources/keystore/ApproovTLS.p12 b/servers/shapes-api/src/main/resources/keystore/ApproovTLS.p12 deleted file mode 100644 index 72a21633bfa69d2a3289d47f81d8b2dd3f14f23b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2599 zcmY+EcQhM{9>)_RV$@zWYuuzIDhMe>Y#K%F88xbE$GA1BM$8-3jw)(jduwZts-1|o zD7A~)R8d@2&wJ;+d(S(+^E8&Ju}YKoF%mdckq?Mt`2AOrfOJ1qIp8#7(9ZpB3;oajM&(s%0T% zJthcjdCB<#i!J-6x-O*W*|7!lqS864oI!zs%oiMDZLrI(`UCA|==?2SpW7J!juC3X zFiJ0sX6rC|^F|}=97wyg@9;6$U9+GDxBE=!ZA_gRD*}+_n8(?url!4G^EP`qcb;j; zg|ipkWY1@ox>(2vx)Fa=MCkA19o;OfR^uFx?AJuYvid1;WPuu*Ow`I9B<{9=v1h61 zmT_i{feuf__%z`_POA42DY_I9FS>PsRJfsw!7|Qz^9>GgEvh2b6fNdd{Qczj-Y#msa9Jy zya$i-)`s7kY*=oD845g5VK?4QT-OlftWg4cjOb=aFA-kLrBf0In+B$xh%aob(3w}S zwb8yBbRj+}*)I*C=OJLUdQ|khu2nEtMy9=ncymR&p=IG5y)BW%8O1zVy&;LtNNgpu z-jB15S&KpJBC^z_2S%u68`9?u5i-5k0*eCDL++qh$zzqk9zBE-B zzr1jN@+|}3r40BSPOW!<14cuig`0VzTIho)=+th9g-Y)$dXyxkIEcHBR#KUB&Mo2{ zo5_|fgFtzu3rc%{a!h=(Yv}Tf3uJC#bmHo0oYjxBF;CT*QfaR{K+CYcRJ6u9=kGg{Wpc5@6uBG zB|+e!;FV$t8|yX;Ys5xu(#}VxKXfh0r{To$=hvZd3GLHZ$(ya;AIC|iyAHEjdree_ zemEJ*5vxxG+K6_#Hts&u~-EWE|IN zXn;Io{$cX6b;ZMaqEY1{9Apv`+o+DgnSQ)~e~zz`P;ye#P8$U8Eg>)~}X4#B`6pDk~ zap@+~<&$~jPbs1DR99?51yRP~y#S@jDX%w?eJU4$bxqAmE*UlxCOggP?0FmevreAP zK36ma@(+DqzK{9KR4cz~t>P|*d~A^A!Lm(KSpkmQL~CUQ?zrPZw-4!y5Syv1r}H&wIXRT9jDq|v zX&EHy5~6qi4$*=yxvG3ADNq3cmqX?s2l#)a1^=70^wf;Zl?2xD2&=B9Z)a&n6CfSj ze@GjSr#=Zkzhj`9i`R=uEC0gc`aIV`Y;mM6UfaHyt+A0H3X@1Ce_>`xdt5yzQ1`i& zEN1vYMFZ;;EwQsy81yC*Q|r!Y&<2X5-t;!!$x7K=qZZwe9j? z6x>7X=;_Qsegy0=*td|8s-ukt;VopRwU^`#@9@m`nEAAK?GT0B(J>w>a=iKoq+P4j zPy|OldG79goG%;|A!fjQ?d=K9NqG2G7_xk>RfEh{Mr+V@{JtH&sA0aMsqYv-JeVbW zQQk+KyPHLp37x*Rk9ub8GI-LnidOz)^fKURhc3Hy>E|+byI9|VDWTLTJUwmBzeSdm z7C?T?Whze0l|K_eV7*kCyKG;Ocv`d(4J6ScmisqDz3wc96+inTY%9AdJBkjum-v(# zR<=1xDLSMN4x16;ygT94V6d<@MDfTRqevKc?dcoA3j#BS-&S+C-VE(m!=Ssp8I z*oyj_Rt|I3eTHP|5PRcnB<79kKiH$)5|8!$zm-Do?-=kZOvJ|FuIb3&R`U^haS`*fFGqQ7dMmY}7 z=t7AAew?xC^HC1kv#QEPpOzH2VZeP8bucjY(|*tx!AUk&m*Gr7V!Ho{TZeDVcB0aU z-J3iY#A)t$-tTA{|BbX9>IFy`Pj2dz<{MOilo&oaBOjQDqHsSYb>ADswLnu0K|}f= zO`WBUzBYF2Q4Qr-O>Pw9=I*5XFIPu&__WN{c?j3X1vNFODo>Z8hADokKlyq^(2NS< z`&Ps@&b&-Q$Qp`tpKaK9;lGN=YmMgKD5DLH3%s8jA&_!Q>!Oi%j9j9cpztXA{3SFE zs}$tHfvuXgd$mwRC$I=D09{GM7BaySe$TSXb?aDqh(ytapWnAE#(hKkdv+7fHO|Sw z2-ilUf15Mr_Ck%tTO&03jyEYRI0R~s2`vXG>jduf~25)#n6f!{>- zc_iQD5e{C&dAW;JAh$RNWSj?Zlw=~yl&zqymvIT~XgP8!%H34C-{WA?Ty&LQYb-Np zB=dW8!}Q`DC7{CW_2CaD-2@BKW1{*WF=LF}O1LvzY>5096o7f{+vivBycwpHw3*%f z6mhI7-fsG@7Zk;jIVSvH9-5qnK1AQW2kC4^B2*B<2s$v01QRtCFAV_1;WE<|PBQcd sl3qdsoRU_y10>o?K^%TWhaZeVev6v;$=kZ;Y2w@`{qLx#fie020?>!OZU6uP diff --git a/servers/shapes-api/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java b/servers/shapes-api/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java deleted file mode 100644 index 5606894..0000000 --- a/servers/shapes-api/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class ApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/servers/shapes-api/stack b/servers/shapes-api/stack deleted file mode 100755 index 072aa08..0000000 --- a/servers/shapes-api/stack +++ /dev/null @@ -1,224 +0,0 @@ -#!/bin/sh - -set -eu - -Show_Help() -{ - ############################################################################ - # EXECUTION - ############################################################################ - - echo && cat ./docker/usage-help.txt && echo -} - -Build_Docker_Image() -{ - ############################################################################ - # INPUT - ############################################################################ - - local docker_image="${1? Missing docker image name!!!}" - - - ############################################################################ - # EXECUTION - ############################################################################ - - sudo docker build \ - --pull \ - --tag "${docker_image}" \ - ./docker -} - -Docker_Container_Is_Running() -{ - ############################################################################ - # INPUT - ############################################################################ - - local container_name="${1? Missing container name!!!}" - - - ############################################################################ - # EXECUTION - ############################################################################ - - sudo docker container ls -a | grep -qw "${container_name}" - - - return $? -} - -Attach_To_App_Container() -{ - ############################################################################ - # INPUT - ############################################################################ - - local container_name="${1? Missing container name!!!}" - - local container_user="${2? Missing container user!!!}" - - local background_mode="${3? Missing backround mode to run the container!!!}" - - local run_command="${4? Missing command to run in the container!!!}" - - shift 4 - - - ############################################################################ - # EXECUTION - ############################################################################ - - sudo docker exec \ - --user ${container_user} \ - ${background_mode} \ - ${container_name} \ - ${run_command} ${@} -} - - -Start_Or_Attach_To_App_Container() -{ - ############################################################################ - # INPUT - ############################################################################ - - local container_name="${1? Missing container name !!!}" - - local container_user="${2? Missing container user !!!}" - - local http_port_map="${3? Missing the http port host:container !!!}" - - local https_port_map="${4? Missing the https port map host:container !!!}" - - local background_mode="${5? Missing backround mode to run the container !!!}" - - local docker_image="${6? Missing docker image name !!!}" - - local run_command="${7? Missing command to run in the docker container !!!}" - - shift 7 - - - ############################################################################ - # EXECUTION - ############################################################################ - - mkdir -p "${PWD}"/.local/.gradle - - if Docker_Container_Is_Running "${container_name}" ; then - Attach_To_App_Container \ - "${container_name}" \ - "${container_user}" \ - "${background_mode}" \ - "${run_command}" - "${@}" - - return - fi - - sudo docker run \ - -it \ - --rm \ - --user "${container_user}" \ - --env-file .env \ - --name "${container_name}" \ - --publish "127.0.0.1:${http_port_map}" \ - --publish "127.0.0.1:${https_port_map}" \ - --volume "$PWD:/home/java/workspace" \ - --volume "${PWD}/.local/.gradle:/home/java/.gradle" \ - ${docker_image} ${run_command} -} - -Main() -{ - ############################################################################ - # CONSTANTS - ############################################################################ - - local DOCKER_IMAGE="approov/java-spring-demo:11" - - local CONTAINER_NAME="java-spring-demo" - - - ############################################################################ - # INPUT / EXECUTION - ############################################################################ - - local container_user="$(id -u)" - - local http_port_map=8002:8002 - local https_port_map=8003:8003 - - local background_mode="-it" - - for input in "${@}"; do - case "${input}" in - - -d | --detached ) - background_mode="--detach" - shift 1 - ;; - - -h | --help ) - Show_Help - exit 0 - ;; - - --http ) - http_port_map="${2? Missing HTTP port map host:container}" - shift 2 - ;; - - --https ) - https_port_map="${2? Missing HTTPS port host:container}" - shift 2 - ;; - - -u | --user) - container_user="${2? Missing user name or uid to use inside the container}" - shift 2 - ;; - - build) - Build_Docker_Image "${DOCKER_IMAGE}" - exit 0 - ;; - - down ) - sudo docker container stop "java-spring-demo" - exit 0 - ;; - - shell ) - Start_Or_Attach_To_App_Container \ - "${CONTAINER_NAME}" \ - "${container_user}" \ - "${http_port_map}" \ - "${https_port_map}" \ - "${background_mode}" \ - "${DOCKER_IMAGE}" \ - "${2:-zsh}" - - exit 0 - ;; - - up ) - Start_Or_Attach_To_App_Container \ - "${CONTAINER_NAME}" \ - "${container_user}" \ - "${http_port_map}" \ - "${https_port_map}" \ - "${background_mode}" \ - "${DOCKER_IMAGE}" \ - "./gradlew bootRun" - - exit 0 - ;; - esac - done - - Show_Help -} - -Main "${@}" diff --git a/test.sh b/test.sh new file mode 100644 index 0000000..c948d43 --- /dev/null +++ b/test.sh @@ -0,0 +1,406 @@ +#!/bin/bash +set -o errexit +set -o nounset +set -o pipefail + +####################################### +# Approov demo API test harness. +# +# Description: +# Calls unprotected and protected endpoints of the Approov demo API, +# validates HTTP status codes and logs complete HTTP exchanges +# (request + response) to a timestamped log file. +# +# Dependencies: +# - bash +# - curl +# - approov CLI available on PATH and configured +# +# Environment: +# BASE_URL: +# Base URL of the API under test. Default: http://localhost:8080 +# TOKDIR: +# Directory where temporary token files are stored. Default: .config +# LOGDIR=${TOKDIR}/logs, LOGFILE=${LOGDIR}/.log +####################################### + +# Constants +readonly BASE_URL="${BASE_URL:-http://localhost:8080}" +readonly TOKDIR="${TOKDIR:-.config}" +readonly LOGDIR="${TOKDIR}/logs" +readonly LOGFILE="${LOGDIR}/$(date '+%Y-%m-%d_%H-%M-%S').log" + +# Globals +# is_approov_disabled: +# Boolean flag indicating if Approov checks appear disabled +# based on /approov-state endpoint. +is_approov_disabled=false + +# state_http_code: +# HTTP status code from /approov-state endpoint. +state_http_code='' + +####################################### +# Print error message to STDERR with timestamp. +# Globals: +# None +# Arguments: +# All arguments are printed as the error message. +# Outputs: +# Writes formatted error message to STDERR. +# Returns: +# 0 +####################################### +err() { + echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2 +} + +####################################### +# Ensure a required command exists on PATH. +# Globals: +# None +# Arguments: +# command name to check. +# Outputs: +# Error message to STDERR if command is missing. +# Returns: +# Exits the script with code 1 if the command is missing. +####################################### +requirement_check() { + local cmd="$1" + + if ! command -v "${cmd}" >/dev/null 2>&1; then + err "Missing required command: ${cmd}" + exit 1 + fi +} + +####################################### +# Generate an Approov token into an output file. +# Globals: +# none +# Arguments: +# output file path. +# arguments passed to "approov token". +# Outputs: +# Writes token (if generated) to the output file. +# Returns: +# 0 on success. +# 1 on failure. +####################################### +gen_token() { + local outfile="$1" + shift + + set +o errexit + approov token "$@" >"${outfile}" + local rc=$? + set -o errexit + + if (( rc != 0 )); then + err "Approov CLI failed: approov token $*" + return 1 + fi + + return 0 +} + +####################################### +# Print test result and append full HTTP exchange to a log file. +# Globals: +# LOGFILE +# state_http_code +# Arguments: +# $1 - test name. +# $2 - expected HTTP status code. +# $3 - actual HTTP status code. +# $4 - full HTTP response (headers + body). +# Outputs: +# Human-readable result to STDOUT. +# Detailed log entry appended to LOGFILE. +# Returns: +# 0 +####################################### +print_test_result() { + local name="$1" + local expected="$2" + local status="$3" + local resp="$4" + + local result="Failed" + if [[ "${status}" == "${expected}" ]]; then + result="Passed" + fi + + echo "${name}: ${result} (status: ${status}, expected: ${expected})" + + { + echo "Test: ${name}" + echo "Expected status: ${expected}" + echo "Actual status: ${status}" + if [[ "${state_http_code:-}" == "200" ]]; then + echo "Approov State: enabled, token checks performed." + else + echo "Approov State: disabled, no checks performed." + fi + echo + echo "HTTP exchange:" + echo "${resp}" + echo + } >>"${LOGFILE}" 2>&1 +} + +####################################### +# Execute a curl call for a test and evaluate the result. +# Globals: +# LOGFILE (written via print_test_result) +# state_http_code (read via print_test_result for logging) +# Arguments: +# test name. +# expected HTTP status code. +# arguments passed to curl. +# Outputs: +# Short result to STDOUT, full HTTP exchange appended to LOGFILE. +# Returns: +# 0 on success, curl's exit code on failure +####################################### + +run_test() { + local name="$1"; shift + local expected="$1"; shift + + local resp + local status + local curl_rc + + # -i: include headers; -s: silent + set +o errexit + resp="$(curl -i -s "$@")" + curl_rc=$? + set -o errexit + + if (( curl_rc != 0 )); then + err "curl failed for ${name} (rc=${curl_rc})" + return $curl_rc + fi + + status="$( + printf '%s\n' "${resp}" \ + | grep -m1 '^HTTP/' \ + | awk '{print $2}' + )" + + print_test_result "${name}" "${expected}" "${status}" "${resp}" +} + +main() { + requirement_check "approov" + requirement_check "curl" + + mkdir -p "${TOKDIR}" "${LOGDIR}" + + echo "Listing Approov API configuration:" + approov api -list + echo + + echo "Approov state check:" + local state_response + state_response="$(curl -i -s "${BASE_URL}/approov-state")" + state_http_code="$( + printf '%s\n' "${state_response}" \ + | grep -m1 '^HTTP/' \ + | awk '{print $2}' + )" + + if [[ "${state_http_code}" != "200" || -z "${state_http_code}" ]]; then + err "Failed to get Approov state from ${BASE_URL}/approov-state (status=${state_http_code:-unknown})" + exit 1 + fi + + +if grep -q '"approovEnabled":true' <<<"${state_response}"; then + echo " Approov service: ENABLED" + is_approov_disabled=false +else + echo " Approov service: DISABLED" + is_approov_disabled=true +fi +echo + + # 0) Unprotected endpoint. + run_test \ + "Unprotected request - no approov protection" \ + 200 \ + "${BASE_URL}/unprotected" + + # 1) Token check (single binding). + gen_token \ + "${TOKDIR}/approov_token_1_valid" \ + -genExample \ + example.com + + # 1.1 Valid Token. + local expected_status=200 + run_test \ + "Token check - valid token" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_1_valid")" \ + "${BASE_URL}/token-check" + + # 1.2 Invalid Token. + gen_token \ + "${TOKDIR}/approov_token_1_invalid" \ + -genExample \ + example.com \ + -type invalid || true + + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + + run_test \ + "Token check - invalid token" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_1_invalid")" \ + "${BASE_URL}/token-check" + + # 2) Token Binding ["Authorization"]. + local AUTH_VAL="ExampleAuthToken==" + export HASH_INPUT="${AUTH_VAL}" + + gen_token \ + "${TOKDIR}/approov_token_2_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 2.1 Valid Token. + expected_status=200 + run_test \ + "Single Binding - valid token and header" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-binding" + + # 2.2 Missing Header. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "Single Binding - missing Authorization header" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-binding" + + # 2.3 Incorrect Header. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "Single Binding - incorrect Authorization header" \ + "${expected_status}" \ + -H "Authorization: BadAuthToken==" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ + "${BASE_URL}/token-binding" + + # 2.4 Invalid Token. + gen_token \ + "${TOKDIR}/approov_token_2_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid || true + + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "Single Binding - invalid token" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_2_invalid")" \ + "${BASE_URL}/token-binding" + + # 3) Token Binding ["Authorization", "Content-Digest"]. + local AUTH_VAL2="ExampleAuthToken==" + local CD_VAL="ContentDigest==" + export HASH_INPUT="${AUTH_VAL2}${CD_VAL}" + + gen_token \ + "${TOKDIR}/approov_token_3_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 3.1 Valid. + expected_status=200 + run_test \ + "Double Binding - valid token and headers" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.2 Missing headers. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "Double Binding - missing binding headers" \ + "${expected_status}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.3 Incorrect headers. + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "Double Binding - incorrect binding headers" \ + "${expected_status}" \ + -H "Authorization: BadAuthToken==" \ + -H "Content-Digest: BadContentDigest==" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.4 Invalid token. + gen_token \ + "${TOKDIR}/approov_token_3_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid || true + + if [[ "${is_approov_disabled}" == true ]]; then + expected_status=200 + else + expected_status=401 + fi + run_test \ + "Double Binding - invalid token" \ + "${expected_status}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(cat "${TOKDIR}/approov_token_3_invalid")" \ + "${BASE_URL}/token-double-binding" + + echo + echo "Full request and response details are saved in:" + echo " ${LOGFILE}" +} + +main "$@" diff --git a/servers/hello/src/approov-protected-server/token-binding-check/.env.example b/token-binding-check/.env.example similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/.env.example rename to token-binding-check/.env.example diff --git a/servers/hello/src/approov-protected-server/token-binding-check/README.md b/token-binding-check/README.md similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/README.md rename to token-binding-check/README.md diff --git a/servers/hello/src/approov-protected-server/token-binding-check/build.gradle b/token-binding-check/build.gradle similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/build.gradle rename to token-binding-check/build.gradle diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.jar b/token-binding-check/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.jar rename to token-binding-check/gradle/wrapper/gradle-wrapper.jar diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.properties b/token-binding-check/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/gradle/wrapper/gradle-wrapper.properties rename to token-binding-check/gradle/wrapper/gradle-wrapper.properties diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradlew b/token-binding-check/gradlew similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/gradlew rename to token-binding-check/gradlew diff --git a/servers/hello/src/approov-protected-server/token-binding-check/gradlew.bat b/token-binding-check/gradlew.bat similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/gradlew.bat rename to token-binding-check/gradlew.bat diff --git a/servers/hello/src/approov-protected-server/token-binding-check/settings.gradle b/token-binding-check/settings.gradle similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/settings.gradle rename to token-binding-check/settings.gradle diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java rename to token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/resources/application.properties b/token-binding-check/src/main/resources/application.properties similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/resources/application.properties rename to token-binding-check/src/main/resources/application.properties diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/main/resources/keystore/ApproovTLS.p12 b/token-binding-check/src/main/resources/keystore/ApproovTLS.p12 similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/main/resources/keystore/ApproovTLS.p12 rename to token-binding-check/src/main/resources/keystore/ApproovTLS.p12 diff --git a/servers/hello/src/approov-protected-server/token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java b/token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java rename to token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java diff --git a/servers/hello/src/approov-protected-server/token-check/.env.example b/token-check/.env.example similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/.env.example rename to token-check/.env.example diff --git a/servers/hello/src/approov-protected-server/token-check/README.md b/token-check/README.md similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/README.md rename to token-check/README.md diff --git a/servers/hello/src/approov-protected-server/token-check/build.gradle b/token-check/build.gradle similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/build.gradle rename to token-check/build.gradle diff --git a/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.jar b/token-check/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.jar rename to token-check/gradle/wrapper/gradle-wrapper.jar diff --git a/servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.properties b/token-check/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/gradle/wrapper/gradle-wrapper.properties rename to token-check/gradle/wrapper/gradle-wrapper.properties diff --git a/servers/hello/src/approov-protected-server/token-check/gradlew b/token-check/gradlew similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/gradlew rename to token-check/gradlew diff --git a/servers/hello/src/approov-protected-server/token-check/gradlew.bat b/token-check/gradlew.bat similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/gradlew.bat rename to token-check/gradlew.bat diff --git a/servers/hello/src/approov-protected-server/token-check/settings.gradle b/token-check/settings.gradle similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/settings.gradle rename to token-check/settings.gradle diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java b/token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/Application.java b/token-check/src/main/java/com/criticalblue/approov/jwt/Application.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/Application.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/Application.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java b/token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java b/token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java rename to token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/resources/application.properties b/token-check/src/main/resources/application.properties similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/resources/application.properties rename to token-check/src/main/resources/application.properties diff --git a/servers/hello/src/approov-protected-server/token-check/src/main/resources/keystore/ApproovTLS.p12 b/token-check/src/main/resources/keystore/ApproovTLS.p12 similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/main/resources/keystore/ApproovTLS.p12 rename to token-check/src/main/resources/keystore/ApproovTLS.p12 diff --git a/servers/hello/src/approov-protected-server/token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java b/token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java similarity index 100% rename from servers/hello/src/approov-protected-server/token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java rename to token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java From f25d03fdae56a214ade94934ce1884d65f0a86cb Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Tue, 9 Dec 2025 11:36:18 +0000 Subject: [PATCH 04/22] refactor-all --- .../approov/jwt/ApiController.java | 27 ---- .../criticalblue/approov/jwt/Application.java | 71 --------- .../jwt/CustomServletErrorAttributes.java | 27 ---- .../approov/jwt/WebSecurityConfig.java | 72 --------- .../authentication/ApproovAuthentication.java | 137 ------------------ .../ApproovAuthenticationEntryPoint.java | 43 ------ .../ApproovAuthenticationException.java | 25 ---- .../ApproovAuthenticationProvider.java | 48 ------ .../jwt/authentication/ApproovConfig.java | 73 ---------- .../jwt/authentication/ApproovException.java | 9 -- .../ApproovJwtAuthentication.java | 20 --- .../ApproovSecurityContextRepository.java | 84 ----------- .../ApproovTokenBindingAuthentication.java | 81 ----------- ...ovTokenBindingAuthenticationException.java | 25 ---- .../src/main/resources/application.properties | 41 ------ .../main/resources/keystore/ApproovTLS.p12 | Bin 2599 -> 0 bytes .../approov/jwt/ApplicationTests.java | 19 --- 17 files changed, 802 deletions(-) delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java delete mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java delete mode 100644 token-binding-check/src/main/resources/application.properties delete mode 100644 token-binding-check/src/main/resources/keystore/ApproovTLS.p12 delete mode 100644 token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java deleted file mode 100644 index 9e231e0..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import java.util.LinkedHashMap; -import java.util.Map; - -@RestController -public class ApiController { - - private static Logger logger = LoggerFactory.getLogger(ApiController.class); - - @GetMapping("/") - public Map helloV1() { - - logger.info("Serving request for endpoint '/', that is protect by an Approov Token."); - - Map response = new LinkedHashMap<>(); - - response.put("message", "Hello, World!"); - - return response; - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java deleted file mode 100644 index c547b68..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/Application.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.apache.catalina.Context; -import org.apache.catalina.connector.Connector; -import org.apache.tomcat.util.descriptor.web.SecurityCollection; -import org.apache.tomcat.util.descriptor.web.SecurityConstraint; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; -import org.springframework.boot.web.servlet.server.ServletWebServerFactory; -import org.springframework.context.annotation.Bean; - -@SpringBootApplication -public class Application { - - private static Logger logger = LoggerFactory.getLogger(Application.class); - - @Value("${http.port}") - private int httpPort; - - @Value("${https.port}") - private int httpsPort; - - @Value("${http.redirect}") - private boolean isToRedirectHttp; - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - - @Bean - public ServletWebServerFactory servletContainer() { - - TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { - - @Override - protected void postProcessContext(Context context) { - if (isToRedirectHttp) { - logger.info("Creating security constrain to redirect http to https."); - SecurityConstraint securityConstraint = new SecurityConstraint(); - securityConstraint.setUserConstraint("CONFIDENTIAL"); - SecurityCollection collection = new SecurityCollection(); - collection.addPattern("/*"); - securityConstraint.addCollection(collection); - context.addConstraint(securityConstraint); - } - } - }; - - tomcat.addAdditionalTomcatConnectors(createConnector()); - return tomcat; - } - - private Connector createConnector() { - Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); - - connector.setScheme("http"); - connector.setPort(httpPort); - connector.setSecure(false); - - if (isToRedirectHttp) { - logger.info("Redirecting http to port: {}", httpsPort); - connector.setRedirectPort(httpsPort); - } - - return connector; - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java deleted file mode 100644 index 3abac84..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.springframework.boot.web.servlet.error.DefaultErrorAttributes; -import org.springframework.boot.web.error.ErrorAttributeOptions; -import org.springframework.stereotype.Component; -import org.springframework.web.context.request.WebRequest; -import java.util.Map; - -@Component -public class CustomServletErrorAttributes extends DefaultErrorAttributes { - - @Override - public Map getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) { - - Map errorAttributes = super.getErrorAttributes(webRequest, options); - - // Remove from response in order to make the response comply with the Hello API specification - errorAttributes.remove("timestamp"); - errorAttributes.remove("message"); - errorAttributes.remove("path"); - errorAttributes.remove("error"); - errorAttributes.remove("trace"); - errorAttributes.remove("status"); - - return errorAttributes; - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java deleted file mode 100644 index 8ef6bcb..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - // @IMPORTANT Approov token check must be at Order 1. Any other type of - // Authentication (User, API Key, etc.) for the request should go - // after this one with @Order(2). - @Order(1) - public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/**").authenticated(); - } - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java deleted file mode 100644 index 80b5208..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.util.Collection; -import java.util.Collections; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; -import io.jsonwebtoken.Jwts; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.GrantedAuthority; - - -/** - * Validates the Approov Token is signed with the shared secret between Approov and the API server, that have not - * expired, and optionally also validates the token binding in the Approov token matches the token binding header. - * - * @see ApproovAuthenticationProvider - * @see ApproovSecurityContextRepository - */ -public class ApproovAuthentication implements ApproovJwtAuthentication { - - private static Logger logger = LoggerFactory.getLogger(ApproovAuthentication.class); - - private final ApproovTokenBindingAuthentication approovPayload = new ApproovTokenBindingAuthentication(); - - private final ApproovConfig approovConfig; - - private Claims approovTokenPayloadClaims; - - private final String tokenBindingHeader; - - private String approovToken; - - private boolean isAuthenticated = false; - - private boolean validTokenBinding; - - /** - * Constructs the Approov Authentication instance that will validate the Approov token and the token binding. - * - * @param approovConfig Extracted from the .env file in the root of the package. - * @param approovToken Extracted from the header `Approov-Token`. - * @param tokenBindingHeader Extracted by default from the request header `Authorization`. - */ - ApproovAuthentication(ApproovConfig approovConfig, String approovToken, String tokenBindingHeader) { - this.approovConfig = approovConfig; - this.approovToken = approovToken; - this.tokenBindingHeader = tokenBindingHeader; - } - - @Override - public void verifyApproovToken(byte[] approovSecret) throws ApproovAuthenticationException { - - if (approovSecret == null) { - throw new ApproovAuthenticationException("The Approov secret is null.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - if (approovToken == null) { - throw new ApproovAuthenticationException("The Approov token is null.", HttpStatus.FORBIDDEN.value()); - } - - approovToken = approovToken.trim(); - - if (approovToken.equals("")) { - throw new ApproovAuthenticationException("The Approov token is empty.", HttpStatus.BAD_REQUEST.value()); - } - - try { - - approovTokenPayloadClaims = Jwts.parser() - .setSigningKey(approovSecret) - .parseClaimsJws(approovToken) - .getBody(); - - logger.info("Request approved with a valid Approov token."); - - } catch (JwtException e) { - String message = "Request with an invalid Approov token: " + e.getMessage(); - throw new ApproovAuthenticationException(message, HttpStatus.UNAUTHORIZED.value()); - } - - validTokenBinding = approovPayload.checkClaimMatchesFor(tokenBindingHeader, approovTokenPayloadClaims, approovConfig); - - isAuthenticated = true; - } - - @Override - public Claims getApproovTokenPayloadClaims() { - return approovTokenPayloadClaims; - } - - @Override - public boolean isValidTokenBinding() { - return validTokenBinding; - } - - @Override - public Collection getAuthorities() { - return Collections.emptyList(); - } - - @Override - public Object getCredentials() { - return approovToken; - } - - @Override - public Object getDetails() { - return approovTokenPayloadClaims; - } - - @Override - public Object getPrincipal() { - return null; - } - - @Override - public boolean isAuthenticated() { - return isAuthenticated; - } - - @Override - public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { - if (isAuthenticated) { - throw new ApproovAuthenticationException("A new Approov Authentication instance needs to be created to set this.isAuthenticated.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - } - - @Override - public String getName() { - return null; - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java deleted file mode 100644 index cf4bacd..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.web.AuthenticationEntryPoint; - - -/** - * When a failure occurs during the Approov token authentication process, an exception is thrown and Spring redirects - * to an authentication entry point, that have been configured in the Sring security to be this one. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - * @see ApproovAuthentication - * @see ApproovTokenBindingAuthentication - */ -public class ApproovAuthenticationEntryPoint implements AuthenticationEntryPoint { - - private final static Logger logger = LoggerFactory.getLogger(ApproovAuthenticationEntryPoint.class); - - @Override - public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { - int httpStatusCode = HttpStatus.BAD_REQUEST.value(); - - if (authException instanceof ApproovException) { - httpStatusCode = ((ApproovException) authException).getHttpStatusCode(); - } - - final String httpStatusMessage = String.valueOf(HttpStatus.valueOf(httpStatusCode)); - final String exceptionType = String.valueOf(authException.getClass()); - final String exceptionMessage = authException.getMessage(); - - logger.error(httpStatusMessage + " | " + exceptionType + " | " + exceptionMessage + " | Stacktrace origin: " + authException.getStackTrace()[0].toString()); - response.sendError(httpStatusCode); - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java deleted file mode 100644 index 1cc01b5..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.AuthenticationException; -import org.springframework.web.bind.annotation.ResponseStatus; - -/** - * Custom exception for failures when verifying the Approov token signature and - * expiration time. - * - * @see ApproovAuthentication - */ -class ApproovAuthenticationException extends AuthenticationException implements ApproovException { - - private final int httpStatusCode; - - public ApproovAuthenticationException(String msg, int httpStatusCode) { - super(msg); - this.httpStatusCode = httpStatusCode; - } - - public int getHttpStatusCode() { - return this.httpStatusCode; - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java deleted file mode 100644 index 1dc739f..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.apache.tomcat.util.codec.binary.Base64; - -import org.jetbrains.annotations.NotNull; - -import org.springframework.security.authentication.AuthenticationProvider; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.AuthenticationException; - -/** - * Used to configure the Spring framework security with the trigger for the Approov Authentication. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - * @see ApproovAuthentication - */ -public class ApproovAuthenticationProvider implements AuthenticationProvider { - - private final byte[] approovSecret; - - /** - * Constructs the Approov Authentication provider with an instance of the Approov config. - * - * @param approovConfig Extracted from the .env file in the root of the package. - */ - public ApproovAuthenticationProvider(ApproovConfig approovConfig) { - this.approovSecret = Base64.decodeBase64(approovConfig.getApproovBase64Secret()); - } - - @Override - public boolean supports(Class authentication) { - return ApproovJwtAuthentication.class.isAssignableFrom(authentication); - } - - @Override - public Authentication authenticate(@NotNull Authentication authentication) throws AuthenticationException { - - if (!supports(authentication.getClass())) { - return null; - } - - ApproovJwtAuthentication approovTokenAuthentication = (ApproovJwtAuthentication) authentication; - - approovTokenAuthentication.verifyApproovToken(approovSecret); - - return approovTokenAuthentication; - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java deleted file mode 100644 index 3937fa9..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.springframework.http.HttpStatus; - -/** - * The Approov configuration that is built from the .env file in the root of the package. - */ -final public class ApproovConfig { - - private static ApproovConfig ourInstance = new ApproovConfig(); - - private String approovHeaderName = "Approov-Token"; - - private String approovBase64Secret; - - private final String approovTokenBindingHeaderName; - - /** - * Constructs the Approov Config singleton with values retrieved from the .env file in the root of the project. - */ - private ApproovConfig() { - this.approovBase64Secret = retrieveApproovBase64Secret(); - this.approovTokenBindingHeaderName = retrieveStringValueFromEnv("APPROOV_TOKEN_BINDING_HEADER_NAME", "Authorization"); - } - - public static ApproovConfig getInstance() { - return ourInstance; - } - - String getApproovHeaderName() { - return approovHeaderName; - } - - String getApproovTokenBindingHeaderName() { - return approovTokenBindingHeaderName; - } - - String getApproovBase64Secret() { - return approovBase64Secret; - } - - private String retrieveApproovBase64Secret() { - approovBase64Secret = System.getenv("APPROOV_BASE64_SECRET"); - - if (approovBase64Secret == null) { - throw new ApproovAuthenticationException("Cannot retrieve APPROOV_BASE64_SECRET from the environment.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - return approovBase64Secret; - } - - private String retrieveStringValueFromEnv(String key, String defaultValue) { - - String value = System.getenv(key); - - if (value == null) { - return defaultValue; - } - - return value.trim(); - } - - private boolean retrieveBooleanValueFromEnv(String key, boolean defaultValue) { - - String value = System.getenv(key); - - if (value == null) { - return defaultValue; - } - - return value.trim().equalsIgnoreCase("true"); - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java deleted file mode 100644 index 60b7576..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -/** - * The Interface to be used in the Approov exceptions. - */ -public interface ApproovException { - - public int getHttpStatusCode(); -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java deleted file mode 100644 index c527f03..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; - -import org.springframework.security.core.Authentication; - -/** - * The Interface to be used in the Approov authentication. - * - * @see ApproovAuthentication - */ -public interface ApproovJwtAuthentication extends Authentication { - - boolean isValidTokenBinding(); - - Claims getApproovTokenPayloadClaims(); - - void verifyApproovToken(byte[] secret) throws JwtException, ApproovAuthenticationException; -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java deleted file mode 100644 index 18d3c62..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.web.context.HttpRequestResponseHolder; -import org.springframework.security.web.context.SecurityContextRepository; - -/** - * Used to setup the Approov Authentication Context when configuring the Spring framework security. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - */ -public class ApproovSecurityContextRepository implements SecurityContextRepository { - - private String approovToken = null; - - final private ApproovConfig approovConfig; - - /** - * Constructs with an instance of the Approov configuration, and with a boolean flag to indicate if is to check the - * token binding in the Approov token. - * - * @param approovConfig Extracted from the .env file in the root of the project. - */ - public ApproovSecurityContextRepository(ApproovConfig approovConfig) { - this.approovConfig = approovConfig; - } - - @Override - public SecurityContext loadContext(HttpRequestResponseHolder requestResponseHolder) { - - String tokenBindingHeader = null; - - HttpServletRequest request = requestResponseHolder.getRequest(); - - SecurityContext context = SecurityContextHolder.createEmptyContext(); - - approovToken = request.getHeader(approovConfig.getApproovHeaderName()); - - if (approovToken == null) { - // returning an empty security context in an endpoint protected by - // Approov, will cause Spring to later throw this exception: - // org.springframework.security.access.AccessDeniedException: Access is denied - return context; - } - - tokenBindingHeader = getTokenBindingHeader(request); - - Authentication approovAuthentication = new ApproovAuthentication(approovConfig, approovToken, tokenBindingHeader); - context.setAuthentication(approovAuthentication); - - return context; - } - - private String getTokenBindingHeader(HttpServletRequest request) { - - final String headerName = approovConfig.getApproovTokenBindingHeaderName(); - - if (headerName == null) { - return null; - } - - final String tokenBindingHeader = request.getHeader(headerName); - - if (tokenBindingHeader == null) { - return null; - } - - return tokenBindingHeader.trim(); - } - - @Override - public void saveContext(SecurityContext context, HttpServletRequest request, HttpServletResponse response) { - } - - @Override - public boolean containsContext(HttpServletRequest request) { - return approovToken != null; - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java deleted file mode 100644 index 186e3f5..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -import io.jsonwebtoken.Claims; - -import org.apache.tomcat.util.codec.binary.Base64; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.security.authentication.AuthenticationServiceException; - -public class ApproovTokenBindingAuthentication { - - private static Logger logger = LoggerFactory.getLogger(ApproovAuthentication.class); - - /** - * Checks the value in the key `pay` of an Approov token matches the token binding header, that by default is - * the value for the `Authorization` header. - * - * @param tokenBindingHeader Extracted from an header, that by default is the Authorization header. - * @param approovTokenPayloadClaims Extracted from the already verified Approov token. - * @param approovConfig Extracted from the .env file in the root of the package. - * @return - */ - boolean checkClaimMatchesFor(String tokenBindingHeader, Claims approovTokenPayloadClaims, ApproovConfig approovConfig) { - - if (tokenBindingHeader == null) { - throw new ApproovTokenBindingAuthenticationException("The token binding header value is null.", HttpStatus.BAD_REQUEST.value()); - } - - final String approovTokenBindingClaim = getApproovTokenBindingClaim(approovTokenPayloadClaims, approovConfig); - - boolean isValidTokenBinding = getHashBase64Encoded(tokenBindingHeader).equals(approovTokenBindingClaim); - - if (isValidTokenBinding) { - logger.info("Request approved with a valid token binding in the Approov token."); - return isValidTokenBinding; - } - - // When the token binding header does not match the value in key `pay` - // of the Approov token, the request is aborted. - throw new ApproovTokenBindingAuthenticationException("The token binding header does not match the key `pay` in the Approov token.", HttpStatus.UNAUTHORIZED.value()); - } - - private String getApproovTokenBindingClaim(Claims approovTokenPayloadClaims, ApproovConfig approovConfig) { - - if (approovTokenPayloadClaims == null) { - throw new ApproovTokenBindingAuthenticationException("Approov token payload is null.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - if ( ! approovTokenPayloadClaims.containsKey("pay") ) { - throw new ApproovTokenBindingAuthenticationException("The key `pay`, for the token binding, is missing in the Approov token payload.", HttpStatus.BAD_REQUEST.value()); - } - - final String approovTokenBindingClaim = approovTokenPayloadClaims.get("pay").toString(); - - if (approovTokenBindingClaim == null || approovTokenBindingClaim.trim().equals("")) { - throw new ApproovTokenBindingAuthenticationException("The token binding in the Approov token is null or empty.", HttpStatus.BAD_REQUEST.value()); - } - - return approovTokenBindingClaim; - } - - private String getHashBase64Encoded(String value) { - - final MessageDigest digest; - - try { - digest = MessageDigest.getInstance("SHA-256"); - } catch (NoSuchAlgorithmException e) { - throw new AuthenticationServiceException(e.getMessage()); - } - - byte[] hash = digest.digest(value.getBytes(StandardCharsets.UTF_8)); - return Base64.encodeBase64String(hash); - } -} diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java b/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java deleted file mode 100644 index 563da70..0000000 --- a/token-binding-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthenticationException.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.springframework.security.core.AuthenticationException; - -/** - * Custom exception for failures in the validation of the token binding in an Approov token. - * - * This exception is only thrown when `APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING` is set to `true` in the - * .env file at the root of the project. - * - * @see ApproovTokenBindingAuthentication - */ -class ApproovTokenBindingAuthenticationException extends AuthenticationException implements ApproovException { - - private final int httpStatusCode; - - ApproovTokenBindingAuthenticationException(String msg, int httpStatusCode) { - super(msg); - this.httpStatusCode = httpStatusCode; - } - - public int getHttpStatusCode() { - return httpStatusCode; - } -} diff --git a/token-binding-check/src/main/resources/application.properties b/token-binding-check/src/main/resources/application.properties deleted file mode 100644 index cda3b69..0000000 --- a/token-binding-check/src/main/resources/application.properties +++ /dev/null @@ -1,41 +0,0 @@ -######################### -# SPRING CONFIGURATION -######################### - -spring.mvc.throw-exception-if-no-handler-found: true -spring.resources.add-mappings: false - - -######################### -# LOGGER CONFIGURATION -######################### - -logging.level.root: ERROR -logging.level.org.hibernate: ERROR -logging.level.org.springframework.web: ERROR -logging.level.org.springframework.security: ERROR -logging.level.com.criticalblue.approov: INFO - - -####################### -# HTTP CONFIGURATION -####################### - -# This vars need to be set in the .env file or in the environment -http.port: ${HTTP_PORT} -http.redirect: ${HTTP_REDIRECT} - - -####################### -# HTTPS CONFIGURATION -####################### - -# Needs to be set in the .env file or in the environment -server.port: ${HTTPS_PORT} - -# Self signed certificate was generated with: -# keytool -genkeypair -alias ApproovTLS -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore ApproovTLS.p12 -validity 100000 -server.ssl.key-store-type: PKCS12 -server.ssl.key-store: classpath:keystore/ApproovTLS.p12 -server.ssl.key-store-password: supersecret -server.ssl.key-alias: ApproovTLS diff --git a/token-binding-check/src/main/resources/keystore/ApproovTLS.p12 b/token-binding-check/src/main/resources/keystore/ApproovTLS.p12 deleted file mode 100644 index 72a21633bfa69d2a3289d47f81d8b2dd3f14f23b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2599 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 diff --git a/token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java b/token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java deleted file mode 100644 index 0a8fc7d..0000000 --- a/token-binding-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.junit.jupiter.api.Test; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.http.ResponseEntity; - -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest -public class ApplicationTests { - - @Test - public void contextLoads() { - } - -} From 5f8cb6660184762676dfdf90dedcd3dfbc5b29df Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Tue, 9 Dec 2025 12:18:53 +0000 Subject: [PATCH 05/22] vibe-01 --- .../approov/ApproovApplication.java | 286 ++++++++++++++++++ token-check/.env.example | 22 -- token-check/README.md | 122 -------- token-check/build.gradle | 35 --- token-check/gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - token-check/gradlew | 244 --------------- token-check/gradlew.bat | 92 ------ token-check/settings.gradle | 6 - .../approov/jwt/ApiController.java | 28 -- .../criticalblue/approov/jwt/Application.java | 71 ----- .../jwt/CustomServletErrorAttributes.java | 27 -- .../approov/jwt/WebSecurityConfig.java | 69 ----- .../authentication/ApproovAuthentication.java | 122 -------- .../ApproovAuthenticationEntryPoint.java | 43 --- .../ApproovAuthenticationException.java | 25 -- .../ApproovAuthenticationProvider.java | 48 --- .../jwt/authentication/ApproovConfig.java | 73 ----- .../jwt/authentication/ApproovException.java | 9 - .../ApproovJwtAuthentication.java | 18 -- .../ApproovSecurityContextRepository.java | 63 ---- .../src/main/resources/application.properties | 41 --- .../main/resources/keystore/ApproovTLS.p12 | Bin 2599 -> 0 bytes .../approov/jwt/ApplicationTests.java | 19 -- 24 files changed, 286 insertions(+), 1183 deletions(-) create mode 100644 token-binding-check/src/main/java/com/criticalblue/approov/ApproovApplication.java delete mode 100644 token-check/.env.example delete mode 100644 token-check/README.md delete mode 100644 token-check/build.gradle delete mode 100644 token-check/gradle/wrapper/gradle-wrapper.jar delete mode 100644 token-check/gradle/wrapper/gradle-wrapper.properties delete mode 100755 token-check/gradlew delete mode 100644 token-check/gradlew.bat delete mode 100644 token-check/settings.gradle delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/Application.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java delete mode 100644 token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java delete mode 100644 token-check/src/main/resources/application.properties delete mode 100644 token-check/src/main/resources/keystore/ApproovTLS.p12 delete mode 100644 token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/ApproovApplication.java b/token-binding-check/src/main/java/com/criticalblue/approov/ApproovApplication.java new file mode 100644 index 0000000..e7809c4 --- /dev/null +++ b/token-binding-check/src/main/java/com/criticalblue/approov/ApproovApplication.java @@ -0,0 +1,286 @@ +package com.criticalblue.approov; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.JwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.io.Decoders; +import io.jsonwebtoken.security.Keys; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.Key; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.time.Instant; +import java.util.Arrays; +import java.util.Base64; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.server.ResponseStatusException; + +/** + * Single-file Spring Boot app exposing Approov-protected endpoints. + * Only the essential Approov token + binding checks are implemented here. + */ +@SpringBootApplication +@RestController +@EnableWebSecurity +public class ApproovApplication { + + private static final Logger log = LoggerFactory.getLogger(ApproovApplication.class); + + private static final AtomicBoolean approovEnabled = new AtomicBoolean(true); + private static final AtomicBoolean tokenBindingEnabled = new AtomicBoolean(true); + + private final Key signingKey; + + public ApproovApplication() { + this.signingKey = resolveSigningKey(); + } + + public static void main(String[] args) { + SpringApplication app = new SpringApplication(ApproovApplication.class); + Map props = new HashMap<>(); + props.put("server.port", 8080); + props.put("spring.main.banner-mode", "off"); + props.put("logging.level.root", "INFO"); + app.setDefaultProperties(props); + app.run(args); + } + + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http.csrf().disable() + .authorizeRequests(auth -> auth.anyRequest().permitAll()) + .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS)); + return http.build(); + } + + // region Public endpoints + + @GetMapping("/unprotected") + public Map unprotected() { + return message("Unprotected endpoint reached at " + Instant.now()); + } + + @GetMapping("/token-check") + public Map tokenCheck( + @RequestHeader(value = "Approov-Token", required = false) String token + ) { + Claims claims = enforceToken(token); + log.debug("Token-check passed for jti={}", claims != null ? claims.getId() : "skipped"); + return message("Token check passed"); + } + + @GetMapping("/token-binding") + public Map tokenBinding( + @RequestHeader(value = "Approov-Token", required = false) String token, + @RequestHeader(value = "Authorization", required = false) String authorization + ) { + Claims claims = enforceToken(token); + enforceBinding(claims, Collections.singletonList(authorization)); + return message("Token binding passed"); + } + + @GetMapping("/token-double-binding") + public Map tokenDoubleBinding( + @RequestHeader(value = "Approov-Token", required = false) String token, + @RequestHeader(value = "Authorization", required = false) String authorization, + @RequestHeader(value = "Content-Digest", required = false) String contentDigest + ) { + Claims claims = enforceToken(token); + enforceBinding(claims, Arrays.asList(authorization, contentDigest)); + return message("Token double binding passed"); + } + + @GetMapping("/approov-state") + public Map approovState() { + Map state = new HashMap<>(); + state.put("approovEnabled", approovEnabled.get()); + state.put("tokenBindingEnabled", tokenBindingEnabled.get()); + state.put("timestamp", Instant.now().toString()); + return state; + } + + @PostMapping("/approov/enable") + public Map enableApproov() { + approovEnabled.set(true); + tokenBindingEnabled.set(true); // enabling approov re-enables binding + log.info("Approov checks enabled"); + return approovState(); + } + + @PostMapping("/approov/disable") + public Map disableApproov() { + approovEnabled.set(false); + tokenBindingEnabled.set(false); // disabling approov disables binding too + log.info("Approov checks disabled"); + return approovState(); + } + + @PostMapping("/token-binding/enable") + public Map enableBinding() { + tokenBindingEnabled.set(true); + log.info("Token binding enabled"); + return approovState(); + } + + @PostMapping("/token-binding/disable") + public Map disableBinding() { + tokenBindingEnabled.set(false); + log.info("Token binding disabled"); + return approovState(); + } + + // endregion + + // region Approov helpers + + /** + * Validates signature/claims when Approov is enabled. + */ + private Claims enforceToken(String token) { + if (!approovEnabled.get()) { + return null; + } + + if (token == null || token.isEmpty()) { + throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Missing Approov-Token header"); + } + + Claims claims; + try { + claims = Jwts.parserBuilder() + .setSigningKey(signingKey) + .build() + .parseClaimsJws(token) + .getBody(); + } catch (JwtException | IllegalArgumentException e) { + throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Invalid Approov token"); + } + + Date expiry = claims.getExpiration(); + if (expiry == null) { + throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Approov token missing expiry"); + } + return claims; + } + + /** + * Verifies the binding hash ("pay" claim) when token binding is enabled. + */ + private void enforceBinding(Claims claims, List bindingValues) { + if (!approovEnabled.get() || !tokenBindingEnabled.get()) { + return; + } + + if (bindingValues.stream().anyMatch(v -> v == null || v.isEmpty())) { + throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Missing token binding header"); + } + + String expectedBinding = claims.get("pay", String.class); + if (expectedBinding == null || expectedBinding.isEmpty()) { + throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Token missing binding claim"); + } + + String bindingData = String.join("", bindingValues); + String computedBinding = computeBinding(bindingData); + if (!bindingsMatch(expectedBinding, computedBinding) && !bindingsMatch(expectedBinding, computeBindingStd(bindingData))) { + throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Token binding mismatch"); + } + } + + private String computeBinding(String value) { + try { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] hashed = digest.digest(value.getBytes(StandardCharsets.UTF_8)); + return Base64.getUrlEncoder().withoutPadding().encodeToString(hashed); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("SHA-256 unavailable", e); + } + } + + // Approov CLI may emit bindings using standard Base64; accept both to stay compatible. + private String computeBindingStd(String value) { + try { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] hashed = digest.digest(value.getBytes(StandardCharsets.UTF_8)); + return Base64.getEncoder().withoutPadding().encodeToString(hashed); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("SHA-256 unavailable", e); + } + } + + private boolean bindingsMatch(String expected, String computed) { + return normalizeBinding(expected).equals(normalizeBinding(computed)); + } + + private String normalizeBinding(String value) { + if (value == null) { + return ""; + } + String noPad = value.replace("=", ""); + return noPad.replace('-', '+').replace('_', '/'); + } + + private Key resolveSigningKey() { + String secret = System.getenv("APPROOV_BASE64_SECRET"); + if (secret == null || secret.trim().isEmpty()) { + secret = System.getProperty("APPROOV_BASE64_SECRET"); + } + if (secret == null || secret.trim().isEmpty()) { + secret = readDotEnvSecret(); + } + if (secret == null || secret.trim().isEmpty()) { + secret = "h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww=="; + log.warn("APPROOV_BASE64_SECRET not set; using demo secret"); + } + return Keys.hmacShaKeyFor(Decoders.BASE64.decode(secret.trim())); + } + + private String readDotEnvSecret() { + java.nio.file.Path path = java.nio.file.Paths.get(".env"); + if (!java.nio.file.Files.exists(path)) { + return null; + } + try { + return java.nio.file.Files.lines(path) + .map(String::trim) + .filter(line -> !line.startsWith("#")) + .filter(line -> line.startsWith("APPROOV_BASE64_SECRET=")) + .map(line -> line.substring("APPROOV_BASE64_SECRET=".length())) + .filter(v -> !v.isEmpty()) + .findFirst() + .orElse(null); + } catch (IOException e) { + log.warn("Unable to read .env file for APPROOV_BASE64_SECRET", e); + return null; + } + } + + private Map message(String msg) { + Map payload = new HashMap<>(); + payload.put("message", msg); + return payload; + } + + // endregion +} diff --git a/token-check/.env.example b/token-check/.env.example deleted file mode 100644 index bc74c47..0000000 --- a/token-check/.env.example +++ /dev/null @@ -1,22 +0,0 @@ -########### -# SERVER -########### - -HTTP_REDIRECT=false -HTTP_PORT=8002 -HTTPS_PORT=8003 - - -############ -# APPROOV -############ - -APPROOV_TOKEN_BINDING_HEADER_NAME=Authorization - -# Feel free to play with different secrets. For development only you can create them with: -# $ openssl rand -base64 64 | tr -d '\n'; echo -APPROOV_BASE64_SECRET=h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww== - -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN=true -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING=true -APPROOV_LOGGING_ENABLED=true diff --git a/token-check/README.md b/token-check/README.md deleted file mode 100644 index 5d64da2..0000000 --- a/token-check/README.md +++ /dev/null @@ -1,122 +0,0 @@ -# Approov Token Integration Example - -This Approov integration example is from where the code example for the [Approov token check quickstart](/docs/APPROOV_TOKEN_QUICKSTART.md) is extracted, and you can use it as a playground to better understand how simple and easy it is to implement [Approov](https://approov.io) in a Java Spring API server. - -## TOC - Table of Contents - -* [Why?](#why) -* [How it Works?](#how-it-works) -* [Requirements](#requirements) -* [Try the Approov Integration Example](#try-the-approov-integration-example) - - -## Why? - -To lock down your API server to your mobile app. Please read the brief summary in the [Approov Overview](/OVERVIEW.md#why) at the root of this repo or visit our [website](https://approov.io/product) for more details. - -[TOC](#toc---table-of-contents) - - -## How it works? - -The Java Spring API server is very simple and only replies to the endpoint `/` with the message: - -```json -{"message": "Hello, World!"} -``` - -You can find the endpoint definition [here](./src/main/java/com/criticalblue/approov/jwt). - -Take a look at the [`verifyApproovToken()`](./src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java) function to see the simple code for the check. - -For more background on Approov, see the [Approov Overview](/OVERVIEW.md#how-it-works) at the root of this repo. - - -[TOC](#toc---table-of-contents) - - -## Requirements - -To run this example you will need to have installed: - -* [OpenJDK](https://openjdk.java.net/install/) - This server example uses version `11.0.3`. It should work with earlier or later versions but was not tested. -* [Java Spring](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing) - Version `2.6.4` of the Spring Framework plugin is being used. The code should work with prior versions but wasn't tested. - -[TOC](#toc---table-of-contents) - - -## Try the Approov Integration Example - -First, you need to set the dummy secret in the `/servers/hello/src/approov-protected-server/token-check/.env` file as explained [here](/TESTING.md#the-dummy-secret). - -Second, you need to build the server with gradle. From the `./servers/hello/src/approov-protected-server/token-check` folder execute: - -```bash -./gradlew build -``` - -Now, you can run this example from the `/servers/hello/src/approov-protected-server/token-check` folder with: - -```bash -set -a -source .env && ./gradlew bootRun -set +a -``` - -Next, you can test that it works with: - -```text -curl -iX GET 'http://localhost:8002' -``` - -The response will be a `400` bad request: - -```text -HTTP/1.1 400 -Vary: Origin -Vary: Access-Control-Request-Method -Vary: Access-Control-Request-Headers -X-Content-Type-Options: nosniff -X-XSS-Protection: 1; mode=block -Cache-Control: no-cache, no-store, max-age=0, must-revalidate -Pragma: no-cache -Expires: 0 -X-Frame-Options: DENY -Content-Type: application/json -Transfer-Encoding: chunked -Date: Fri, 11 Mar 2022 19:59:11 GMT -Connection: close - -{} -``` - -The reason you got a `400` is because no Approoov token isn't provided in the headers of the request. - -Finally, you can test that the Approov integration example works as expected with this [Postman collection](/README.md#testing-with-postman) or with some more cURL requests [examples](/README.md#testing-with-curl). - -[TOC](#toc---table-of-contents) - - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - -[TOC](#toc---table-of-contents) - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) - -[TOC](#toc---table-of-contents) diff --git a/token-check/build.gradle b/token-check/build.gradle deleted file mode 100644 index bedb85d..0000000 --- a/token-check/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -plugins { - id 'org.springframework.boot' version '2.6.4' - id 'java' -} - -apply plugin: 'io.spring.dependency-management' - -group = 'com.criticalblue' -version = '0.0.1-SNAPSHOT' -sourceCompatibility = '1.8' - -repositories { - mavenCentral() -} - -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-integration' - implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.springframework.security:spring-security-core' - implementation 'org.springframework.security:spring-security-web' - implementation 'org.springframework.security:spring-security-config' - - implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2' - runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2', - 'io.jsonwebtoken:jjwt-jackson:0.11.2' - - compileOnly 'org.jetbrains:annotations:17.0.0' - - compileOnly 'javax.servlet:javax.servlet-api:3.1.0' - - runtimeOnly 'org.springframework.boot:spring-boot-devtools' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.security:spring-security-test' -} diff --git a/token-check/gradle/wrapper/gradle-wrapper.jar b/token-check/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index afba109285af78dbd2a1d187e33ac4f87c76e392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61624 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�Zy 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 diff --git a/token-check/gradle/wrapper/gradle-wrapper.properties b/token-check/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index b371555..0000000 --- a/token-check/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.6-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/token-check/gradlew b/token-check/gradlew deleted file mode 100755 index 65dcd68..0000000 --- a/token-check/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/token-check/gradlew.bat b/token-check/gradlew.bat deleted file mode 100644 index 6689b85..0000000 --- a/token-check/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/token-check/settings.gradle b/token-check/settings.gradle deleted file mode 100644 index 67a9126..0000000 --- a/token-check/settings.gradle +++ /dev/null @@ -1,6 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - } -} -rootProject.name = 'approov-jwt' diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java b/token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java deleted file mode 100644 index 5585691..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/ApiController.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.ApproovAuthentication; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import java.util.LinkedHashMap; -import java.util.Map; - -@RestController -public class ApiController { - - private static Logger logger = LoggerFactory.getLogger(ApiController.class); - - @GetMapping("/") - public Map helloV1() { - - logger.info("Serving request for endpoint '/', that is protect by an Approov Token."); - - Map response = new LinkedHashMap<>(); - - response.put("message", "Hello, World!"); - - return response; - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/Application.java b/token-check/src/main/java/com/criticalblue/approov/jwt/Application.java deleted file mode 100644 index c547b68..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/Application.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.apache.catalina.Context; -import org.apache.catalina.connector.Connector; -import org.apache.tomcat.util.descriptor.web.SecurityCollection; -import org.apache.tomcat.util.descriptor.web.SecurityConstraint; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; -import org.springframework.boot.web.servlet.server.ServletWebServerFactory; -import org.springframework.context.annotation.Bean; - -@SpringBootApplication -public class Application { - - private static Logger logger = LoggerFactory.getLogger(Application.class); - - @Value("${http.port}") - private int httpPort; - - @Value("${https.port}") - private int httpsPort; - - @Value("${http.redirect}") - private boolean isToRedirectHttp; - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } - - @Bean - public ServletWebServerFactory servletContainer() { - - TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { - - @Override - protected void postProcessContext(Context context) { - if (isToRedirectHttp) { - logger.info("Creating security constrain to redirect http to https."); - SecurityConstraint securityConstraint = new SecurityConstraint(); - securityConstraint.setUserConstraint("CONFIDENTIAL"); - SecurityCollection collection = new SecurityCollection(); - collection.addPattern("/*"); - securityConstraint.addCollection(collection); - context.addConstraint(securityConstraint); - } - } - }; - - tomcat.addAdditionalTomcatConnectors(createConnector()); - return tomcat; - } - - private Connector createConnector() { - Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); - - connector.setScheme("http"); - connector.setPort(httpPort); - connector.setSecure(false); - - if (isToRedirectHttp) { - logger.info("Redirecting http to port: {}", httpsPort); - connector.setRedirectPort(httpsPort); - } - - return connector; - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java b/token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java deleted file mode 100644 index 3abac84..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/CustomServletErrorAttributes.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.springframework.boot.web.servlet.error.DefaultErrorAttributes; -import org.springframework.boot.web.error.ErrorAttributeOptions; -import org.springframework.stereotype.Component; -import org.springframework.web.context.request.WebRequest; -import java.util.Map; - -@Component -public class CustomServletErrorAttributes extends DefaultErrorAttributes { - - @Override - public Map getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) { - - Map errorAttributes = super.getErrorAttributes(webRequest, options); - - // Remove from response in order to make the response comply with the Hello API specification - errorAttributes.remove("timestamp"); - errorAttributes.remove("message"); - errorAttributes.remove("path"); - errorAttributes.remove("error"); - errorAttributes.remove("trace"); - errorAttributes.remove("status"); - - return errorAttributes; - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java b/token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java deleted file mode 100644 index 2315c11..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/WebSecurityConfig.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.criticalblue.approov.jwt; - -import com.criticalblue.approov.jwt.authentication.*; -import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpMethod; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import java.util.Arrays; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { - - private static ApproovConfig approovConfig = ApproovConfig.getInstance(); - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedMethods(Arrays.asList("GET")); - configuration.addAllowedHeader("Authorization"); - configuration.addAllowedHeader("Approov-Token"); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - return source; - } - - @Override - public void configure(WebSecurity web) throws Exception { - web.ignoring().antMatchers("/error"); - } - - @Configuration - @Order(1) - public static class ApproovWebSecurityConfig extends WebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - - http.cors(); - - http - .httpBasic().disable() - .formLogin().disable() - .logout().disable() - .csrf().disable() - .authenticationProvider(new ApproovAuthenticationProvider(approovConfig)) - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); - - http - .securityContext() - .securityContextRepository(new ApproovSecurityContextRepository(approovConfig)) - .and() - .exceptionHandling() - .authenticationEntryPoint(new ApproovAuthenticationEntryPoint()) - .and() - .antMatcher("/") - .authorizeRequests() - .antMatchers(HttpMethod.GET, "/**").authenticated(); - } - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java deleted file mode 100644 index 89cc4a5..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.util.Collection; -import java.util.Collections; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; -import io.jsonwebtoken.Jwts; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.GrantedAuthority; - - -/** - * Validates the Approov Token is signed with the shared secret between Approov and the API server, that have not - * expired, and optionally also validates the token binding in the Approov token matches the token binding header. - * - * @see ApproovAuthenticationProvider - * @see ApproovSecurityContextRepository - */ -public class ApproovAuthentication implements ApproovJwtAuthentication { - - private static Logger logger = LoggerFactory.getLogger(ApproovAuthentication.class); - - private final ApproovConfig approovConfig; - - private Claims approovTokenPayloadClaims; - - private String approovToken; - - private boolean isAuthenticated = false; - - - /** - * Constructs the Approov Authentication instance that will validate the Approov token and the token binding. - * - * @param approovConfig Extracted from the .env file in the root of the package. - * @param approovToken Extracted from the header `Approov-Token`. - */ - ApproovAuthentication(ApproovConfig approovConfig, String approovToken) { - this.approovConfig = approovConfig; - this.approovToken = approovToken; - } - - @Override - public void verifyApproovToken(byte[] approovSecret) throws ApproovAuthenticationException { - - if (approovSecret == null) { - throw new ApproovAuthenticationException("The Approov secret is null.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - if (approovToken == null) { - throw new ApproovAuthenticationException("The Approov token is null.", HttpStatus.FORBIDDEN.value()); - } - - approovToken = approovToken.trim(); - - if (approovToken.equals("")) { - throw new ApproovAuthenticationException("The Approov token is empty.", HttpStatus.BAD_REQUEST.value()); - } - - try { - approovTokenPayloadClaims = Jwts.parser() - .setSigningKey(approovSecret) - .parseClaimsJws(approovToken) - .getBody(); - - logger.info("Request approved with a valid Approov token."); - - } catch (JwtException e) { - String message = "Request with an invalid Approov token: " + e.getMessage(); - throw new ApproovAuthenticationException(message, HttpStatus.UNAUTHORIZED.value()); - } - - isAuthenticated = true; - } - - @Override - public Claims getApproovTokenPayloadClaims() { - return approovTokenPayloadClaims; - } - - @Override - public Collection getAuthorities() { - return Collections.emptyList(); - } - - @Override - public Object getCredentials() { - return approovToken; - } - - @Override - public Object getDetails() { - return approovTokenPayloadClaims; - } - - @Override - public Object getPrincipal() { - return null; - } - - @Override - public boolean isAuthenticated() { - return isAuthenticated; - } - - @Override - public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { - if (isAuthenticated) { - throw new ApproovAuthenticationException("A new Approov Authentication instance needs to be created to set this.isAuthenticated.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - } - - @Override - public String getName() { - return null; - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java deleted file mode 100644 index cf4bacd..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationEntryPoint.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.web.AuthenticationEntryPoint; - - -/** - * When a failure occurs during the Approov token authentication process, an exception is thrown and Spring redirects - * to an authentication entry point, that have been configured in the Sring security to be this one. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - * @see ApproovAuthentication - * @see ApproovTokenBindingAuthentication - */ -public class ApproovAuthenticationEntryPoint implements AuthenticationEntryPoint { - - private final static Logger logger = LoggerFactory.getLogger(ApproovAuthenticationEntryPoint.class); - - @Override - public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { - int httpStatusCode = HttpStatus.BAD_REQUEST.value(); - - if (authException instanceof ApproovException) { - httpStatusCode = ((ApproovException) authException).getHttpStatusCode(); - } - - final String httpStatusMessage = String.valueOf(HttpStatus.valueOf(httpStatusCode)); - final String exceptionType = String.valueOf(authException.getClass()); - final String exceptionMessage = authException.getMessage(); - - logger.error(httpStatusMessage + " | " + exceptionType + " | " + exceptionMessage + " | Stacktrace origin: " + authException.getStackTrace()[0].toString()); - response.sendError(httpStatusCode); - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java deleted file mode 100644 index 1cc01b5..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationException.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.springframework.http.HttpStatus; -import org.springframework.security.core.AuthenticationException; -import org.springframework.web.bind.annotation.ResponseStatus; - -/** - * Custom exception for failures when verifying the Approov token signature and - * expiration time. - * - * @see ApproovAuthentication - */ -class ApproovAuthenticationException extends AuthenticationException implements ApproovException { - - private final int httpStatusCode; - - public ApproovAuthenticationException(String msg, int httpStatusCode) { - super(msg); - this.httpStatusCode = httpStatusCode; - } - - public int getHttpStatusCode() { - return this.httpStatusCode; - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java deleted file mode 100644 index 1dc739f..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthenticationProvider.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.apache.tomcat.util.codec.binary.Base64; - -import org.jetbrains.annotations.NotNull; - -import org.springframework.security.authentication.AuthenticationProvider; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.AuthenticationException; - -/** - * Used to configure the Spring framework security with the trigger for the Approov Authentication. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - * @see ApproovAuthentication - */ -public class ApproovAuthenticationProvider implements AuthenticationProvider { - - private final byte[] approovSecret; - - /** - * Constructs the Approov Authentication provider with an instance of the Approov config. - * - * @param approovConfig Extracted from the .env file in the root of the package. - */ - public ApproovAuthenticationProvider(ApproovConfig approovConfig) { - this.approovSecret = Base64.decodeBase64(approovConfig.getApproovBase64Secret()); - } - - @Override - public boolean supports(Class authentication) { - return ApproovJwtAuthentication.class.isAssignableFrom(authentication); - } - - @Override - public Authentication authenticate(@NotNull Authentication authentication) throws AuthenticationException { - - if (!supports(authentication.getClass())) { - return null; - } - - ApproovJwtAuthentication approovTokenAuthentication = (ApproovJwtAuthentication) authentication; - - approovTokenAuthentication.verifyApproovToken(approovSecret); - - return approovTokenAuthentication; - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java deleted file mode 100644 index 3937fa9..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovConfig.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import org.springframework.http.HttpStatus; - -/** - * The Approov configuration that is built from the .env file in the root of the package. - */ -final public class ApproovConfig { - - private static ApproovConfig ourInstance = new ApproovConfig(); - - private String approovHeaderName = "Approov-Token"; - - private String approovBase64Secret; - - private final String approovTokenBindingHeaderName; - - /** - * Constructs the Approov Config singleton with values retrieved from the .env file in the root of the project. - */ - private ApproovConfig() { - this.approovBase64Secret = retrieveApproovBase64Secret(); - this.approovTokenBindingHeaderName = retrieveStringValueFromEnv("APPROOV_TOKEN_BINDING_HEADER_NAME", "Authorization"); - } - - public static ApproovConfig getInstance() { - return ourInstance; - } - - String getApproovHeaderName() { - return approovHeaderName; - } - - String getApproovTokenBindingHeaderName() { - return approovTokenBindingHeaderName; - } - - String getApproovBase64Secret() { - return approovBase64Secret; - } - - private String retrieveApproovBase64Secret() { - approovBase64Secret = System.getenv("APPROOV_BASE64_SECRET"); - - if (approovBase64Secret == null) { - throw new ApproovAuthenticationException("Cannot retrieve APPROOV_BASE64_SECRET from the environment.", HttpStatus.INTERNAL_SERVER_ERROR.value()); - } - - return approovBase64Secret; - } - - private String retrieveStringValueFromEnv(String key, String defaultValue) { - - String value = System.getenv(key); - - if (value == null) { - return defaultValue; - } - - return value.trim(); - } - - private boolean retrieveBooleanValueFromEnv(String key, boolean defaultValue) { - - String value = System.getenv(key); - - if (value == null) { - return defaultValue; - } - - return value.trim().equalsIgnoreCase("true"); - } -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java deleted file mode 100644 index 60b7576..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -/** - * The Interface to be used in the Approov exceptions. - */ -public interface ApproovException { - - public int getHttpStatusCode(); -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java deleted file mode 100644 index 1d1a3ab..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovJwtAuthentication.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; - -import org.springframework.security.core.Authentication; - -/** - * The Interface to be used in the Approov authentication. - * - * @see ApproovAuthentication - */ -public interface ApproovJwtAuthentication extends Authentication { - - Claims getApproovTokenPayloadClaims(); - - void verifyApproovToken(byte[] secret) throws JwtException, ApproovAuthenticationException; -} diff --git a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java b/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java deleted file mode 100644 index 5b4e91e..0000000 --- a/token-check/src/main/java/com/criticalblue/approov/jwt/authentication/ApproovSecurityContextRepository.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.criticalblue.approov.jwt.authentication; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.web.context.HttpRequestResponseHolder; -import org.springframework.security.web.context.SecurityContextRepository; - -/** - * Used to setup the Approov Authentication Context when configuring the Spring framework security. - * - * @see com.criticalblue.approov.jwt.WebSecurityConfig - */ -public class ApproovSecurityContextRepository implements SecurityContextRepository { - - private String approovToken = null; - - final private ApproovConfig approovConfig; - - /** - * Constructs with an instance of the Approov configuration, and with a boolean flag to indicate if is to check the - * token binding in the Approov token. - * - * @param approovConfig Extracted from the .env file in the root of the project. - */ - public ApproovSecurityContextRepository(ApproovConfig approovConfig) { - this.approovConfig = approovConfig; - } - - @Override - public SecurityContext loadContext(HttpRequestResponseHolder requestResponseHolder) { - - HttpServletRequest request = requestResponseHolder.getRequest(); - - SecurityContext context = SecurityContextHolder.createEmptyContext(); - - approovToken = request.getHeader(approovConfig.getApproovHeaderName()); - - if (approovToken == null) { - // returning an empty security context in an endpoint protected by - // Approov, will cause Spring to later throw this exception: - // org.springframework.security.access.AccessDeniedException: Access is denied - return context; - } - - Authentication approovAuthentication = new ApproovAuthentication(approovConfig, approovToken); - context.setAuthentication(approovAuthentication); - - return context; - } - - @Override - public void saveContext(SecurityContext context, HttpServletRequest request, HttpServletResponse response) { - } - - @Override - public boolean containsContext(HttpServletRequest request) { - return approovToken != null; - } -} diff --git a/token-check/src/main/resources/application.properties b/token-check/src/main/resources/application.properties deleted file mode 100644 index cda3b69..0000000 --- a/token-check/src/main/resources/application.properties +++ /dev/null @@ -1,41 +0,0 @@ -######################### -# SPRING CONFIGURATION -######################### - -spring.mvc.throw-exception-if-no-handler-found: true -spring.resources.add-mappings: false - - -######################### -# LOGGER CONFIGURATION -######################### - -logging.level.root: ERROR -logging.level.org.hibernate: ERROR -logging.level.org.springframework.web: ERROR -logging.level.org.springframework.security: ERROR -logging.level.com.criticalblue.approov: INFO - - -####################### -# HTTP CONFIGURATION -####################### - -# This vars need to be set in the .env file or in the environment -http.port: ${HTTP_PORT} -http.redirect: ${HTTP_REDIRECT} - - -####################### -# HTTPS CONFIGURATION -####################### - -# Needs to be set in the .env file or in the environment -server.port: ${HTTPS_PORT} - -# Self signed certificate was generated with: -# keytool -genkeypair -alias ApproovTLS -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore ApproovTLS.p12 -validity 100000 -server.ssl.key-store-type: PKCS12 -server.ssl.key-store: classpath:keystore/ApproovTLS.p12 -server.ssl.key-store-password: supersecret -server.ssl.key-alias: ApproovTLS diff --git a/token-check/src/main/resources/keystore/ApproovTLS.p12 b/token-check/src/main/resources/keystore/ApproovTLS.p12 deleted file mode 100644 index 72a21633bfa69d2a3289d47f81d8b2dd3f14f23b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2599 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 diff --git a/token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java b/token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java deleted file mode 100644 index 0a8fc7d..0000000 --- a/token-check/src/test/java/com/criticalblue/approov/jwt/ApplicationTests.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.criticalblue.approov.jwt; - -import org.junit.jupiter.api.Test; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.http.ResponseEntity; - -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest -public class ApplicationTests { - - @Test - public void contextLoads() { - } - -} From 897035526e905c367203be71b4e76c993583d96a Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Tue, 9 Dec 2025 12:58:42 +0000 Subject: [PATCH 06/22] vibe-02 --- .env.example | 16 ++- .../build.gradle => build.gradle | 0 .../wrapper/gradle-wrapper.jar | Bin .../wrapper/gradle-wrapper.properties | 0 token-binding-check/gradlew => gradlew | 0 .../gradlew.bat => gradlew.bat | 0 .../settings.gradle => settings.gradle | 0 .../approov/ApproovApplication.java | 0 token-binding-check/.env.example | 22 ---- token-binding-check/README.md | 121 ------------------ 10 files changed, 9 insertions(+), 150 deletions(-) rename token-binding-check/build.gradle => build.gradle (100%) rename {token-binding-check/gradle => gradle}/wrapper/gradle-wrapper.jar (100%) rename {token-binding-check/gradle => gradle}/wrapper/gradle-wrapper.properties (100%) rename token-binding-check/gradlew => gradlew (100%) rename token-binding-check/gradlew.bat => gradlew.bat (100%) rename token-binding-check/settings.gradle => settings.gradle (100%) rename {token-binding-check/src => src}/main/java/com/criticalblue/approov/ApproovApplication.java (100%) delete mode 100644 token-binding-check/.env.example delete mode 100644 token-binding-check/README.md diff --git a/.env.example b/.env.example index a1fcfe4..bc74c47 100644 --- a/.env.example +++ b/.env.example @@ -11,10 +11,12 @@ HTTPS_PORT=8003 # APPROOV ############ -# For production usage the secret is always retrieved with the Approov CLI tool, -# that can be also used to generate valid and invalid tokens for testing purposes. -# Please check the Approov docs at https://approov.io/docs/latest/approov-cli-tool-reference/#token-commands. -# -# For following along this Hello server examples you just need to use the dummy -# secret provided in the README.md#the-dummyd-secret at the root of this repo. -APPROOV_BASE64_SECRET=approov_base64_secret_here +APPROOV_TOKEN_BINDING_HEADER_NAME=Authorization + +# Feel free to play with different secrets. For development only you can create them with: +# $ openssl rand -base64 64 | tr -d '\n'; echo +APPROOV_BASE64_SECRET=h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww== + +APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN=true +APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING=true +APPROOV_LOGGING_ENABLED=true diff --git a/token-binding-check/build.gradle b/build.gradle similarity index 100% rename from token-binding-check/build.gradle rename to build.gradle diff --git a/token-binding-check/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from token-binding-check/gradle/wrapper/gradle-wrapper.jar rename to gradle/wrapper/gradle-wrapper.jar diff --git a/token-binding-check/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from token-binding-check/gradle/wrapper/gradle-wrapper.properties rename to gradle/wrapper/gradle-wrapper.properties diff --git a/token-binding-check/gradlew b/gradlew similarity index 100% rename from token-binding-check/gradlew rename to gradlew diff --git a/token-binding-check/gradlew.bat b/gradlew.bat similarity index 100% rename from token-binding-check/gradlew.bat rename to gradlew.bat diff --git a/token-binding-check/settings.gradle b/settings.gradle similarity index 100% rename from token-binding-check/settings.gradle rename to settings.gradle diff --git a/token-binding-check/src/main/java/com/criticalblue/approov/ApproovApplication.java b/src/main/java/com/criticalblue/approov/ApproovApplication.java similarity index 100% rename from token-binding-check/src/main/java/com/criticalblue/approov/ApproovApplication.java rename to src/main/java/com/criticalblue/approov/ApproovApplication.java diff --git a/token-binding-check/.env.example b/token-binding-check/.env.example deleted file mode 100644 index bc74c47..0000000 --- a/token-binding-check/.env.example +++ /dev/null @@ -1,22 +0,0 @@ -########### -# SERVER -########### - -HTTP_REDIRECT=false -HTTP_PORT=8002 -HTTPS_PORT=8003 - - -############ -# APPROOV -############ - -APPROOV_TOKEN_BINDING_HEADER_NAME=Authorization - -# Feel free to play with different secrets. For development only you can create them with: -# $ openssl rand -base64 64 | tr -d '\n'; echo -APPROOV_BASE64_SECRET=h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww== - -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN=true -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING=true -APPROOV_LOGGING_ENABLED=true diff --git a/token-binding-check/README.md b/token-binding-check/README.md deleted file mode 100644 index d05ac70..0000000 --- a/token-binding-check/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# Approov Token Binding Integration Example - -This Approov integration example is from where the code example for the [Approov token binding check quickstart](/docs/APPROOV_TOKEN_BINDING_QUICKSTART.md) is extracted, and you can use it as a playground to better understand how simple and easy it is to implement [Approov](https://approov.io) in a Java Spring API server. - -## TOC - Table of Contents - -* [Why?](#why) -* [How it Works?](#how-it-works) -* [Requirements](#requirements) -* [Try the Approov Integration Example](#try-the-approov-integration-example) - - -## Why? - -To lock down your API server to your mobile app. Please read the brief summary in the [Approov Overview](/OVERVIEW.md#why) at the root of this repo or visit our [website](https://approov.io/product) for more details. - -[TOC](#toc---table-of-contents) - - -## How it works? - -The Java Spring API server is very simple and only replies to the endpoint `/` with the message: - -```json -{"message": "Hello, World!"} -``` - -You can find the endpoint definition [here](./src/main/java/com/criticalblue/approov/jwt). - -Take a look at the [`verifyApproovToken()`](./src/main/java/com/criticalblue/approov/jwt/authentication/ApproovAuthentication.java) function to see the simple code for the check, and check out the [`verifyApproovTokenBinding()`](./src/main/java/com/criticalblue/approov/jwt/authentication/ApproovTokenBindingAuthentication.java) function to see how the Approov token binding is verified. - -For more background on Approov, see the [Approov Overview](/OVERVIEW.md#how-it-works) at the root of this repo. - -[TOC](#toc---table-of-contents) - - -## Requirements - -To run this example you will need to have installed: - -* [OpenJDK](https://openjdk.java.net/install/) - This server example uses version `11.0.3`. It should work with earlier or later versions but was not tested. -* [Java Spring](https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing) - Version `2.6.4` of the Spring Framework plugin is being used. The code should work with prior versions but wasn't tested. - -[TOC](#toc---table-of-contents) - - -## Try the Approov Integration Example - -First, you need to set the dummy secret in the `/servers/hello/src/approov-protected-server/token-binding-check/.env` file as explained [here](/TESTING.md#the-dummy-secret). - -Second, you need to build the server with gradle. From the `./servers/hello/src/approov-protected-server/token-binding-check` folder execute: - -```bash -./gradlew build -``` - -Now, you can run this example from the `/servers/hello/src/approov-protected-server/token-binding-check` folder with: - -```bash -set -a -source .env && ./gradlew bootRun -set +a -``` - -Next, you can test that it works with: - -```text -curl -iX GET 'http://localhost:8002' -``` - -The response will be a `400` bad request: - -```text -HTTP/1.1 400 -Vary: Origin -Vary: Access-Control-Request-Method -Vary: Access-Control-Request-Headers -X-Content-Type-Options: nosniff -X-XSS-Protection: 1; mode=block -Cache-Control: no-cache, no-store, max-age=0, must-revalidate -Pragma: no-cache -Expires: 0 -X-Frame-Options: DENY -Content-Type: application/json -Transfer-Encoding: chunked -Date: Fri, 11 Mar 2022 19:59:11 GMT -Connection: close - -{} -``` - -The reason you got a `400` is because no Approoov token isn't provided in the headers of the request. - -Finally, you can test that the Approov integration example works as expected with this [Postman collection](/README.md#testing-with-postman) or with some more cURL requests [examples](/README.md#testing-with-curl). - -[TOC](#toc---table-of-contents) - - -## Issues - -If you find any issue while following our instructions then just report it [here](https://github.com/approov/quickstart-java-spring-token-check/issues), with the steps to reproduce it, and we will sort it out and/or guide you to the correct path. - -[TOC](#toc---table-of-contents) - - -## Useful Links - -If you wish to explore the Approov solution in more depth, then why not try one of the following links as a jumping off point: - -* [Approov Free Trial](https://approov.io/signup)(no credit card needed) -* [Approov Get Started](https://approov.io/product/demo) -* [Approov QuickStarts](https://approov.io/docs/latest/approov-integration-examples/) -* [Approov Docs](https://approov.io/docs) -* [Approov Blog](https://approov.io/blog/) -* [Approov Resources](https://approov.io/resource/) -* [Approov Customer Stories](https://approov.io/customer) -* [Approov Support](https://approov.io/contact) -* [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/contact) - -[TOC](#toc---table-of-contents) From 7cbe2efc534969987302c7ebdd6ed2811e9f77c1 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Tue, 9 Dec 2025 15:12:40 +0000 Subject: [PATCH 07/22] change-all --- build.gradle | 2 +- .../{com/criticalblue => io}/approov/ApproovApplication.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/main/java/{com/criticalblue => io}/approov/ApproovApplication.java (99%) diff --git a/build.gradle b/build.gradle index 1012b3e..3b95d5f 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { apply plugin: 'io.spring.dependency-management' -group = 'com.criticalblue' +group = 'io.approov' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' diff --git a/src/main/java/com/criticalblue/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java similarity index 99% rename from src/main/java/com/criticalblue/approov/ApproovApplication.java rename to src/main/java/io/approov/ApproovApplication.java index e7809c4..38e39ec 100644 --- a/src/main/java/com/criticalblue/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -1,4 +1,4 @@ -package com.criticalblue.approov; +package io.approov; import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtException; From 8676dce6f55ff57f2dd789eeca827c7c36054476 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Tue, 9 Dec 2025 15:34:10 +0000 Subject: [PATCH 08/22] before changing the project settings --- .gitignore | 1 + src/main/java/io/approov/ApproovApplication.java | 15 ++++----------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 93d1061..7d075b5 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ nbdist/ .local/ .env +.config/ diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index 38e39ec..cbabe01 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -74,8 +74,6 @@ SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http.build(); } - // region Public endpoints - @GetMapping("/unprotected") public Map unprotected() { return message("Unprotected endpoint reached at " + Instant.now()); @@ -150,10 +148,6 @@ public Map disableBinding() { return approovState(); } - // endregion - - // region Approov helpers - /** * Validates signature/claims when Approov is enabled. */ @@ -218,7 +212,7 @@ private String computeBinding(String value) { } } - // Approov CLI may emit bindings using standard Base64; accept both to stay compatible. + // Approov CLI may emit bindings using standard Base64, accept both to stay compatible. private String computeBindingStd(String value) { try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); @@ -250,10 +244,10 @@ private Key resolveSigningKey() { secret = readDotEnvSecret(); } if (secret == null || secret.trim().isEmpty()) { - secret = "h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww=="; - log.warn("APPROOV_BASE64_SECRET not set; using demo secret"); + throw new IllegalStateException("APPROOV_BASE64_SECRET is not set; cannot start Approov validation"); } - return Keys.hmacShaKeyFor(Decoders.BASE64.decode(secret.trim())); + return Keys.hmacShaKeyFor(Decoders.BASE64.decode(secret.trim())); + } private String readDotEnvSecret() { @@ -282,5 +276,4 @@ private Map message(String msg) { return payload; } - // endregion } From a38eef25697669beec67b084366f9cf0aaee10ce Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Fri, 12 Dec 2025 16:56:46 +0000 Subject: [PATCH 09/22] refactor: whole spring project --- ex-test.sh | 1113 ++++++++--------- .../java/io/approov/ApproovApplication.java | 468 ++++--- test.sh | 550 ++++---- 3 files changed, 1028 insertions(+), 1103 deletions(-) diff --git a/ex-test.sh b/ex-test.sh index 9878382..960608a 100644 --- a/ex-test.sh +++ b/ex-test.sh @@ -2,7 +2,6 @@ set -o errexit set -o nounset set -o pipefail -set -o errtrace ####################################### # Approov demo API test harness. @@ -64,17 +63,23 @@ set -o errtrace # 5.9 - Correct token but wrong binding headers: Double-binding endpoint, valid token and wrong headers. ####################################### -# Constants. +# Constants readonly BASE_URL="${BASE_URL:-http://localhost:8080}" readonly TOKDIR="${TOKDIR:-.config}" readonly LOGDIR="${TOKDIR}/logs" readonly LOGFILE="${LOGDIR}/$(date '+%Y-%m-%d_%H-%M-%S').log" -# Globals. +# Globals # is_approov_disabled: # Boolean flag indicating if Approov checks appear disabled # based on /approov-state endpoint. is_approov_disabled=false +success_code=200 +failure_code=401 + +# state_http_code: +# HTTP status code from /approov-state endpoint. +state_http_code='' ####################################### # Print error message to STDERR with timestamp. @@ -88,7 +93,7 @@ is_approov_disabled=false # 0 ####################################### err() { - echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2 + echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2 } ####################################### @@ -103,12 +108,12 @@ err() { # Exits the script with code 1 if the command is missing. ####################################### requirement_check() { - local cmd="$1" + local cmd="$1" - if ! command -v "${cmd}" >/dev/null 2>&1; then - err "Missing required command: ${cmd}" - exit 1 - fi + if ! command -v "${cmd}" >/dev/null 2>&1; then + err "Missing required command: ${cmd}" + exit 1 + fi } ####################################### @@ -116,35 +121,47 @@ requirement_check() { # Globals: # None # Arguments: -# $1 - output file path. -# remaining - arguments passed to "approov token". +# output file path. +# arguments passed to "approov token". # Outputs: -# Writes token (if generated) to the output file. +# Captures stdout+stderr from "approov token", takes the last non-empty +# line as the token, and writes only that line to the output file. # Returns: # 0 on success. -# 1 on failure. +# 1 on failure (CLI error or no token produced). ####################################### gen_token() { - local outfile="$1" - shift - - set +o errexit - approov token "$@" >"${outfile}" - local rc=$? - set -o errexit - - if (( rc != 0 )); then - err "Approov CLI failed: approov token $*" - return 1 - fi - - return 0 + local outfile="$1" + shift + + set +o errexit + local cli_output + cli_output="$(approov token "$@" 2>&1)" + local rc=$? + set -o errexit + + if ((rc != 0)); then + err "Approov CLI failed: approov token $*" + printf '%s\n' "${cli_output}" >&2 + return 1 + fi + + # Prints notices before the token, grab the last non-empty line. + local token + token="$(printf '%s\n' "${cli_output}" | awk 'NF{last=$0} END{print last}')" + if [[ -z "${token}" ]]; then + err "Approov CLI produced no token output" + return 1 + fi + + printf '%s\n' "${token}" >"${outfile}" } ####################################### # Print test result and append full HTTP exchange to a log file. # Globals: # LOGFILE +# is_approov_disabled # Arguments: # $1 - test name. # $2 - expected HTTP status code. @@ -157,614 +174,468 @@ gen_token() { # 0 ####################################### print_test_result() { - local name="$1" - local expected="$2" - local status="$3" - local resp="$4" - - local result="Failed" - if [[ "${status}" == "${expected}" ]]; then - result="Passed" - fi - - echo "${name}: ${result} (status: ${status}, expected: ${expected})" - - { - echo "Test: ${name}" - echo "Expected status: ${expected}" - echo "Actual status: ${status}" - local enforced_msg - if [[ "${is_approov_disabled}" == true ]]; then - enforced_msg="Approov enforcement: disabled, expecting HTTP 200 on protected endpoints." - else - enforced_msg="Approov enforcement: enabled, token checks performed." - fi - echo "${enforced_msg}" - echo - echo "HTTP exchange:" - echo "${resp}" - echo - } >>"${LOGFILE}" 2>&1 -} - -####################################### -# Compute expected status for protected endpoints. -# -# If Approov is disabled we expect 200 even for invalid/missing -# tokens; otherwise we expect the provided default (e.g. 401). -# Globals: -# is_approov_disabled -# Arguments: -# $1 - default expected status if Approov is enabled. -# Outputs: -# Echoes effective expected status code. -# Returns: -# 0 -####################################### -expected_protected_status() { - local default_status="$1" - - if [[ "${is_approov_disabled}" == true ]]; then - echo "200" - else - echo "${default_status}" - fi -} - -####################################### -# Mark a test as skipped and log the reason. -# Globals: -# LOGFILE -# Arguments: -# $1 - test name. -# $2 - reason for skipping. -# Outputs: -# Skip information to STDOUT and LOGFILE. -# Returns: -# 0 -####################################### -skip_test() { - local name="$1" - local reason="$2" - - echo "${name}: Skipped (${reason})" - - { - echo "Test: ${name}" - echo "Result: SKIPPED" - echo "Reason: ${reason}" - echo - } >>"${LOGFILE}" 2>&1 + local name="$1" + local expected="$2" + local status="$3" + local resp="$4" + + local result="Failed" + if [[ "${status}" == "${expected}" ]]; then + result="Passed" + fi + + echo "${name}: ${result} (status: ${status}, expected: ${expected})" + + { + echo "Test: ${name}" + echo "Expected status: ${expected}" + echo "Actual status: ${status}" + if [[ "${is_approov_disabled}" == "false" ]]; then + echo "Approov State: enabled, token checks performed." + else + echo "Approov State: disabled, no checks performed." + fi + echo + echo "HTTP exchange:" + echo "${resp}" + echo + } >>"${LOGFILE}" 2>&1 } ####################################### # Execute a curl call for a test and evaluate the result. # Globals: # None +# Notes: +# Uses print_test_result, which logs to LOGFILE and reads +# is_approov_disabled. # Arguments: -# $1 - test name. -# $2 - expected HTTP status code. -# remaining - arguments passed to curl. +# test name. +# expected HTTP status code. +# arguments passed to curl. # Outputs: -# Test result to STDOUT. -# HTTP exchange appended to LOGFILE. +# Short result to STDOUT, full HTTP exchange appended to LOGFILE. # Returns: -# 0 on success, curl return code on failure. +# 0 on success, curl's exit code on failure. ####################################### run_test() { - local name="$1" - shift - local expected="$1" - shift - - local resp - local status - local curl_rc - - # -i: include headers; -s: silent - set +o errexit - resp="$(curl -i -s "$@")" - curl_rc=$? - set -o errexit - - if (( curl_rc != 0 )); then - err "curl failed for ${name} (rc=${curl_rc})" - return "${curl_rc}" - fi - - status="$( - echo "${resp}" \ - | grep -m1 HTTP \ - | awk '{print $2}' - )" - - print_test_result "${name}" "${expected}" "${status}" "${resp}" + # shift after each grab so $1 advances (name -> expected -> rest) + local name="$1"; shift + local expected="$1"; shift + + local resp + local status + local curl_rc + + # -i: include headers, -s: silent + set +o errexit + resp="$(curl -i -s "$@")" + curl_rc=$? + set -o errexit + + if ((curl_rc != 0)); then + err "curl failed for ${name} (rc=${curl_rc})" + return "${curl_rc}" + fi + + status="$( + printf '%s\n' "${resp}" | + grep -m1 '^HTTP/' | + awk '{print $2}' + )" + + print_test_result "${name}" "${expected}" "${status}" "${resp}" } main() { - requirement_check "approov" - requirement_check "curl" - - mkdir -p "${TOKDIR}" "${LOGDIR}" - - echo "Listing Approov API configuration:" - approov api -list - echo - - echo "Approov state check:" - - local state_response - state_response="$(curl -i -s "${BASE_URL}/approov-state")" - state_http_code="$( - printf '%s\n' "${state_response}" \ - | grep -m1 '^HTTP/' \ - | awk '{print $2}' - )" - if [[ -z "${state_http_code}" || "${state_http_code}" != "200" ]]; then - err "Failed to get Approov state from ${BASE_URL}/approov-state (status=${state_http_code:-unknown})" - exit 1 - fi - - if grep -q '"approovEnabled":true' <<<"${state_response}"; then - echo " Approov service: ENABLED" - is_approov_disabled=false - else - echo " Approov service: DISABLED" - is_approov_disabled=true - fi - echo - - # 0) Unprotected endpoint. - - run_test \ - "0 - Unprotected request (no Approov protection)" \ - 200 \ - "${BASE_URL}/unprotected" - - # 1) Token check (single binding). - # 1.0 Generate valid token for /token-check. - gen_token \ - "${TOKDIR}/approov_token_1_valid" \ - -genExample \ - example.com - - # 1.1 Valid Token. - local expected_status=200 - run_test \ - "1.1 - Token check (valid token)" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_1_valid")" \ - "${BASE_URL}/token-check" - - # 1.2 Invalid Token (signature/type invalid). - gen_token \ - "${TOKDIR}/approov_token_1_invalid" \ - -genExample \ - example.com \ - -type invalid || true - - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - - if [[ -f "${TOKDIR}/approov_token_1_invalid" ]]; then - run_test \ - "1.2 - Token check (invalid token)" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_1_invalid")" \ - "${BASE_URL}/token-check" - else - skip_test \ - "1.2 - Token check (invalid token)" \ - "approov_token_1_invalid missing" - fi - - # 2) Token Binding ["Authorization"]. - local AUTH_VAL="ExampleAuthToken==" - export HASH_INPUT="${AUTH_VAL}" - - # 2.0 Generate valid binding token. - gen_token \ - "${TOKDIR}/approov_token_2_valid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com - - # 2.1 Valid Token + correct Authorization header. - expected_status=200 - run_test \ - "2.1 - Single binding (valid token + header)" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-binding" - - # 2.2 Missing Authorization header. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "2.2 - Single binding (missing Authorization header)" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-binding" - - # 2.3 Incorrect Authorization header. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "2.3 - Single binding (incorrect Authorization header)" \ - "${expected_status}" \ - -H "Authorization: BadAuthToken==" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-binding" - - # 2.4 Invalid binding token. - gen_token \ - "${TOKDIR}/approov_token_2_invalid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com \ - -type invalid || true - - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - - if [[ -f "${TOKDIR}/approov_token_2_invalid" ]]; then - run_test \ - "2.4 - Single binding (invalid token)" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_invalid")" \ - "${BASE_URL}/token-binding" - else - skip_test \ - "2.4 - Single binding (invalid token)" \ - "approov_token_2_invalid missing" - fi - - # 3) Token Binding ["Authorization", "Content-Digest"]. - local AUTH_VAL2="ExampleAuthToken==" - local CD_VAL="ContentDigest==" - export HASH_INPUT="${AUTH_VAL2}${CD_VAL}" - - # 3.0 Generate valid double-binding token. - gen_token \ - "${TOKDIR}/approov_token_3_valid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com - - # 3.1 Valid token + both binding headers. - expected_status=200 - run_test \ - "3.1 - Double binding (valid token + headers)" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.2 Missing both binding headers. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "3.2 - Double binding (missing binding headers)" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.3 Incorrect binding headers. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "3.3 - Double binding (incorrect binding headers)" \ - "${expected_status}" \ - -H "Authorization: BadAuthToken==" \ - -H "Content-Digest: BadContentDigest==" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.4 Invalid token. - if gen_token \ - "${TOKDIR}/approov_token_3_invalid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com \ - -type invalid; then - : - else - err "Failed to generate approov_token_3_invalid (continuing tests)" - fi - - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - - if [[ -f "${TOKDIR}/approov_token_3_invalid" ]]; then - run_test \ - "3.4 - Double binding (invalid token)" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_invalid")" \ - "${BASE_URL}/token-double-binding" - else - skip_test \ - "3.4 - Double binding (invalid token)" \ - "approov_token_3_invalid missing" - fi - - # 4) Extreme tests: headers and tokens presence/absence. - # 4.1 Protected endpoints without any Approov header. - local exp_protected - exp_protected="$(expected_protected_status "401")" - - run_test \ - "4.1 - token-check (no Approov header)" \ - "${exp_protected}" \ - "${BASE_URL}/token-check" - - run_test \ - "4.1 - token-binding (no Approov header)" \ - "${exp_protected}" \ - "${BASE_URL}/token-binding" - - run_test \ - "4.1 - token-double-binding (no Approov header)" \ - "${exp_protected}" \ - "${BASE_URL}/token-double-binding" - - # 4.2 Valid token only (no binding headers). - if [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then - run_test \ - "4.2 - unprotected (valid token only)" \ - "200" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ - "${BASE_URL}/unprotected" - - run_test \ - "4.2 - token-check (valid token only)" \ - "200" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ - "${BASE_URL}/token-check" - - run_test \ - "4.2 - token-binding (valid token only)" \ - "${exp_protected}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ - "${BASE_URL}/token-binding" - - run_test \ - "4.2 - token-double-binding (valid token only)" \ - "${exp_protected}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ - "${BASE_URL}/token-double-binding" - else - skip_test \ - "4.2 - valid token only (various endpoints)" \ - "approov_token_1_valid missing" - fi - - # 4.3 Valid single-binding token + Authorization header. - if [[ -f "${TOKDIR}/approov_token_2_valid" ]]; then - run_test \ - "4.3 - token-binding (valid token + Authorization)" \ - "200" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-binding" - - run_test \ - "4.3 - unprotected (valid token + Authorization)" \ - "200" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/unprotected" - - run_test \ - "4.3 - token-check (valid token + Authorization)" \ - "200" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-check" - - run_test \ - "4.3 - token-double-binding (valid token + Authorization)" \ - "${exp_protected}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-double-binding" - else - skip_test \ - "4.3 - binding-1/unprotected/token-check/token-double-binding" \ - "approov_token_2_valid missing" - fi - - # 4.4 Valid double-binding token + two binding headers. - if [[ -f "${TOKDIR}/approov_token_3_valid" ]]; then - run_test \ - "4.4 - token-double-binding (valid token + two bindings)" \ - "200" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - run_test \ - "4.4 - unprotected (valid token + two bindings)" \ - "200" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/unprotected" - - run_test \ - "4.4 - token-check (valid token + two bindings)" \ - "200" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-check" - - run_test \ - "4.4 - token-binding (valid token + two bindings)" \ - "${exp_protected}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-binding" - else - skip_test \ - "4.4 - double-binding scenarios (approov_token_3_valid)" \ - "token file missing" - fi - - # 5) Extreme tests: bad tokens and binding mismatches. - # 5.1 Bad token with bad signature (modified third segment). - if [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then - local good_tok - local bad_sig_tok - - good_tok="$(<"${TOKDIR}/approov_token_1_valid")" - bad_sig_tok="$( - awk -F. \ - '{printf "%s.%s.%s", $1, $2, "bogussignature"}' \ - <<<"${good_tok}" - )" - - run_test \ - "5.1 - Bad token (bad signature)" \ - "$(expected_protected_status "401")" \ - -H "approov-token: ${bad_sig_tok}" \ - "${BASE_URL}/token-check" - else - skip_test \ - "5.1 - Bad token (bad signature)" \ - "approov_token_1_valid missing" - fi - - # 5.2 Bad token with invalid encoding. - local bad_token_invalid_encoding - bad_token_invalid_encoding="eyJ0eXAiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIn0."\ -"eyJleHAiOjE5OTk5OTk5OTksImRpZCI6IkV4YW1wbGVBcHByb292VG9rZW5ESUQ9PSJ9."\ -"NwqfsaOUBfXaf8KxRZovYCy0c6hqy29g88z1LIgzuQY" - - run_test \ - "5.2 - Bad token (invalid encoding)" \ - "$(expected_protected_status "401")" \ - -H "approov-token: ${bad_token_invalid_encoding}" \ - "${BASE_URL}/token-check" - - # 5.3 / 5.4 Bad token with no expiry (real or simulated). - local exp_noexp - exp_noexp="$(expected_protected_status "401")" - - if [[ -n "${BAD_TOKEN_NO_EXPIRY:-}" ]]; then - run_test \ - "5.3 - Bad token (no expiry)" \ - "${exp_noexp}" \ - -H "approov-token: ${BAD_TOKEN_NO_EXPIRY}" \ - "${BASE_URL}/token-check" - elif [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then - local hdr_payload - local noexp_tok - - hdr_payload="$(cut -d. -f1-2 <"${TOKDIR}/approov_token_1_valid")" - noexp_tok="${hdr_payload}.nosig" - - run_test \ - "5.4 - Bad token (no expiry simulated)" \ - "${exp_noexp}" \ - -H "approov-token: ${noexp_tok}" \ - "${BASE_URL}/token-check" - else - skip_test \ - "5.3/5.4 - Bad token (no expiry)" \ - "no BAD_TOKEN_NO_EXPIRY and approov_token_1_valid missing" - fi - - # 5.5 Explicit expired token. - local bad_token_expired - bad_token_expired="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9."\ -"eyJhdWQiOiIiLCJleHAiOjE3NjIzNTg3OTcsImlwIjoiMS4yLjMuNCIsImRpZCI6IkV4YW1w"\ -"bGVBcHByb292VG9rZW5ESUQ9PSJ9.vQZqzUAOkjdqDRWMjUYQFwkwFd9sRn1UjXyZCIymNcE" - - run_test \ - "5.5 - Bad token (expired)" \ - "$(expected_protected_status "401")" \ - -H "approov-token: ${bad_token_expired}" \ - "${BASE_URL}/token-check" - - # 5.6 Missing binding but valid full token for double-binding endpoint. - if [[ -f "${TOKDIR}/approov_token_1_valid" ]]; then - run_test \ - "5.6 - Missing binding with good full token" \ - "$(expected_protected_status "401")" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_1_valid")" \ - "${BASE_URL}/token-double-binding" - else - skip_test \ - "5.6 - Missing binding with good full token" \ - "approov_token_1_valid missing" - fi - - # 5.7 / 5.8 / 5.9 Various binding issues with double-binding token. - if [[ -f "${TOKDIR}/approov_token_3_valid" ]]; then - # 5.7 Missing Authorization with valid binding token. - run_test \ - "5.7 - Missing Authorization with valid binding token" \ - "$(expected_protected_status "401")" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 5.8 Good full token with binding. - run_test \ - "5.8 - Good full token with correct binding" \ - "200" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 5.9 Correctly signed token but wrong binding headers. - run_test \ - "5.9 - Correct token but wrong binding headers" \ - "$(expected_protected_status "401")" \ - -H "Authorization: WrongAuth==" \ - -H "Content-Digest: WrongDigest==" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - else - skip_test \ - "5.7/5.8/5.9 - Binding issues with binding-2 token" \ - "approov_token_3_valid missing" - fi - - echo - echo "Full request and response details are saved in:" - echo " ${LOGFILE}" + requirement_check "approov" + requirement_check "curl" + + mkdir -p "${TOKDIR}" "${LOGDIR}" + + echo "Listing Approov API configuration:" + approov api -list + echo + + echo "Approov state check:" + local state_response + state_response="$(curl -i -s "${BASE_URL}/approov-state")" + state_http_code="$( + printf '%s\n' "${state_response}" | + grep -m1 '^HTTP/' | + awk '{print $2}' + )" + + if [[ "${state_http_code}" != "200" || -z "${state_http_code}" ]]; then + err "Failed to get Approov state from ${BASE_URL}/approov-state (status=${state_http_code:-unknown})" + exit 1 + fi + + if grep -q '"approovEnabled":true' <<<"${state_response}"; then + echo " Approov service: ENABLED" + is_approov_disabled=false + else + echo " Approov service: DISABLED" + is_approov_disabled=true + failure_code=200 + fi + echo + + # 0) Unprotected endpoint. + run_test \ + "0 - Unprotected request - no approov protection" \ + "${success_code}" \ + "${BASE_URL}/unprotected" + + # 1) Token check. + gen_token \ + "${TOKDIR}/approov_token_valid" \ + -genExample \ + example.com + + # 1.1) Valid Token. + run_test \ + "1.1 - Token check - valid token" \ + "${success_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ + "${BASE_URL}/token-check" + + # 1.2) Invalid Token. + gen_token \ + "${TOKDIR}/approov_token_invalid" \ + -genExample \ + example.com \ + -type invalid || true + + run_test \ + "1.2 - Token check - invalid token" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_invalid")" \ + "${BASE_URL}/token-check" + + # 2) Token Binding ["Authorization"]. + local AUTH_VAL="ExampleAuthToken==" + export HASH_INPUT="${AUTH_VAL}" + + gen_token \ + "${TOKDIR}/approov_token_bind_auth_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 2.1) Valid Token. + run_test \ + "2.1 - Single Binding - valid token and header" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-binding" + + # 2.2) Missing Header. + run_test \ + "2.2 - Single Binding - missing Authorization header" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-binding" + + # 2.3) Incorrect Header. + run_test \ + "2.3 - Single Binding - incorrect Authorization header" \ + "${failure_code}" \ + -H "Authorization: BadAuthToken==" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-binding" + + # 2.4) Invalid Token. + gen_token \ + "${TOKDIR}/approov_token_bind_auth_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid || true + + run_test \ + "2.4 - Single Binding - invalid token" \ + "${failure_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_invalid")" \ + "${BASE_URL}/token-binding" + + # 3) Token Binding ["Authorization", "Content-Digest"]. + local AUTH_VAL2="ExampleAuthToken==" + local CD_VAL="ContentDigest==" + export HASH_INPUT="${AUTH_VAL2}${CD_VAL}" + + gen_token \ + "${TOKDIR}/approov_token_bind_auth_cd_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 3.1) Valid. + run_test \ + "3.1 - Double Binding - valid token and headers" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.2) Missing headers. + run_test \ + "3.2 - Double Binding - missing binding headers" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.3) Incorrect headers. + run_test \ + "3.3 - Double Binding - incorrect binding headers" \ + "${failure_code}" \ + -H "Authorization: BadAuthToken==" \ + -H "Content-Digest: BadContentDigest==" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.4) Invalid token. + gen_token \ + "${TOKDIR}/approov_token_bind_auth_cd_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid || true + + run_test \ + "3.4 - Double Binding - invalid token" \ + "${failure_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_invalid")" \ + "${BASE_URL}/token-double-binding" + + # 4) Extreme tests: headers and tokens presence/absence. + + # 4.1) Protected endpoints without any Approov header. + run_test \ + "4.1 - token-check (no Approov header)" \ + "${failure_code}" \ + "${BASE_URL}/token-check" + + run_test \ + "4.1 - token-binding (no Approov header)" \ + "${failure_code}" \ + "${BASE_URL}/token-binding" + + run_test \ + "4.1 - token-double-binding (no Approov header)" \ + "${failure_code}" \ + "${BASE_URL}/token-double-binding" + + # 4.2) Valid token only (no binding headers). + if [[ -f "${TOKDIR}/approov_token_valid" ]]; then + run_test \ + "4.2 - unprotected (valid token only)" \ + "${success_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ + "${BASE_URL}/unprotected" + + run_test \ + "4.2 - token-check (valid token only)" \ + "${success_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ + "${BASE_URL}/token-check" + + run_test \ + "4.2 - token-binding (valid token only)" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ + "${BASE_URL}/token-binding" + + run_test \ + "4.2 - token-double-binding (valid token only)" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ + "${BASE_URL}/token-double-binding" + fi + + # 4.3) Valid single-binding token + Authorization header. + if [[ -f "${TOKDIR}/approov_token_bind_auth_valid" ]]; then + run_test \ + "4.3 - token-binding (valid token + Authorization)" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-binding" + + run_test \ + "4.3 - unprotected (valid token + Authorization)" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/unprotected" + + run_test \ + "4.3 - token-check (valid token + Authorization)" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-check" + + run_test \ + "4.3 - token-double-binding (valid token + Authorization)" \ + "${failure_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-double-binding" + fi + + # 4.4) Valid double-binding token + two binding headers. + if [[ -f "${TOKDIR}/approov_token_bind_auth_cd_valid" ]]; then + run_test \ + "4.4 - token-double-binding (valid token + two bindings)" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + run_test \ + "4.4 - unprotected (valid token + two bindings)" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/unprotected" + + run_test \ + "4.4 - token-check (valid token + two bindings)" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-check" + + run_test \ + "4.4 - token-binding (valid token + two bindings)" \ + "${failure_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-binding" + fi + + # 5) Extreme tests: bad tokens and binding mismatches. + + # 5.1) Bad token with bad signature (modified third segment). + if [[ -f "${TOKDIR}/approov_token_valid" ]]; then + local good_tok + local bad_sig_tok + + good_tok="$(<"${TOKDIR}/approov_token_valid")" + bad_sig_tok="$( + awk -F. \ + '{printf "%s.%s.%s", $1, $2, "bogussignature"}' \ + <<<"${good_tok}" + )" + + run_test \ + "5.1 - Bad token (bad signature)" \ + "${failure_code}" \ + -H "approov-token: ${bad_sig_tok}" \ + "${BASE_URL}/token-check" + fi + + # 5.2) Bad token with invalid encoding. + local bad_token_invalid_encoding + bad_token_invalid_encoding="eyJ0eXAiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIn0.""\ +eyJleHAiOjE5OTk5OTk5OTksImRpZCI6IkV4YW1wbGVBcHByb292VG9rZW5ESUQ9PSJ9.""\ +NwqfsaOUBfXaf8KxRZovYCy0c6hqy29g88z1LIgzuQY" + + run_test \ + "5.2 - Bad token (invalid encoding)" \ + "${failure_code}" \ + -H "approov-token: ${bad_token_invalid_encoding}" \ + "${BASE_URL}/token-check" + + # 5.3) / 5.4) Bad token with no expiry (real or simulated). + local exp_noexp + exp_noexp="${failure_code}" + + if [[ -n "${BAD_TOKEN_NO_EXPIRY:-}" ]]; then + run_test \ + "5.3 - Bad token (no expiry)" \ + "${exp_noexp}" \ + -H "approov-token: ${BAD_TOKEN_NO_EXPIRY}" \ + "${BASE_URL}/token-check" + elif [[ -f "${TOKDIR}/approov_token_valid" ]]; then + local hdr_payload + local noexp_tok + + hdr_payload="$(cut -d. -f1-2 <"${TOKDIR}/approov_token_valid")" + noexp_tok="${hdr_payload}.nosig" + + run_test \ + "5.4 - Bad token (no expiry simulated)" \ + "${exp_noexp}" \ + -H "approov-token: ${noexp_tok}" \ + "${BASE_URL}/token-check" + fi + + # 5.5) Explicit expired token. + local bad_token_expired + bad_token_expired="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.""\ +eyJhdWQiOiIiLCJleHAiOjE3NjIzNTg3OTcsImlwIjoiMS4yLjMuNCIsImRpZCI6IkV4YW1w""\ +bGVBcHByb292VG9rZW5ESUQ9PSJ9.vQZqzUAOkjdqDRWMjUYQFwkwFd9sRn1UjXyZCIymNcE" + + run_test \ + "5.5 - Bad token (expired)" \ + "${failure_code}" \ + -H "approov-token: ${bad_token_expired}" \ + "${BASE_URL}/token-check" + + # 5.6) Missing binding but valid full token for double-binding endpoint. + if [[ -f "${TOKDIR}/approov_token_valid" ]]; then + run_test \ + "5.6 - Missing binding with good full token" \ + "${failure_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ + "${BASE_URL}/token-double-binding" + fi + + # 5.7) / 5.8) / 5.9) Various binding issues with double-binding token. + if [[ -f "${TOKDIR}/approov_token_bind_auth_cd_valid" ]]; then + # 5.7) Missing Authorization with valid binding token. + run_test \ + "5.7 - Missing Authorization with valid binding token" \ + "${failure_code}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 5.8) Good full token with binding. + run_test \ + "5.8 - Good full token with correct binding" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 5.9) Correctly signed token but wrong binding headers. + run_test \ + "5.9 - Correct token but wrong binding headers" \ + "${failure_code}" \ + -H "Authorization: WrongAuth==" \ + -H "Content-Digest: WrongDigest==" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + fi + + echo + echo "Full request and response details are saved in:" + echo " ${LOGFILE}" } main "$@" diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index cbabe01..98582ab 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -1,279 +1,357 @@ package io.approov; -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.io.Decoders; -import io.jsonwebtoken.security.Keys; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.security.Key; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.time.Instant; import java.util.Arrays; import java.util.Base64; import java.util.Collections; import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.LinkedHashMap; import java.util.Map; +import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jws; +import io.jsonwebtoken.JwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.security.Keys; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.security.web.authentication.HttpStatusEntryPoint; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.server.ResponseStatusException; +import org.springframework.web.filter.OncePerRequestFilter; -/** - * Single-file Spring Boot app exposing Approov-protected endpoints. - * Only the essential Approov token + binding checks are implemented here. - */ @SpringBootApplication -@RestController -@EnableWebSecurity public class ApproovApplication { - private static final Logger log = LoggerFactory.getLogger(ApproovApplication.class); - - private static final AtomicBoolean approovEnabled = new AtomicBoolean(true); - private static final AtomicBoolean tokenBindingEnabled = new AtomicBoolean(true); - - private final Key signingKey; - - public ApproovApplication() { - this.signingKey = resolveSigningKey(); - } + private static final Logger LOGGER = LoggerFactory.getLogger(ApproovApplication.class); + private static final String APPROOV_HEADER = "Approov-Token"; + private static final String AUTH_HEADER = "Authorization"; + private static final String DIGEST_HEADER = "Content-Digest"; + private static final AtomicBoolean APPROOV_ENABLED = new AtomicBoolean(true); + private static final AtomicBoolean TOKEN_BINDING_ENABLED = new AtomicBoolean(true); + private static final byte[] APPROOV_SECRET = loadApproovSecret(); public static void main(String[] args) { - SpringApplication app = new SpringApplication(ApproovApplication.class); - Map props = new HashMap<>(); - props.put("server.port", 8080); - props.put("spring.main.banner-mode", "off"); - props.put("logging.level.root", "INFO"); - app.setDefaultProperties(props); - app.run(args); + SpringApplication.run(ApproovApplication.class, args); } - @Bean - SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { - http.csrf().disable() - .authorizeRequests(auth -> auth.anyRequest().permitAll()) - .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS)); - return http.build(); + static boolean isApproovEnabled() { + return APPROOV_ENABLED.get(); } - @GetMapping("/unprotected") - public Map unprotected() { - return message("Unprotected endpoint reached at " + Instant.now()); + static boolean isTokenBindingEnabled() { + return TOKEN_BINDING_ENABLED.get(); } - @GetMapping("/token-check") - public Map tokenCheck( - @RequestHeader(value = "Approov-Token", required = false) String token - ) { - Claims claims = enforceToken(token); - log.debug("Token-check passed for jti={}", claims != null ? claims.getId() : "skipped"); - return message("Token check passed"); + static void enableApproov() { + APPROOV_ENABLED.set(true); + TOKEN_BINDING_ENABLED.set(true); } - @GetMapping("/token-binding") - public Map tokenBinding( - @RequestHeader(value = "Approov-Token", required = false) String token, - @RequestHeader(value = "Authorization", required = false) String authorization - ) { - Claims claims = enforceToken(token); - enforceBinding(claims, Collections.singletonList(authorization)); - return message("Token binding passed"); + static void disableApproov() { + APPROOV_ENABLED.set(false); + TOKEN_BINDING_ENABLED.set(false); } - @GetMapping("/token-double-binding") - public Map tokenDoubleBinding( - @RequestHeader(value = "Approov-Token", required = false) String token, - @RequestHeader(value = "Authorization", required = false) String authorization, - @RequestHeader(value = "Content-Digest", required = false) String contentDigest - ) { - Claims claims = enforceToken(token); - enforceBinding(claims, Arrays.asList(authorization, contentDigest)); - return message("Token double binding passed"); + static byte[] approovSecret() { + return APPROOV_SECRET; } - @GetMapping("/approov-state") - public Map approovState() { - Map state = new HashMap<>(); - state.put("approovEnabled", approovEnabled.get()); - state.put("tokenBindingEnabled", tokenBindingEnabled.get()); - state.put("timestamp", Instant.now().toString()); - return state; + private static byte[] loadApproovSecret() { + String secret = System.getenv("APPROOV_BASE64_SECRET"); + if (secret == null || secret.trim().isEmpty()) { + throw new IllegalStateException("Missing APPROOV_BASE64_SECRET environment variable."); + } + return Base64.getDecoder().decode(secret.trim()); } - @PostMapping("/approov/enable") - public Map enableApproov() { - approovEnabled.set(true); - tokenBindingEnabled.set(true); // enabling approov re-enables binding - log.info("Approov checks enabled"); - return approovState(); - } + @RestController + @RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE) + static class ApproovController { - @PostMapping("/approov/disable") - public Map disableApproov() { - approovEnabled.set(false); - tokenBindingEnabled.set(false); // disabling approov disables binding too - log.info("Approov checks disabled"); - return approovState(); - } + @GetMapping("/") + public Map home() { + return infoPayload("Approov demo API is running on port 8080."); + } - @PostMapping("/token-binding/enable") - public Map enableBinding() { - tokenBindingEnabled.set(true); - log.info("Token binding enabled"); - return approovState(); - } + @GetMapping("/approov-state") + public ResponseEntity> approovState() { + Map body = statePayload(); + return ResponseEntity.ok(body); + } - @PostMapping("/token-binding/disable") - public Map disableBinding() { - tokenBindingEnabled.set(false); - log.info("Token binding disabled"); - return approovState(); - } + @PostMapping("/approov/enable") + public Map enableApproovEndpoint() { + enableApproov(); + return statePayload(); + } - /** - * Validates signature/claims when Approov is enabled. - */ - private Claims enforceToken(String token) { - if (!approovEnabled.get()) { - return null; + @PostMapping("/approov/disable") + public Map disableApproovEndpoint() { + disableApproov(); + return statePayload(); } - if (token == null || token.isEmpty()) { - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Missing Approov-Token header"); + @PostMapping("/token-binding/enable") + public Map enableTokenBindingEndpoint() { + TOKEN_BINDING_ENABLED.set(true); + return statePayload(); } - Claims claims; - try { - claims = Jwts.parserBuilder() - .setSigningKey(signingKey) - .build() - .parseClaimsJws(token) - .getBody(); - } catch (JwtException | IllegalArgumentException e) { - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Invalid Approov token"); + @PostMapping("/token-binding/disable") + public Map disableTokenBindingEndpoint() { + TOKEN_BINDING_ENABLED.set(false); + return statePayload(); } - Date expiry = claims.getExpiration(); - if (expiry == null) { - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Approov token missing expiry"); + @GetMapping("/unprotected") + public Map unprotected() { + return infoPayload("Unprotected endpoint '/unprotected'; no Approov checks performed."); } - return claims; - } - /** - * Verifies the binding hash ("pay" claim) when token binding is enabled. - */ - private void enforceBinding(Claims claims, List bindingValues) { - if (!approovEnabled.get() || !tokenBindingEnabled.get()) { - return; + @GetMapping("/token-check") + public Map tokenCheck() { + return infoPayload("Protected endpoint '/token-check'; Approov token verified."); } - if (bindingValues.stream().anyMatch(v -> v == null || v.isEmpty())) { - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Missing token binding header"); + @GetMapping("/token-binding") + public Map tokenBinding( + @RequestHeader(value = AUTH_HEADER, required = false) String authorization) { + Map response = infoPayload( + "Protected endpoint '/token-binding'; Approov token binding enforced."); + response.put("authorizationHeaderPresent", hasText(authorization)); + return response; } - String expectedBinding = claims.get("pay", String.class); - if (expectedBinding == null || expectedBinding.isEmpty()) { - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Token missing binding claim"); + @GetMapping("/token-double-binding") + public Map tokenDoubleBinding( + @RequestHeader(value = AUTH_HEADER, required = false) String authorization, + @RequestHeader(value = DIGEST_HEADER, required = false) String contentDigest) { + Map response = infoPayload( + "Protected endpoint '/token-double-binding'; dual token binding enforced."); + response.put("authorizationHeaderPresent", hasText(authorization)); + response.put("contentDigestHeaderPresent", hasText(contentDigest)); + return response; } - String bindingData = String.join("", bindingValues); - String computedBinding = computeBinding(bindingData); - if (!bindingsMatch(expectedBinding, computedBinding) && !bindingsMatch(expectedBinding, computeBindingStd(bindingData))) { - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Token binding mismatch"); + private Map statePayload() { + Map body = new LinkedHashMap<>(); + body.put("approovEnabled", isApproovEnabled()); + body.put("tokenBindingEnabled", isTokenBindingEnabled()); + return body; } - } - private String computeBinding(String value) { - try { - MessageDigest digest = MessageDigest.getInstance("SHA-256"); - byte[] hashed = digest.digest(value.getBytes(StandardCharsets.UTF_8)); - return Base64.getUrlEncoder().withoutPadding().encodeToString(hashed); - } catch (NoSuchAlgorithmException e) { - throw new IllegalStateException("SHA-256 unavailable", e); + private Map infoPayload(String details) { + Map body = statePayload(); + body.put("details", details); + return body; } - } - // Approov CLI may emit bindings using standard Base64, accept both to stay compatible. - private String computeBindingStd(String value) { - try { - MessageDigest digest = MessageDigest.getInstance("SHA-256"); - byte[] hashed = digest.digest(value.getBytes(StandardCharsets.UTF_8)); - return Base64.getEncoder().withoutPadding().encodeToString(hashed); - } catch (NoSuchAlgorithmException e) { - throw new IllegalStateException("SHA-256 unavailable", e); + private boolean hasText(String value) { + return value != null && !value.trim().isEmpty(); } } - private boolean bindingsMatch(String expected, String computed) { - return normalizeBinding(expected).equals(normalizeBinding(computed)); + @Configuration + @EnableWebSecurity + static class SecurityConfig extends WebSecurityConfigurerAdapter { + + private final AuthenticationEntryPoint authEntryPoint = + new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED); + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.csrf().disable() + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.STATELESS) + .and() + .authorizeRequests() + .antMatchers( + "/", + "/unprotected", + "/approov-state", + "/approov/enable", + "/approov/disable", + "/token-binding/enable", + "/token-binding/disable") + .permitAll() + .anyRequest() + .authenticated() + .and() + .exceptionHandling() + .authenticationEntryPoint(authEntryPoint) + .and() + .addFilterBefore( + new ApproovFilter(authEntryPoint), + UsernamePasswordAuthenticationFilter.class); + } } - private String normalizeBinding(String value) { - if (value == null) { - return ""; + /** + * Stateless filter that validates the Approov token (and bindings when enabled) before protected endpoints. + */ + static class ApproovFilter extends OncePerRequestFilter { + + private static final Set PROTECTED_ENDPOINTS = Collections.unmodifiableSet( + new java.util.HashSet<>(Arrays.asList( + "/token-check", "/token-binding", "/token-double-binding"))); + + private final AuthenticationEntryPoint entryPoint; + + ApproovFilter(AuthenticationEntryPoint entryPoint) { + this.entryPoint = entryPoint; } - String noPad = value.replace("=", ""); - return noPad.replace('-', '+').replace('_', '/'); - } - private Key resolveSigningKey() { - String secret = System.getenv("APPROOV_BASE64_SECRET"); - if (secret == null || secret.trim().isEmpty()) { - secret = System.getProperty("APPROOV_BASE64_SECRET"); + @Override + protected boolean shouldNotFilter(HttpServletRequest request) { + String path = request.getRequestURI(); + return path == null || !PROTECTED_ENDPOINTS.contains(path); } - if (secret == null || secret.trim().isEmpty()) { - secret = readDotEnvSecret(); + + @Override + protected void doFilterInternal( + HttpServletRequest request, + HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + + if (!isApproovEnabled()) { + SecurityContextHolder.getContext().setAuthentication(disabledAuthentication()); + filterChain.doFilter(request, response); + return; + } + + String rawToken = request.getHeader(APPROOV_HEADER); + if (!hasText(rawToken)) { + unauthorized(request, response); + return; + } + + try { + Claims claims = parseApproovToken(rawToken.trim()); + String path = request.getRequestURI(); + + if (needsBindingCheck(path) && isTokenBindingEnabled()) { + String bindingValue = extractBindingValue(path, request); + if (!hasText(bindingValue) || !isBindingValid(bindingValue, claims)) { + unauthorized(request, response); + return; + } + } + + Authentication authentication = + new UsernamePasswordAuthenticationToken( + "approov-token", null, Collections.emptyList()); + SecurityContextHolder.getContext().setAuthentication(authentication); + filterChain.doFilter(request, response); + } catch (JwtException | IllegalArgumentException e) { + LOGGER.error("Approov token verification failed: {}", e.getMessage()); + unauthorized(request, response); + } } - if (secret == null || secret.trim().isEmpty()) { - throw new IllegalStateException("APPROOV_BASE64_SECRET is not set; cannot start Approov validation"); + + private void unauthorized( + HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + entryPoint.commence( + request, + response, + new BadCredentialsException("Approov authentication failed.")); } - return Keys.hmacShaKeyFor(Decoders.BASE64.decode(secret.trim())); - } + private Claims parseApproovToken(String token) { + Jws claims = Jwts.parserBuilder() + .setSigningKey(Keys.hmacShaKeyFor(approovSecret())) + .build() + .parseClaimsJws(token); + validateExpiration(claims.getBody()); + return claims.getBody(); + } - private String readDotEnvSecret() { - java.nio.file.Path path = java.nio.file.Paths.get(".env"); - if (!java.nio.file.Files.exists(path)) { - return null; + private boolean needsBindingCheck(String path) { + return "/token-binding".equals(path) || "/token-double-binding".equals(path); } - try { - return java.nio.file.Files.lines(path) - .map(String::trim) - .filter(line -> !line.startsWith("#")) - .filter(line -> line.startsWith("APPROOV_BASE64_SECRET=")) - .map(line -> line.substring("APPROOV_BASE64_SECRET=".length())) - .filter(v -> !v.isEmpty()) - .findFirst() - .orElse(null); - } catch (IOException e) { - log.warn("Unable to read .env file for APPROOV_BASE64_SECRET", e); - return null; + + private String extractBindingValue(String path, HttpServletRequest request) { + if ("/token-binding".equals(path)) { + return trimOrNull(request.getHeader(AUTH_HEADER)); + } + + String authorization = trimOrNull(request.getHeader(AUTH_HEADER)); + String digest = trimOrNull(request.getHeader(DIGEST_HEADER)); + if (!hasText(authorization) || !hasText(digest)) { + return null; + } + return authorization + digest; } - } - private Map message(String msg) { - Map payload = new HashMap<>(); - payload.put("message", msg); - return payload; - } + private boolean isBindingValid(String bindingValue, Claims claims) { + String expected = claims.get("pay", String.class); + if (!hasText(expected)) { + return false; + } + + String computed = hashBase64(bindingValue); + return expected.trim().equals(computed); + } + + private String hashBase64(String value) { + try { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] hash = digest.digest(value.getBytes(StandardCharsets.UTF_8)); + return Base64.getEncoder().encodeToString(hash); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException("SHA-256 not available", e); + } + } + private Authentication disabledAuthentication() { + return new UsernamePasswordAuthenticationToken( + "approov-disabled", null, Collections.emptyList()); + } + + private void validateExpiration(Claims claims) { + Date expiration = claims.getExpiration(); + if (expiration == null) { + throw new JwtException("Approov token missing expiration."); + } + if (expiration.before(new Date())) { + throw new JwtException("Approov token expired."); + } + } + + private String trimOrNull(String value) { + return value == null ? null : value.trim(); + } + + private boolean hasText(String value) { + return value != null && !value.trim().isEmpty(); + } + } } diff --git a/test.sh b/test.sh index c948d43..eb04b4b 100644 --- a/test.sh +++ b/test.sh @@ -17,7 +17,7 @@ set -o pipefail # - approov CLI available on PATH and configured # # Environment: -# BASE_URL: +# BASE_URL: # Base URL of the API under test. Default: http://localhost:8080 # TOKDIR: # Directory where temporary token files are stored. Default: .config @@ -35,6 +35,8 @@ readonly LOGFILE="${LOGDIR}/$(date '+%Y-%m-%d_%H-%M-%S').log" # Boolean flag indicating if Approov checks appear disabled # based on /approov-state endpoint. is_approov_disabled=false +success_code=200 +failure_code=401 # state_http_code: # HTTP status code from /approov-state endpoint. @@ -52,7 +54,7 @@ state_http_code='' # 0 ####################################### err() { - echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2 + echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2 } ####################################### @@ -67,49 +69,60 @@ err() { # Exits the script with code 1 if the command is missing. ####################################### requirement_check() { - local cmd="$1" + local cmd="$1" - if ! command -v "${cmd}" >/dev/null 2>&1; then - err "Missing required command: ${cmd}" - exit 1 - fi + if ! command -v "${cmd}" >/dev/null 2>&1; then + err "Missing required command: ${cmd}" + exit 1 + fi } ####################################### # Generate an Approov token into an output file. # Globals: -# none +# None # Arguments: # output file path. # arguments passed to "approov token". # Outputs: -# Writes token (if generated) to the output file. +# Captures stdout+stderr from "approov token", takes the last non-empty +# line as the token, and writes only that line to the output file. # Returns: # 0 on success. -# 1 on failure. +# 1 on failure (CLI error or no token produced). ####################################### gen_token() { - local outfile="$1" - shift - - set +o errexit - approov token "$@" >"${outfile}" - local rc=$? - set -o errexit - - if (( rc != 0 )); then - err "Approov CLI failed: approov token $*" - return 1 - fi - - return 0 + local outfile="$1" + shift + + set +o errexit + local cli_output + cli_output="$(approov token "$@" 2>&1)" + local rc=$? + set -o errexit + + if ((rc != 0)); then + err "Approov CLI failed: approov token $*" + printf '%s\n' "${cli_output}" >&2 + return 1 + fi + + # Prints notices before the token, grab the last non-empty line. + local token + token="$(printf '%s\n' "${cli_output}" | awk 'NF{last=$0} END{print last}')" + if [[ -z "${token}" ]]; then + err "Approov CLI produced no token output" + return 1 + fi + + printf '%s\n' "${token}" >"${outfile}" } ####################################### # Print test result and append full HTTP exchange to a log file. # Globals: # LOGFILE -# state_http_code +# is_approov_disabled # Arguments: # $1 - test name. # $2 - expected HTTP status code. @@ -122,39 +135,41 @@ gen_token() { # 0 ####################################### print_test_result() { - local name="$1" - local expected="$2" - local status="$3" - local resp="$4" - - local result="Failed" - if [[ "${status}" == "${expected}" ]]; then - result="Passed" - fi - - echo "${name}: ${result} (status: ${status}, expected: ${expected})" - - { - echo "Test: ${name}" - echo "Expected status: ${expected}" - echo "Actual status: ${status}" - if [[ "${state_http_code:-}" == "200" ]]; then - echo "Approov State: enabled, token checks performed." - else - echo "Approov State: disabled, no checks performed." - fi - echo - echo "HTTP exchange:" - echo "${resp}" - echo - } >>"${LOGFILE}" 2>&1 + local name="$1" + local expected="$2" + local status="$3" + local resp="$4" + + local result="Failed" + if [[ "${status}" == "${expected}" ]]; then + result="Passed" + fi + + echo "${name}: ${result} (status: ${status}, expected: ${expected})" + + { + echo "Test: ${name}" + echo "Expected status: ${expected}" + echo "Actual status: ${status}" + if [[ "${is_approov_disabled}" == "false" ]]; then + echo "Approov State: enabled, token checks performed." + else + echo "Approov State: disabled, no checks performed." + fi + echo + echo "HTTP exchange:" + echo "${resp}" + echo + } >>"${LOGFILE}" 2>&1 } ####################################### # Execute a curl call for a test and evaluate the result. # Globals: -# LOGFILE (written via print_test_result) -# state_http_code (read via print_test_result for logging) +# None +# Notes: +# Uses print_test_result, which logs to LOGFILE and reads +# is_approov_disabled. # Arguments: # test name. # expected HTTP status code. @@ -162,245 +177,206 @@ print_test_result() { # Outputs: # Short result to STDOUT, full HTTP exchange appended to LOGFILE. # Returns: -# 0 on success, curl's exit code on failure +# 0 on success, curl's exit code on failure. ####################################### - run_test() { - local name="$1"; shift - local expected="$1"; shift - - local resp - local status - local curl_rc - - # -i: include headers; -s: silent - set +o errexit - resp="$(curl -i -s "$@")" - curl_rc=$? - set -o errexit - - if (( curl_rc != 0 )); then - err "curl failed for ${name} (rc=${curl_rc})" - return $curl_rc - fi - - status="$( - printf '%s\n' "${resp}" \ - | grep -m1 '^HTTP/' \ - | awk '{print $2}' - )" - - print_test_result "${name}" "${expected}" "${status}" "${resp}" + # shift after each grab so $1 advances (name -> expected -> rest) + local name="$1"; shift + local expected="$1"; shift + + local resp + local status + local curl_rc + + # -i: include headers, -s: silent + set +o errexit + resp="$(curl -i -s "$@")" + curl_rc=$? + set -o errexit + + if ((curl_rc != 0)); then + err "curl failed for ${name} (rc=${curl_rc})" + return "${curl_rc}" + fi + + status="$( + printf '%s\n' "${resp}" | + grep -m1 '^HTTP/' | + awk '{print $2}' + )" + + print_test_result "${name}" "${expected}" "${status}" "${resp}" } main() { - requirement_check "approov" - requirement_check "curl" - - mkdir -p "${TOKDIR}" "${LOGDIR}" - - echo "Listing Approov API configuration:" - approov api -list - echo - - echo "Approov state check:" - local state_response - state_response="$(curl -i -s "${BASE_URL}/approov-state")" - state_http_code="$( - printf '%s\n' "${state_response}" \ - | grep -m1 '^HTTP/' \ - | awk '{print $2}' - )" - - if [[ "${state_http_code}" != "200" || -z "${state_http_code}" ]]; then - err "Failed to get Approov state from ${BASE_URL}/approov-state (status=${state_http_code:-unknown})" - exit 1 - fi - - -if grep -q '"approovEnabled":true' <<<"${state_response}"; then - echo " Approov service: ENABLED" - is_approov_disabled=false -else - echo " Approov service: DISABLED" - is_approov_disabled=true -fi -echo - - # 0) Unprotected endpoint. - run_test \ - "Unprotected request - no approov protection" \ - 200 \ - "${BASE_URL}/unprotected" - - # 1) Token check (single binding). - gen_token \ - "${TOKDIR}/approov_token_1_valid" \ - -genExample \ - example.com - - # 1.1 Valid Token. - local expected_status=200 - run_test \ - "Token check - valid token" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_1_valid")" \ - "${BASE_URL}/token-check" - - # 1.2 Invalid Token. - gen_token \ - "${TOKDIR}/approov_token_1_invalid" \ - -genExample \ - example.com \ - -type invalid || true - - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - - run_test \ - "Token check - invalid token" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_1_invalid")" \ - "${BASE_URL}/token-check" - - # 2) Token Binding ["Authorization"]. - local AUTH_VAL="ExampleAuthToken==" - export HASH_INPUT="${AUTH_VAL}" - - gen_token \ - "${TOKDIR}/approov_token_2_valid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com - - # 2.1 Valid Token. - expected_status=200 - run_test \ - "Single Binding - valid token and header" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-binding" - - # 2.2 Missing Header. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "Single Binding - missing Authorization header" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-binding" - - # 2.3 Incorrect Header. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "Single Binding - incorrect Authorization header" \ - "${expected_status}" \ - -H "Authorization: BadAuthToken==" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_valid")" \ - "${BASE_URL}/token-binding" - - # 2.4 Invalid Token. - gen_token \ - "${TOKDIR}/approov_token_2_invalid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com \ - -type invalid || true - - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "Single Binding - invalid token" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_2_invalid")" \ - "${BASE_URL}/token-binding" - - # 3) Token Binding ["Authorization", "Content-Digest"]. - local AUTH_VAL2="ExampleAuthToken==" - local CD_VAL="ContentDigest==" - export HASH_INPUT="${AUTH_VAL2}${CD_VAL}" - - gen_token \ - "${TOKDIR}/approov_token_3_valid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com - - # 3.1 Valid. - expected_status=200 - run_test \ - "Double Binding - valid token and headers" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.2 Missing headers. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "Double Binding - missing binding headers" \ - "${expected_status}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.3 Incorrect headers. - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "Double Binding - incorrect binding headers" \ - "${expected_status}" \ - -H "Authorization: BadAuthToken==" \ - -H "Content-Digest: BadContentDigest==" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.4 Invalid token. - gen_token \ - "${TOKDIR}/approov_token_3_invalid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com \ - -type invalid || true - - if [[ "${is_approov_disabled}" == true ]]; then - expected_status=200 - else - expected_status=401 - fi - run_test \ - "Double Binding - invalid token" \ - "${expected_status}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(cat "${TOKDIR}/approov_token_3_invalid")" \ - "${BASE_URL}/token-double-binding" - - echo - echo "Full request and response details are saved in:" - echo " ${LOGFILE}" + requirement_check "approov" + requirement_check "curl" + + mkdir -p "${TOKDIR}" "${LOGDIR}" + + echo "Listing Approov API configuration:" + approov api -list + echo + + echo "Approov state check:" + local state_response + state_response="$(curl -i -s "${BASE_URL}/approov-state")" + state_http_code="$( + printf '%s\n' "${state_response}" | + grep -m1 '^HTTP/' | + awk '{print $2}' + )" + + if [[ "${state_http_code}" != "200" || -z "${state_http_code}" ]]; then + err "Failed to get Approov state from ${BASE_URL}/approov-state (status=${state_http_code:-unknown})" + exit 1 + fi + + if grep -q '"approovEnabled":true' <<<"${state_response}"; then + echo " Approov service: ENABLED" + is_approov_disabled=false + else + echo " Approov service: DISABLED" + is_approov_disabled=true + failure_code=200 + fi + echo + + # 0) Unprotected endpoint. + run_test \ + "Unprotected request - no approov protection" \ + "${success_code}" \ + "${BASE_URL}/unprotected" + + # 1) Token check. + gen_token \ + "${TOKDIR}/approov_token_valid" \ + -genExample \ + example.com + + # 1.1) Valid Token. + run_test \ + "Token check - valid token" \ + "${success_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ + "${BASE_URL}/token-check" + + # 1.2) Invalid Token. + gen_token \ + "${TOKDIR}/approov_token_invalid" \ + -genExample \ + example.com \ + -type invalid || true + + run_test \ + "Token check - invalid token" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_invalid")" \ + "${BASE_URL}/token-check" + + # 2) Token Binding ["Authorization"]. + local AUTH_VAL="ExampleAuthToken==" + export HASH_INPUT="${AUTH_VAL}" + + gen_token \ + "${TOKDIR}/approov_token_bind_auth_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 2.1) Valid Token. + run_test \ + "Single Binding - valid token and header" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-binding" + + # 2.2) Missing Header. + run_test \ + "Single Binding - missing Authorization header" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-binding" + + # 2.3) Incorrect Header. + run_test \ + "Single Binding - incorrect Authorization header" \ + "${failure_code}" \ + -H "Authorization: BadAuthToken==" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ + "${BASE_URL}/token-binding" + + # 2.4) Invalid Token. + gen_token \ + "${TOKDIR}/approov_token_bind_auth_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid || true + + run_test \ + "Single Binding - invalid token" \ + "${failure_code}" \ + -H "Authorization: ${AUTH_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_invalid")" \ + "${BASE_URL}/token-binding" + + # 3) Token Binding ["Authorization", "Content-Digest"]. + local AUTH_VAL2="ExampleAuthToken==" + local CD_VAL="ContentDigest==" + export HASH_INPUT="${AUTH_VAL2}${CD_VAL}" + + gen_token \ + "${TOKDIR}/approov_token_bind_auth_cd_valid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com + + # 3.1) Valid. + run_test \ + "Double Binding - valid token and headers" \ + "${success_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.2) Missing headers. + run_test \ + "Double Binding - missing binding headers" \ + "${failure_code}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.3) Incorrect headers. + run_test \ + "Double Binding - incorrect binding headers" \ + "${failure_code}" \ + -H "Authorization: BadAuthToken==" \ + -H "Content-Digest: BadContentDigest==" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ + "${BASE_URL}/token-double-binding" + + # 3.4) Invalid token. + gen_token \ + "${TOKDIR}/approov_token_bind_auth_cd_invalid" \ + -setDataHashInToken "${HASH_INPUT}" \ + -genExample \ + example.com \ + -type invalid || true + + run_test \ + "Double Binding - invalid token" \ + "${failure_code}" \ + -H "Authorization: ${AUTH_VAL2}" \ + -H "Content-Digest: ${CD_VAL}" \ + -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_invalid")" \ + "${BASE_URL}/token-double-binding" + + echo + echo "Full request and response details are saved in:" + echo " ${LOGFILE}" } main "$@" From 8f222c13fe0dcf4c03ff380b63c2ffc014ce1d2a Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Mon, 15 Dec 2025 09:34:41 +0000 Subject: [PATCH 10/22] up spring to 2.7.18 --- README.md | 8 ++++---- build.gradle | 2 +- src/main/java/io/approov/ApproovApplication.java | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1edf462..1779d43 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Approov Backend Quickstart - {{LANGUAGE}} {{FRAMEWORK}} +# Approov Backend Quickstart - Java Spring This project provides a server-side example of Approov token verification for a protected backend API. It exposes a simple API that verifies Approov tokens before granting access to protected endpoints and demonstrates how the endpoints behave under the current Approov configuration: @@ -232,9 +232,9 @@ curl -X GET http://localhost:8080/approov-state # check current state **Environments where the quickstart was tested:** ```text -* Runtime: {{RUNTIME_VERSION}} -* Framework: {{LANGUAGE}} {{FRAMEWORK}} -* Build Tool: {{BUILD_TOOL}} {{BUILD_TOOL_VERSION}} +* Runtime: Java 17 (JVM 17.0.14) +* Framework: Spring Boot 2.7.18 +* Build Tool: Gradle 7.6.6 ``` If you encounter any problems while following this guide, or have any other concerns, please let us know by opening an issue [here](https://github.com/approov/quickstart-java-spring-token-check/issues) and we will be happy to assist you. diff --git a/build.gradle b/build.gradle index 3b95d5f..03520de 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'org.springframework.boot' version '2.6.4' + id 'org.springframework.boot' version '2.7.18' id 'java' } diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index 98582ab..e57081e 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -16,7 +16,6 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; import io.jsonwebtoken.JwtException; From 8b552ff66d9ac38ed66c5dab46efc2dc0bead173 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Mon, 15 Dec 2025 09:38:21 +0000 Subject: [PATCH 11/22] up spring to 2.7.18 --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index 7d075b5..2e537d5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ HELP.md .gradle build/ !gradle/wrapper/gradle-wrapper.jar +.DS_Store +src/.DS_Store +src/main/.DS_Store ### STS ### .apt_generated @@ -32,3 +35,7 @@ nbdist/ .local/ .env .config/ + +# macOS +.DS_Store +**/.DS_Store \ No newline at end of file From 006b0acb3c05257707a9a0ef0f86e8976ff5d65b Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Mon, 15 Dec 2025 10:21:12 +0000 Subject: [PATCH 12/22] readme update --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1779d43..b2076f8 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,10 @@ This project provides a server-side example of Approov token verification for a - `/token-binding` - requires a valid Approov token which is bound to a header value. - `/token-double-binding` - requires a valid Approov token which is bound to two header values. - -In this example, Approov protection is provided by [`{{DECORATOR_FUNCTION_NAME}}`]({{DECORATOR_LINK}}). The level of protection is configured per endpoint via the decorator parameters, as shown in [`{{ENDPOINT_CONFIG_NAME}}`]({{ENDPOINT_EXAMPLE_LINK}}). +Language specific version: +In this example, Approov protection is implemented by the ApproovFilter inside [ApproovApplication.java](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L220-L278), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the same file, in [SecurityConfig.configure(HttpSecurity)](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L190-L215). + + From ef61ac894404db34867494ddb04de0379795f245 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Mon, 15 Dec 2025 15:45:10 +0000 Subject: [PATCH 13/22] gradle and application.properties added --- README.md | 8 +--- build.gradle | 43 ++++++++----------- .../java/io/approov/ApproovApplication.java | 8 ++++ src/main/resources/application.properties | 10 +++++ 4 files changed, 38 insertions(+), 31 deletions(-) create mode 100644 src/main/resources/application.properties diff --git a/README.md b/README.md index b2076f8..751d4a7 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,7 @@ This project provides a server-side example of Approov token verification for a - `/token-binding` - requires a valid Approov token which is bound to a header value. - `/token-double-binding` - requires a valid Approov token which is bound to two header values. -Language specific version: -In this example, Approov protection is implemented by the ApproovFilter inside [ApproovApplication.java](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L220-L278), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the same file, in [SecurityConfig.configure(HttpSecurity)](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L190-L215). - - - - +In this example, Approov protection is implemented by the ApproovFilter inside [ApproovApplication.java](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L220-L278), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the same file [SecurityConfig.configure(HttpSecurity)](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L190-L215). ## Approov Token Verification Flow diff --git a/build.gradle b/build.gradle index 03520de..33922d5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,37 +1,32 @@ plugins { - id 'org.springframework.boot' version '2.7.18' - id 'java' + id 'org.springframework.boot' version '2.7.18' + id 'java' } apply plugin: 'io.spring.dependency-management' group = 'io.approov' version = '0.0.1-SNAPSHOT' -sourceCompatibility = '1.8' + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} repositories { - mavenCentral() + mavenCentral() } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-integration' - implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.springframework.security:spring-security-core' - implementation 'org.springframework.security:spring-security-web' - implementation 'org.springframework.security:spring-security-config' - - implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2' - runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2', - // Uncomment the next line if you want to use RSASSA-PSS (PS256, PS384, PS512) algorithms: - //'org.bouncycastle:bcprov-jdk15on:1.60', - 'io.jsonwebtoken:jjwt-jackson:0.11.2' - - compileOnly 'org.jetbrains:annotations:17.0.0' - - compileOnly 'javax.servlet:javax.servlet-api:3.1.0' - - runtimeOnly 'org.springframework.boot:spring-boot-devtools' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.security:spring-security-test' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'io.jsonwebtoken:jjwt-api:0.11.2' + runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2' + runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2' + // runtimeOnly 'org.bouncycastle:bcprov-jdk15on:1.60' // only if you need RSASSA-PSS + compileOnly 'org.jetbrains:annotations:17.0.0' + runtimeOnly 'org.springframework.boot:spring-boot-devtools' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.springframework.security:spring-security-test' } diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index e57081e..4a0be87 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -37,6 +38,8 @@ import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.authentication.HttpStatusEntryPoint; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; @@ -186,6 +189,11 @@ static class SecurityConfig extends WebSecurityConfigurerAdapter { private final AuthenticationEntryPoint authEntryPoint = new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED); + @Bean + public UserDetailsService userDetailsService() { + return new InMemoryUserDetailsManager(); + } + @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..eb25faa --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,10 @@ +# Reduce Spring/Security chatter at startup +logging.level.root=INFO +logging.level.org.springframework=WARN +logging.level.org.springframework.boot=WARN +logging.level.org.springframework.security=WARN + +# Silence DevTools extras +spring.devtools.add-properties=false +spring.devtools.livereload.enabled=false +spring.devtools.restart.enabled=false From 28f8f29f572b82055140623bd87197720bf023b3 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Tue, 16 Dec 2025 11:24:48 +0000 Subject: [PATCH 14/22] formatting and styling --- README.md | 2 +- src/main/java/io/approov/ApproovApplication.java | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 751d4a7..4b38b13 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This project provides a server-side example of Approov token verification for a - `/token-binding` - requires a valid Approov token which is bound to a header value. - `/token-double-binding` - requires a valid Approov token which is bound to two header values. -In this example, Approov protection is implemented by the ApproovFilter inside [ApproovApplication.java](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L220-L278), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the same file [SecurityConfig.configure(HttpSecurity)](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L190-L215). +In this example, Approov protection is implemented by the ApproovFilter inside [ApproovApplication.java](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L228-L285), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the same file [SecurityConfig.configure(HttpSecurity)](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L198-L223). ## Approov Token Verification Flow diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index 4a0be87..51605ba 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -186,14 +186,13 @@ private boolean hasText(String value) { @EnableWebSecurity static class SecurityConfig extends WebSecurityConfigurerAdapter { - private final AuthenticationEntryPoint authEntryPoint = - new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED); + private final AuthenticationEntryPoint authEntryPoint = new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED); @Bean public UserDetailsService userDetailsService() { return new InMemoryUserDetailsManager(); } - + @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() @@ -223,7 +222,8 @@ protected void configure(HttpSecurity http) throws Exception { } /** - * Stateless filter that validates the Approov token (and bindings when enabled) before protected endpoints. + * Stateless filter that validates the Approov token (and bindings when enabled) + * before protected endpoints. */ static class ApproovFilter extends OncePerRequestFilter { @@ -273,9 +273,8 @@ protected void doFilterInternal( } } - Authentication authentication = - new UsernamePasswordAuthenticationToken( - "approov-token", null, Collections.emptyList()); + Authentication authentication = new UsernamePasswordAuthenticationToken( + "approov-token", null, Collections.emptyList()); SecurityContextHolder.getContext().setAuthentication(authentication); filterChain.doFilter(request, response); } catch (JwtException | IllegalArgumentException e) { From 977b839441bd00e45e20352ef65daccd93918595 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Wed, 7 Jan 2026 09:13:08 +0000 Subject: [PATCH 15/22] Docker added --- .env.example | 27 ++---- Dockerfile | 16 ++++ README.md | 21 +++-- run_server.sh | 6 ++ scripts/build.sh | 87 +++++++++++++++++++ scripts/install-prerequisites.sh | 32 +++++++ .../java/io/approov/ApproovApplication.java | 43 ++++----- 7 files changed, 178 insertions(+), 54 deletions(-) create mode 100644 Dockerfile create mode 100755 run_server.sh create mode 100755 scripts/build.sh create mode 100755 scripts/install-prerequisites.sh diff --git a/.env.example b/.env.example index bc74c47..e519a1f 100644 --- a/.env.example +++ b/.env.example @@ -1,22 +1,11 @@ -########### -# SERVER -########### +# HTTP port the backend listens on +HTTP_PORT=8080 -HTTP_REDIRECT=false -HTTP_PORT=8002 -HTTPS_PORT=8003 +# Approov secret: approov secret -get base64url +APPROOV_BASE64URL_SECRET=approov_base64url_secret_here +# Localhost +SERVER_HOSTNAME=0.0.0.0 -############ -# APPROOV -############ - -APPROOV_TOKEN_BINDING_HEADER_NAME=Authorization - -# Feel free to play with different secrets. For development only you can create them with: -# $ openssl rand -base64 64 | tr -d '\n'; echo -APPROOV_BASE64_SECRET=h+CX0tOzdAAR9l15bWAqvq7w9olk66daIH+Xk+IAHhVVHszjDzeGobzNnqyRze3lw/WVyWrc2gZfh3XXfBOmww== - -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN=true -APPROOV_ABORT_REQUEST_ON_INVALID_TOKEN_BINDING=true -APPROOV_LOGGING_ENABLED=true +# Command that starts your server inside the container (e.g., npm run dev, gunicorn app:app, go run main.go). +APP_START_CMD="<>" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..efa82f8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +# syntax=docker/dockerfile:1 +# Builds the quickstart backend container image and configures scripts/install-prerequisites.sh and scripts/build.sh +# as the entrypoint used both locally and when deployed via Docker. +FROM eclipse-temurin:17-jdk + +ENV APP_HOME=/workspace \ + RUN_MODE=container + +WORKDIR /app + +COPY . . + +RUN bash scripts/install-prerequisites.sh + +# Provide APP_START_CMD via --env-file. +CMD ["bash", "scripts/build.sh"] diff --git a/README.md b/README.md index 4b38b13..b3d2c13 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,9 @@ In this example, Approov protection is implemented by the ApproovFilter inside [ cp .env.example .env ``` -5. ***Configure secret*** - fetch the secret and add it to `.env` (`APPROOV_BASE64_SECRET`): +5. ***Configure secret*** - fetch the secret and add it to `.env` (`APPROOV_BASE64URL_SECRET`): ```bash - approov secret -get base64 + approov secret -get base64url ``` 6. ***Register API domain*** - point Approov at your backend API (default example.com): @@ -71,7 +71,7 @@ This script: - `/token-double-binding` - requires `Approov-Token`, `Authorization`, and `Content-Digest` headers. - Displays results and stops containers when finished. -## Automated and Manual Testing +### Automated and Manual Testing *When the server is running, validate the endpoints via the automated bash script or by running the manual checks below* @@ -85,9 +85,9 @@ This script: - Runs endpoint tests against `/unprotected` (no token), `/token-check` (valid/invalid Approov tokens), `/token-binding` (token bound to `Authorization`), and `/token-double-binding` (token bound to `Authorization` + `Content-Digest`). - Logs full request/response details to `.config/logs/.log`. -### *1. Unprotected Endpoint (No Approov)* +#### *1. Unprotected Endpoint (No Approov)* -- The client sends a normal HTTPS request. +- The client sends a normal HTTP request. - The server **does not verify** any Approov token or extra authentication header. - This means **any client** (even tampered or unauthorized) can call the API if they know the URL. @@ -104,7 +104,7 @@ Content-Type: application/json Cache-Control: no-cache ``` -### *2. Approov Token Check* +#### *2. Approov Token Check* - The client includes an `Approov-Token` (a short-lived JWT) in each API request header. - The server verifies this token using the **Approov secret key** that is securely configured on the backend and checks: @@ -139,14 +139,14 @@ Cache-Control: no-cache *If you use an invalid or missing token, the server will respond with `401 Unauthorized`.* -### *3. Approov Token Binding Check* +#### *3. Approov Token Binding Check* - The client sends two headers on authenticated API calls: - `Approov-Token` - `Authorization` – your auth token value (e.g., `ExampleAuthToken==`) - The server verifies the token and ensures that the bound value matches what the app used. - Prevents token replay - the Approov token cannot be reused or stolen for another session. -- **Use case:** stronger protection for authenticated API calls tied to a specific user or device. +- **Use case:** Stronger protection for authenticated API calls tied to a specific user or device. ***The following example shows how the API responds when an Approov token with binding is required.*** @@ -181,7 +181,7 @@ Cache-Control: no-cache - `Authorization` - `Content-Digest` It is combined with the `Authorization` header to create a stronger binding. - Both are included in the hash inside the Approov token. This means the server verifies a single hash that covers both authentication credentials. -- **Use case:** This configuration provides the highest level of protection for authenticated API requests: +- **Use case:** Stronger protection then single binding by tying both headers together. ***The following example shows how the API responds when an Approov token with two bindings is required.*** @@ -244,5 +244,4 @@ If you encounter any problems while following this guide, or have any other conc * [Approov Customer Stories](https://approov.io/customer) * [Approov Support](https://approov.io/info/technical-support) * [About Us](https://approov.io/company) -* [Contact Us](https://approov.io/info/contact) - +* [Contact Us](https://approov.io/info/contact) \ No newline at end of file diff --git a/run_server.sh b/run_server.sh new file mode 100755 index 0000000..5a64feb --- /dev/null +++ b/run_server.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Host-side wrapper: sets FOLLOW_LOGS (default true) and hands execution to scripts/build.sh, +# which handles image build/run plus container log tailing. +set -euo pipefail + +FOLLOW_LOGS="${FOLLOW_LOGS:-true}" ./scripts/build.sh diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..4525491 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +# Dual-purpose orchestrator: on the host it builds/runs the Docker container, +# and inside the container it starts the application command with optional +# readiness checks and log attachment. +set -euo pipefail + +requirement_check() { # verify command exists on PATH + local cmd="$1" + if ! command -v "$cmd" >/dev/null 2>&1; then + fail "Missing required command: ${cmd}" + fi +} +fail() { echo "ERROR: $*" >&2; exit 1; } # uniform error output + exit +info() { echo "info $*"; } # lightweight logging helper + +# Globals configured via environment overrides +RUN_MODE="${RUN_MODE:-host}" # host orchestrator vs container entrypoint +APP_START_CMD="${APP_START_CMD:-}" # command executed when inside container +FOLLOW_LOGS="${FOLLOW_LOGS:-true}" # toggle docker logs -f attachment +HOST_PORT="${HOST_PORT:-8080}" # host-facing port (e.g., http://localhost:3000) +WAIT_URL="${WAIT_URL:-http://localhost:${HOST_PORT}/approov-state}" # readiness probe target +WAIT_TIMEOUT="${WAIT_TIMEOUT:-60}" # how long to wait before failing readiness +WAIT_INTERVAL="${WAIT_INTERVAL:-2}" # delay between readiness checks +CONTAINER_PORT="${CONTAINER_PORT:-$HOST_PORT}" # container listener, defaults to host port +IMAGE_NAME="${IMAGE_NAME:-approov-quickstart-java-spring}" +CONTAINER_NAME="${CONTAINER_NAME:-approov-quickstart-java-spring-app}" +ENV_FILE="${ENV_FILE:-.env}" +RUNTIME_BIN_DIR="${RUNTIME_BIN_DIR:-}" # optional runtime-specific bin path + +in_container() { + [[ "$RUN_MODE" == "container" ]] || [[ -f "/.dockerenv" ]] +} + +if in_container; then + [[ -n "$APP_START_CMD" ]] || fail "APP_START_CMD must be provided to run the server" + if [[ -n "$RUNTIME_BIN_DIR" ]]; then + export PATH="${RUNTIME_BIN_DIR}:$PATH" # e.g., RUNTIME_BIN_DIR=/usr/local/go/bin to expose runtime binaries for golang + fi + info "Container starting application: ${APP_START_CMD}" + exec bash -c "$APP_START_CMD" +fi + +requirement_check docker +if ! command -v approov >/dev/null 2>&1; then + info "Approov CLI not found; continuing without CLI checks (tests may need it)" +fi + +[[ -f "$ENV_FILE" ]] || fail "$ENV_FILE not found. Run cp .env.example .env first." +[[ -f Dockerfile ]] || fail "Dockerfile not found in $(pwd)" + +if docker ps -a --format '{{.Names}}' | grep -Fxq "$CONTAINER_NAME"; then + info "Removing stale container ${CONTAINER_NAME}" + docker rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true +fi + +info "Building ${IMAGE_NAME}" +docker build -t "$IMAGE_NAME" . || fail "Docker build failed" + +info "Starting ${CONTAINER_NAME} on host port ${HOST_PORT}, container port ${CONTAINER_PORT}" +docker run -d \ + --name "$CONTAINER_NAME" \ + --env-file "$ENV_FILE" \ + -e RUN_MODE=container \ + -p "${HOST_PORT}:${CONTAINER_PORT}" \ + "$IMAGE_NAME" >/dev/null || fail "Failed to start container ${CONTAINER_NAME}" + +wait_for_service() { + local url="$1" timeout="$2" interval="$3" elapsed=0 + info "Waiting for application to become ready at ${url}" + until curl -fsS "$url" >/dev/null 2>&1; do + sleep "$interval" + elapsed=$((elapsed + interval)) + if (( elapsed >= timeout )); then + fail "Application did not become ready within ${timeout}s (last url: ${url})" + fi + done + info "Application is ready" +} + +wait_for_service "$WAIT_URL" "$WAIT_TIMEOUT" "$WAIT_INTERVAL" + +if [[ "$FOLLOW_LOGS" == "true" ]]; then + info "Container logs (Ctrl+C to stop):" + docker logs -f "$CONTAINER_NAME" +else + info "Skipping container logs attachment." +fi diff --git a/scripts/install-prerequisites.sh b/scripts/install-prerequisites.sh new file mode 100755 index 0000000..96b4fd4 --- /dev/null +++ b/scripts/install-prerequisites.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# Installs base OS dependencies (and optionally language runtimes) required for +# the quickstart image; intended for use inside the Docker build context. +set -euo pipefail + +requirement_check() { # helper to verify command availability + local cmd="$1" + if ! command -v "$cmd" >/dev/null 2>&1; then + fail "Missing required command: ${cmd}" + fi +} +fail() { echo "ERROR: $*" >&2; exit 1; } # helper to abort with message +info() { echo "info $*"; } # helper to print informational logs + +# ensure apt operations have privileges +[[ "$(id -u)" -eq 0 ]] || fail "Run this script as root (or via sudo) inside the build context." + +# base utilities required by every quickstart +apt-get update +apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + build-essential \ + git + +# Optional runtime install; set INSTALL_LANGUAGE_RUNTIME=true per quickstart and fill commands below. +INSTALL_LANGUAGE_RUNTIME_FLAG="${INSTALL_LANGUAGE_RUNTIME:-false}" + +if [[ "$INSTALL_LANGUAGE_RUNTIME_FLAG" == "true" ]]; then + info "Installing language/runtime specific dependencies" + # TODO: add language-specific install commands (apt packages, curl tarballs, etc.) +fi diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index 51605ba..a9dbcef 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -61,6 +61,10 @@ public class ApproovApplication { private static final AtomicBoolean TOKEN_BINDING_ENABLED = new AtomicBoolean(true); private static final byte[] APPROOV_SECRET = loadApproovSecret(); + private static boolean hasText(String value) { + return value != null && !value.trim().isEmpty(); + } + public static void main(String[] args) { SpringApplication.run(ApproovApplication.class, args); } @@ -88,11 +92,12 @@ static byte[] approovSecret() { } private static byte[] loadApproovSecret() { - String secret = System.getenv("APPROOV_BASE64_SECRET"); - if (secret == null || secret.trim().isEmpty()) { - throw new IllegalStateException("Missing APPROOV_BASE64_SECRET environment variable."); + String secret = System.getenv("APPROOV_BASE64URL_SECRET"); + if (!hasText(secret)) { + LOGGER.error("APPROOV_BASE64URL_SECRET environment variable is not set"); + throw new IllegalStateException("APPROOV_BASE64URL_SECRET environment variable is not set"); } - return Base64.getDecoder().decode(secret.trim()); + return Base64.getUrlDecoder().decode(secret.trim()); } @RestController @@ -176,10 +181,6 @@ private Map infoPayload(String details) { body.put("details", details); return body; } - - private boolean hasText(String value) { - return value != null && !value.trim().isEmpty(); - } } @Configuration @@ -216,7 +217,7 @@ protected void configure(HttpSecurity http) throws Exception { .authenticationEntryPoint(authEntryPoint) .and() .addFilterBefore( - new ApproovFilter(authEntryPoint), + new ApproovTokenVerifier(authEntryPoint), UsernamePasswordAuthenticationFilter.class); } } @@ -225,22 +226,22 @@ protected void configure(HttpSecurity http) throws Exception { * Stateless filter that validates the Approov token (and bindings when enabled) * before protected endpoints. */ - static class ApproovFilter extends OncePerRequestFilter { + static class ApproovTokenVerifier extends OncePerRequestFilter { - private static final Set PROTECTED_ENDPOINTS = Collections.unmodifiableSet( + private static final Set APPROOV_PROTECTED_PATHS = Collections.unmodifiableSet( new java.util.HashSet<>(Arrays.asList( "/token-check", "/token-binding", "/token-double-binding"))); private final AuthenticationEntryPoint entryPoint; - ApproovFilter(AuthenticationEntryPoint entryPoint) { + ApproovTokenVerifier(AuthenticationEntryPoint entryPoint) { this.entryPoint = entryPoint; } @Override protected boolean shouldNotFilter(HttpServletRequest request) { String path = request.getRequestURI(); - return path == null || !PROTECTED_ENDPOINTS.contains(path); + return path == null || !APPROOV_PROTECTED_PATHS.contains(path); } @Override @@ -262,7 +263,7 @@ protected void doFilterInternal( } try { - Claims claims = parseApproovToken(rawToken.trim()); + Claims claims = verifyApproovToken(rawToken.trim()); String path = request.getRequestURI(); if (needsBindingCheck(path) && isTokenBindingEnabled()) { @@ -291,7 +292,7 @@ private void unauthorized( new BadCredentialsException("Approov authentication failed.")); } - private Claims parseApproovToken(String token) { + private Claims verifyApproovToken(String token) { Jws claims = Jwts.parserBuilder() .setSigningKey(Keys.hmacShaKeyFor(approovSecret())) .build() @@ -308,7 +309,6 @@ private String extractBindingValue(String path, HttpServletRequest request) { if ("/token-binding".equals(path)) { return trimOrNull(request.getHeader(AUTH_HEADER)); } - String authorization = trimOrNull(request.getHeader(AUTH_HEADER)); String digest = trimOrNull(request.getHeader(DIGEST_HEADER)); if (!hasText(authorization) || !hasText(digest)) { @@ -322,12 +322,11 @@ private boolean isBindingValid(String bindingValue, Claims claims) { if (!hasText(expected)) { return false; } - - String computed = hashBase64(bindingValue); + String computed = hashBase64Url(bindingValue); return expected.trim().equals(computed); } - private String hashBase64(String value) { + private String hashBase64Url(String value) { try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(value.getBytes(StandardCharsets.UTF_8)); @@ -355,9 +354,5 @@ private void validateExpiration(Claims claims) { private String trimOrNull(String value) { return value == null ? null : value.trim(); } - - private boolean hasText(String value) { - return value != null && !value.trim().isEmpty(); - } } -} +} \ No newline at end of file From a097fe19ad5a2b37dc2818b2235e6063badbbe4b Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Wed, 7 Jan 2026 09:26:55 +0000 Subject: [PATCH 16/22] Docker added --- .env.example | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index e519a1f..cc9c5d1 100644 --- a/.env.example +++ b/.env.example @@ -7,5 +7,5 @@ APPROOV_BASE64URL_SECRET=approov_base64url_secret_here # Localhost SERVER_HOSTNAME=0.0.0.0 -# Command that starts your server inside the container (e.g., npm run dev, gunicorn app:app, go run main.go). -APP_START_CMD="<>" +# Command that starts your server inside the container +APP_START_CMD=/app/gradlew bootRun --args="--server.port=${HTTP_PORT} --server.address=${SERVER_HOSTNAME}" From 5cadd54a706eac0333147ca1a1d3b1175cee18f9 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Wed, 7 Jan 2026 12:28:04 +0000 Subject: [PATCH 17/22] Approov Java Spring --- Dockerfile | 2 +- README.md | 8 +- build.gradle | 5 +- ex-test.sh | 641 ------------------ gradle.properties | 3 + gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 1 - gradlew.bat | 1 - settings.gradle | 1 + .../java/io/approov/ApproovApplication.java | 54 +- 10 files changed, 37 insertions(+), 681 deletions(-) delete mode 100644 ex-test.sh create mode 100644 gradle.properties diff --git a/Dockerfile b/Dockerfile index efa82f8..3e1a537 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # Builds the quickstart backend container image and configures scripts/install-prerequisites.sh and scripts/build.sh # as the entrypoint used both locally and when deployed via Docker. -FROM eclipse-temurin:17-jdk +FROM eclipse-temurin:21-jdk ENV APP_HOME=/workspace \ RUN_MODE=container diff --git a/README.md b/README.md index b3d2c13..666e044 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This project provides a server-side example of Approov token verification for a - `/token-binding` - requires a valid Approov token which is bound to a header value. - `/token-double-binding` - requires a valid Approov token which is bound to two header values. -In this example, Approov protection is implemented by the ApproovFilter inside [ApproovApplication.java](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L228-L285), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the same file [SecurityConfig.configure(HttpSecurity)](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L198-L223). +In this example, Approov protection is implemented by the [ApproovTokenVerifier](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L225-L353), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the [SecurityConfig](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L188-L219). ## Approov Token Verification Flow @@ -228,9 +228,9 @@ curl -X GET http://localhost:8080/approov-state # check current state **Environments where the quickstart was tested:** ```text -* Runtime: Java 17 (JVM 17.0.14) -* Framework: Spring Boot 2.7.18 -* Build Tool: Gradle 7.6.6 +* Runtime: Java 21 (JVM 21.0.9) +* Framework: Spring Boot 3.2.5 +* Build Tool: Gradle 8.7 ``` If you encounter any problems while following this guide, or have any other concerns, please let us know by opening an issue [here](https://github.com/approov/quickstart-java-spring-token-check/issues) and we will be happy to assist you. diff --git a/build.gradle b/build.gradle index 33922d5..379ddd7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'org.springframework.boot' version '2.7.18' + id 'org.springframework.boot' version '3.2.5' id 'java' } @@ -10,7 +10,7 @@ version = '0.0.1-SNAPSHOT' java { toolchain { - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) } } @@ -24,7 +24,6 @@ dependencies { implementation 'io.jsonwebtoken:jjwt-api:0.11.2' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2' runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2' - // runtimeOnly 'org.bouncycastle:bcprov-jdk15on:1.60' // only if you need RSASSA-PSS compileOnly 'org.jetbrains:annotations:17.0.0' runtimeOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/ex-test.sh b/ex-test.sh deleted file mode 100644 index 960608a..0000000 --- a/ex-test.sh +++ /dev/null @@ -1,641 +0,0 @@ -#!/bin/bash -set -o errexit -set -o nounset -set -o pipefail - -####################################### -# Approov demo API test harness. -# -# Description: -# Calls unprotected and protected endpoints of the Approov demo API, -# validates HTTP status codes and logs complete HTTP exchanges -# (request + response) to a timestamped log file. -# -# Dependencies: -# - bash -# - curl -# - approov CLI available on PATH and configured -# -# Environment: -# BASE_URL: -# Base URL of the API under test. -# Default: http://localhost:8080 -# -# TOKDIR: -# Directory where temporary token files are stored. -# Default: .config -# -# Tests: -# 0 - Unprotected request (no Approov protection): Access unprotected endpoint. -# 1.1 - Token check (valid token): Valid Approov token. -# 1.2 - Token check (invalid token): Invalid Approov token. -# 2.1 - Single binding (valid token + header): Valid token and correct Authorization header. -# 2.2 - Single binding (missing Authorization header): Valid token, missing Authorization. -# 2.3 - Single binding (incorrect Authorization header): Valid token, wrong Authorization. -# 2.4 - Single binding (invalid token): Invalid token, correct Authorization. -# 3.1 - Double binding (valid token + headers): Valid token, both binding headers. -# 3.2 - Double binding (missing binding headers): Valid token, missing both headers. -# 3.3 - Double binding (incorrect binding headers): Valid token, wrong headers. -# 3.4 - Double binding (invalid token): Invalid token, correct headers. -# 4.1 - token-check (no Approov header): Protected endpoint, no Approov header. -# 4.1 - token-binding (no Approov header): Protected endpoint, no Approov header. -# 4.1 - token-double-binding (no Approov header): Protected endpoint, no Approov header. -# 4.2 - unprotected (valid token only): Unprotected endpoint, valid token only. -# 4.2 - token-check (valid token only): Protected endpoint, valid token only. -# 4.2 - token-binding (valid token only): Protected endpoint, valid token only. -# 4.2 - token-double-binding (valid token only): Protected endpoint, valid token only. -# 4.3 - token-binding (valid token + Authorization): Valid single-binding token and Authorization. -# 4.3 - unprotected (valid token + Authorization): Unprotected endpoint, valid token and Authorization. -# 4.3 - token-check (valid token + Authorization): Protected endpoint, valid token and Authorization. -# 4.3 - token-double-binding (valid token + Authorization): Double-binding endpoint, valid token and Authorization. -# 4.4 - token-double-binding (valid token + two bindings): Double-binding endpoint, valid token and both headers. -# 4.4 - unprotected (valid token + two bindings): Unprotected endpoint, valid token and both headers. -# 4.4 - token-check (valid token + two bindings): Protected endpoint, valid token and both headers. -# 4.4 - token-binding (valid token + two bindings): Single-binding endpoint, valid token and both headers. -# 5.1 - Bad token (bad signature): Token with bad signature. -# 5.2 - Bad token (invalid encoding): Token with invalid encoding. -# 5.3 - Bad token (no expiry): Token with no expiry. -# 5.4 - Bad token (no expiry simulated): Simulated token with no expiry. -# 5.5 - Bad token (expired): Explicitly expired token. -# 5.6 - Missing binding with good full token: Double-binding endpoint, valid token and both headers, but token not bound. -# 5.7 - Missing Authorization with valid binding token: Double-binding endpoint, valid token and Content-Digest only. -# 5.8 - Good full token with correct binding: Double-binding endpoint, valid token and correct headers. -# 5.9 - Correct token but wrong binding headers: Double-binding endpoint, valid token and wrong headers. -####################################### - -# Constants -readonly BASE_URL="${BASE_URL:-http://localhost:8080}" -readonly TOKDIR="${TOKDIR:-.config}" -readonly LOGDIR="${TOKDIR}/logs" -readonly LOGFILE="${LOGDIR}/$(date '+%Y-%m-%d_%H-%M-%S').log" - -# Globals -# is_approov_disabled: -# Boolean flag indicating if Approov checks appear disabled -# based on /approov-state endpoint. -is_approov_disabled=false -success_code=200 -failure_code=401 - -# state_http_code: -# HTTP status code from /approov-state endpoint. -state_http_code='' - -####################################### -# Print error message to STDERR with timestamp. -# Globals: -# None -# Arguments: -# All arguments are printed as the error message. -# Outputs: -# Writes formatted error message to STDERR. -# Returns: -# 0 -####################################### -err() { - echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2 -} - -####################################### -# Ensure a required command exists on PATH. -# Globals: -# None -# Arguments: -# command name to check. -# Outputs: -# Error message to STDERR if command is missing. -# Returns: -# Exits the script with code 1 if the command is missing. -####################################### -requirement_check() { - local cmd="$1" - - if ! command -v "${cmd}" >/dev/null 2>&1; then - err "Missing required command: ${cmd}" - exit 1 - fi -} - -####################################### -# Generate an Approov token into an output file. -# Globals: -# None -# Arguments: -# output file path. -# arguments passed to "approov token". -# Outputs: -# Captures stdout+stderr from "approov token", takes the last non-empty -# line as the token, and writes only that line to the output file. -# Returns: -# 0 on success. -# 1 on failure (CLI error or no token produced). -####################################### -gen_token() { - local outfile="$1" - shift - - set +o errexit - local cli_output - cli_output="$(approov token "$@" 2>&1)" - local rc=$? - set -o errexit - - if ((rc != 0)); then - err "Approov CLI failed: approov token $*" - printf '%s\n' "${cli_output}" >&2 - return 1 - fi - - # Prints notices before the token, grab the last non-empty line. - local token - token="$(printf '%s\n' "${cli_output}" | awk 'NF{last=$0} END{print last}')" - if [[ -z "${token}" ]]; then - err "Approov CLI produced no token output" - return 1 - fi - - printf '%s\n' "${token}" >"${outfile}" -} - -####################################### -# Print test result and append full HTTP exchange to a log file. -# Globals: -# LOGFILE -# is_approov_disabled -# Arguments: -# $1 - test name. -# $2 - expected HTTP status code. -# $3 - actual HTTP status code. -# $4 - full HTTP response (headers + body). -# Outputs: -# Human-readable result to STDOUT. -# Detailed log entry appended to LOGFILE. -# Returns: -# 0 -####################################### -print_test_result() { - local name="$1" - local expected="$2" - local status="$3" - local resp="$4" - - local result="Failed" - if [[ "${status}" == "${expected}" ]]; then - result="Passed" - fi - - echo "${name}: ${result} (status: ${status}, expected: ${expected})" - - { - echo "Test: ${name}" - echo "Expected status: ${expected}" - echo "Actual status: ${status}" - if [[ "${is_approov_disabled}" == "false" ]]; then - echo "Approov State: enabled, token checks performed." - else - echo "Approov State: disabled, no checks performed." - fi - echo - echo "HTTP exchange:" - echo "${resp}" - echo - } >>"${LOGFILE}" 2>&1 -} - -####################################### -# Execute a curl call for a test and evaluate the result. -# Globals: -# None -# Notes: -# Uses print_test_result, which logs to LOGFILE and reads -# is_approov_disabled. -# Arguments: -# test name. -# expected HTTP status code. -# arguments passed to curl. -# Outputs: -# Short result to STDOUT, full HTTP exchange appended to LOGFILE. -# Returns: -# 0 on success, curl's exit code on failure. -####################################### -run_test() { - # shift after each grab so $1 advances (name -> expected -> rest) - local name="$1"; shift - local expected="$1"; shift - - local resp - local status - local curl_rc - - # -i: include headers, -s: silent - set +o errexit - resp="$(curl -i -s "$@")" - curl_rc=$? - set -o errexit - - if ((curl_rc != 0)); then - err "curl failed for ${name} (rc=${curl_rc})" - return "${curl_rc}" - fi - - status="$( - printf '%s\n' "${resp}" | - grep -m1 '^HTTP/' | - awk '{print $2}' - )" - - print_test_result "${name}" "${expected}" "${status}" "${resp}" -} - -main() { - requirement_check "approov" - requirement_check "curl" - - mkdir -p "${TOKDIR}" "${LOGDIR}" - - echo "Listing Approov API configuration:" - approov api -list - echo - - echo "Approov state check:" - local state_response - state_response="$(curl -i -s "${BASE_URL}/approov-state")" - state_http_code="$( - printf '%s\n' "${state_response}" | - grep -m1 '^HTTP/' | - awk '{print $2}' - )" - - if [[ "${state_http_code}" != "200" || -z "${state_http_code}" ]]; then - err "Failed to get Approov state from ${BASE_URL}/approov-state (status=${state_http_code:-unknown})" - exit 1 - fi - - if grep -q '"approovEnabled":true' <<<"${state_response}"; then - echo " Approov service: ENABLED" - is_approov_disabled=false - else - echo " Approov service: DISABLED" - is_approov_disabled=true - failure_code=200 - fi - echo - - # 0) Unprotected endpoint. - run_test \ - "0 - Unprotected request - no approov protection" \ - "${success_code}" \ - "${BASE_URL}/unprotected" - - # 1) Token check. - gen_token \ - "${TOKDIR}/approov_token_valid" \ - -genExample \ - example.com - - # 1.1) Valid Token. - run_test \ - "1.1 - Token check - valid token" \ - "${success_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ - "${BASE_URL}/token-check" - - # 1.2) Invalid Token. - gen_token \ - "${TOKDIR}/approov_token_invalid" \ - -genExample \ - example.com \ - -type invalid || true - - run_test \ - "1.2 - Token check - invalid token" \ - "${failure_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_invalid")" \ - "${BASE_URL}/token-check" - - # 2) Token Binding ["Authorization"]. - local AUTH_VAL="ExampleAuthToken==" - export HASH_INPUT="${AUTH_VAL}" - - gen_token \ - "${TOKDIR}/approov_token_bind_auth_valid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com - - # 2.1) Valid Token. - run_test \ - "2.1 - Single Binding - valid token and header" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ - "${BASE_URL}/token-binding" - - # 2.2) Missing Header. - run_test \ - "2.2 - Single Binding - missing Authorization header" \ - "${failure_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ - "${BASE_URL}/token-binding" - - # 2.3) Incorrect Header. - run_test \ - "2.3 - Single Binding - incorrect Authorization header" \ - "${failure_code}" \ - -H "Authorization: BadAuthToken==" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ - "${BASE_URL}/token-binding" - - # 2.4) Invalid Token. - gen_token \ - "${TOKDIR}/approov_token_bind_auth_invalid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com \ - -type invalid || true - - run_test \ - "2.4 - Single Binding - invalid token" \ - "${failure_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_invalid")" \ - "${BASE_URL}/token-binding" - - # 3) Token Binding ["Authorization", "Content-Digest"]. - local AUTH_VAL2="ExampleAuthToken==" - local CD_VAL="ContentDigest==" - export HASH_INPUT="${AUTH_VAL2}${CD_VAL}" - - gen_token \ - "${TOKDIR}/approov_token_bind_auth_cd_valid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com - - # 3.1) Valid. - run_test \ - "3.1 - Double Binding - valid token and headers" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.2) Missing headers. - run_test \ - "3.2 - Double Binding - missing binding headers" \ - "${failure_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.3) Incorrect headers. - run_test \ - "3.3 - Double Binding - incorrect binding headers" \ - "${failure_code}" \ - -H "Authorization: BadAuthToken==" \ - -H "Content-Digest: BadContentDigest==" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-double-binding" - - # 3.4) Invalid token. - gen_token \ - "${TOKDIR}/approov_token_bind_auth_cd_invalid" \ - -setDataHashInToken "${HASH_INPUT}" \ - -genExample \ - example.com \ - -type invalid || true - - run_test \ - "3.4 - Double Binding - invalid token" \ - "${failure_code}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_invalid")" \ - "${BASE_URL}/token-double-binding" - - # 4) Extreme tests: headers and tokens presence/absence. - - # 4.1) Protected endpoints without any Approov header. - run_test \ - "4.1 - token-check (no Approov header)" \ - "${failure_code}" \ - "${BASE_URL}/token-check" - - run_test \ - "4.1 - token-binding (no Approov header)" \ - "${failure_code}" \ - "${BASE_URL}/token-binding" - - run_test \ - "4.1 - token-double-binding (no Approov header)" \ - "${failure_code}" \ - "${BASE_URL}/token-double-binding" - - # 4.2) Valid token only (no binding headers). - if [[ -f "${TOKDIR}/approov_token_valid" ]]; then - run_test \ - "4.2 - unprotected (valid token only)" \ - "${success_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ - "${BASE_URL}/unprotected" - - run_test \ - "4.2 - token-check (valid token only)" \ - "${success_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ - "${BASE_URL}/token-check" - - run_test \ - "4.2 - token-binding (valid token only)" \ - "${failure_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ - "${BASE_URL}/token-binding" - - run_test \ - "4.2 - token-double-binding (valid token only)" \ - "${failure_code}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ - "${BASE_URL}/token-double-binding" - fi - - # 4.3) Valid single-binding token + Authorization header. - if [[ -f "${TOKDIR}/approov_token_bind_auth_valid" ]]; then - run_test \ - "4.3 - token-binding (valid token + Authorization)" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ - "${BASE_URL}/token-binding" - - run_test \ - "4.3 - unprotected (valid token + Authorization)" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ - "${BASE_URL}/unprotected" - - run_test \ - "4.3 - token-check (valid token + Authorization)" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ - "${BASE_URL}/token-check" - - run_test \ - "4.3 - token-double-binding (valid token + Authorization)" \ - "${failure_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_valid")" \ - "${BASE_URL}/token-double-binding" - fi - - # 4.4) Valid double-binding token + two binding headers. - if [[ -f "${TOKDIR}/approov_token_bind_auth_cd_valid" ]]; then - run_test \ - "4.4 - token-double-binding (valid token + two bindings)" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-double-binding" - - run_test \ - "4.4 - unprotected (valid token + two bindings)" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/unprotected" - - run_test \ - "4.4 - token-check (valid token + two bindings)" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-check" - - run_test \ - "4.4 - token-binding (valid token + two bindings)" \ - "${failure_code}" \ - -H "Authorization: ${AUTH_VAL2}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-binding" - fi - - # 5) Extreme tests: bad tokens and binding mismatches. - - # 5.1) Bad token with bad signature (modified third segment). - if [[ -f "${TOKDIR}/approov_token_valid" ]]; then - local good_tok - local bad_sig_tok - - good_tok="$(<"${TOKDIR}/approov_token_valid")" - bad_sig_tok="$( - awk -F. \ - '{printf "%s.%s.%s", $1, $2, "bogussignature"}' \ - <<<"${good_tok}" - )" - - run_test \ - "5.1 - Bad token (bad signature)" \ - "${failure_code}" \ - -H "approov-token: ${bad_sig_tok}" \ - "${BASE_URL}/token-check" - fi - - # 5.2) Bad token with invalid encoding. - local bad_token_invalid_encoding - bad_token_invalid_encoding="eyJ0eXAiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIn0.""\ -eyJleHAiOjE5OTk5OTk5OTksImRpZCI6IkV4YW1wbGVBcHByb292VG9rZW5ESUQ9PSJ9.""\ -NwqfsaOUBfXaf8KxRZovYCy0c6hqy29g88z1LIgzuQY" - - run_test \ - "5.2 - Bad token (invalid encoding)" \ - "${failure_code}" \ - -H "approov-token: ${bad_token_invalid_encoding}" \ - "${BASE_URL}/token-check" - - # 5.3) / 5.4) Bad token with no expiry (real or simulated). - local exp_noexp - exp_noexp="${failure_code}" - - if [[ -n "${BAD_TOKEN_NO_EXPIRY:-}" ]]; then - run_test \ - "5.3 - Bad token (no expiry)" \ - "${exp_noexp}" \ - -H "approov-token: ${BAD_TOKEN_NO_EXPIRY}" \ - "${BASE_URL}/token-check" - elif [[ -f "${TOKDIR}/approov_token_valid" ]]; then - local hdr_payload - local noexp_tok - - hdr_payload="$(cut -d. -f1-2 <"${TOKDIR}/approov_token_valid")" - noexp_tok="${hdr_payload}.nosig" - - run_test \ - "5.4 - Bad token (no expiry simulated)" \ - "${exp_noexp}" \ - -H "approov-token: ${noexp_tok}" \ - "${BASE_URL}/token-check" - fi - - # 5.5) Explicit expired token. - local bad_token_expired - bad_token_expired="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.""\ -eyJhdWQiOiIiLCJleHAiOjE3NjIzNTg3OTcsImlwIjoiMS4yLjMuNCIsImRpZCI6IkV4YW1w""\ -bGVBcHByb292VG9rZW5ESUQ9PSJ9.vQZqzUAOkjdqDRWMjUYQFwkwFd9sRn1UjXyZCIymNcE" - - run_test \ - "5.5 - Bad token (expired)" \ - "${failure_code}" \ - -H "approov-token: ${bad_token_expired}" \ - "${BASE_URL}/token-check" - - # 5.6) Missing binding but valid full token for double-binding endpoint. - if [[ -f "${TOKDIR}/approov_token_valid" ]]; then - run_test \ - "5.6 - Missing binding with good full token" \ - "${failure_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_valid")" \ - "${BASE_URL}/token-double-binding" - fi - - # 5.7) / 5.8) / 5.9) Various binding issues with double-binding token. - if [[ -f "${TOKDIR}/approov_token_bind_auth_cd_valid" ]]; then - # 5.7) Missing Authorization with valid binding token. - run_test \ - "5.7 - Missing Authorization with valid binding token" \ - "${failure_code}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-double-binding" - - # 5.8) Good full token with binding. - run_test \ - "5.8 - Good full token with correct binding" \ - "${success_code}" \ - -H "Authorization: ${AUTH_VAL}" \ - -H "Content-Digest: ${CD_VAL}" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-double-binding" - - # 5.9) Correctly signed token but wrong binding headers. - run_test \ - "5.9 - Correct token but wrong binding headers" \ - "${failure_code}" \ - -H "Authorization: WrongAuth==" \ - -H "Content-Digest: WrongDigest==" \ - -H "approov-token: $(<"${TOKDIR}/approov_token_bind_auth_cd_valid")" \ - "${BASE_URL}/token-double-binding" - fi - - echo - echo "Full request and response details are saved in:" - echo " ${LOGFILE}" -} - -main "$@" diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..29008c5 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.welcome=never +org.gradle.daemon=false +org.gradle.logging.level=quiet \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b371555..20db9ad 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 65dcd68..9cce075 100755 --- a/gradlew +++ b/gradlew @@ -63,7 +63,6 @@ ############################################################################## # Attempt to set APP_HOME - # Resolve links: $0 may be a link app_path=$0 diff --git a/gradlew.bat b/gradlew.bat index 6689b85..48ce07d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,7 +70,6 @@ goto fail set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* diff --git a/settings.gradle b/settings.gradle index 67a9126..bc6fa23 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,4 +3,5 @@ pluginManagement { gradlePluginPortal() } } + rootProject.name = 'approov-jwt' diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index a9dbcef..86b0b87 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -12,10 +12,10 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jws; import io.jsonwebtoken.JwtException; @@ -34,7 +34,7 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; @@ -185,7 +185,7 @@ private Map infoPayload(String details) { @Configuration @EnableWebSecurity - static class SecurityConfig extends WebSecurityConfigurerAdapter { + static class SecurityConfig { private final AuthenticationEntryPoint authEntryPoint = new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED); @@ -194,31 +194,27 @@ public UserDetailsService userDetailsService() { return new InMemoryUserDetailsManager(); } - @Override - protected void configure(HttpSecurity http) throws Exception { - http.csrf().disable() - .sessionManagement() - .sessionCreationPolicy(SessionCreationPolicy.STATELESS) - .and() - .authorizeRequests() - .antMatchers( - "/", - "/unprotected", - "/approov-state", - "/approov/enable", - "/approov/disable", - "/token-binding/enable", - "/token-binding/disable") - .permitAll() - .anyRequest() - .authenticated() - .and() - .exceptionHandling() - .authenticationEntryPoint(authEntryPoint) - .and() + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http.csrf(csrf -> csrf.disable()) + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .authorizeHttpRequests(auth -> auth + .requestMatchers( + "/", + "/unprotected", + "/approov-state", + "/approov/enable", + "/approov/disable", + "/token-binding/enable", + "/token-binding/disable") + .permitAll() + .anyRequest() + .authenticated()) + .exceptionHandling(exceptions -> exceptions.authenticationEntryPoint(authEntryPoint)) .addFilterBefore( new ApproovTokenVerifier(authEntryPoint), UsernamePasswordAuthenticationFilter.class); + return http.build(); } } @@ -355,4 +351,4 @@ private String trimOrNull(String value) { return value == null ? null : value.trim(); } } -} \ No newline at end of file +} From 1351550402a30cdfb66914b769135558ea95d74b Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Wed, 7 Jan 2026 16:26:33 +0000 Subject: [PATCH 18/22] Approov Java Spring --- build.gradle | 10 +++------- src/main/java/io/approov/ApproovApplication.java | 12 ++++++------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index 379ddd7..d3b780b 100644 --- a/build.gradle +++ b/build.gradle @@ -21,11 +21,7 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'io.jsonwebtoken:jjwt-api:0.11.2' - runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2' - runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.2' - compileOnly 'org.jetbrains:annotations:17.0.0' - runtimeOnly 'org.springframework.boot:spring-boot-devtools' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.security:spring-security-test' + implementation 'io.jsonwebtoken:jjwt-api:0.13.0' + runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.13.0' + runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.13.0' } diff --git a/src/main/java/io/approov/ApproovApplication.java b/src/main/java/io/approov/ApproovApplication.java index 86b0b87..5cd2783 100644 --- a/src/main/java/io/approov/ApproovApplication.java +++ b/src/main/java/io/approov/ApproovApplication.java @@ -97,7 +97,7 @@ private static byte[] loadApproovSecret() { LOGGER.error("APPROOV_BASE64URL_SECRET environment variable is not set"); throw new IllegalStateException("APPROOV_BASE64URL_SECRET environment variable is not set"); } - return Base64.getUrlDecoder().decode(secret.trim()); + return Base64.getUrlDecoder().decode(secret.trim()); } @RestController @@ -289,12 +289,12 @@ private void unauthorized( } private Claims verifyApproovToken(String token) { - Jws claims = Jwts.parserBuilder() - .setSigningKey(Keys.hmacShaKeyFor(approovSecret())) + Jws claims = Jwts.parser() + .verifyWith(Keys.hmacShaKeyFor(approovSecret())) .build() - .parseClaimsJws(token); - validateExpiration(claims.getBody()); - return claims.getBody(); + .parseSignedClaims(token); + validateExpiration(claims.getPayload()); + return claims.getPayload(); } private boolean needsBindingCheck(String path) { From f3971cb7bc3f169d77bc646a2204243db4daa620 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Wed, 7 Jan 2026 16:51:28 +0000 Subject: [PATCH 19/22] Approov Java Spring --- README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 666e044..aa1d411 100644 --- a/README.md +++ b/README.md @@ -63,13 +63,9 @@ bash run-server.sh ``` This script: -- Builds and starts containers – runs `docker compose -f compose.yaml up -d --build app` to build the image and launch the application in the background. -- Runs test.sh – which executes all endpoint tests - - `/unprotected` - no security headers required. - - `/token-check` - requires the `Approov-Token` header. - - `/token-binding` - requires `Approov-Token` and `Authorization` headers. - - `/token-double-binding` - requires `Approov-Token`, `Authorization`, and `Content-Digest` headers. -- Displays results and stops containers when finished. +- Builds and starts the container via `scripts/build.sh` (`docker build` + `docker run`) and waits for `/approov-state` to be ready. + +*Once finished, press `Ctrl+C` to stop log tailing; the container keeps running unless you stop it. Use `docker ps` to find the container name and `docker stop ` to stop it.* ### Automated and Manual Testing From 18e9c6da5e029ac9a55f9021e37c69d76a338e48 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Wed, 7 Jan 2026 16:56:08 +0000 Subject: [PATCH 20/22] Approov Java Spring --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aa1d411..4739e1b 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ This script: ### Automated and Manual Testing -*When the server is running, validate the endpoints via the automated bash script or by running the manual checks below* +*When the server is running (in a different terminal), validate the endpoints via the automated bash script or by running the manual checks below* ```bash bash test.sh From c9cff287dac5bb2076afc202a2047c012f063e11 Mon Sep 17 00:00:00 2001 From: kmilejMAC Date: Thu, 15 Jan 2026 09:49:02 +0000 Subject: [PATCH 21/22] README update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4739e1b..e0bc16b 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This project provides a server-side example of Approov token verification for a - `/token-binding` - requires a valid Approov token which is bound to a header value. - `/token-double-binding` - requires a valid Approov token which is bound to two header values. -In this example, Approov protection is implemented by the [ApproovTokenVerifier](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L225-L353), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the [SecurityConfig](https://github.com/KMilej/quickstart-java-spring/blob/main/src/main/java/io/approov/ApproovApplication.java#L188-L219). +In this example, Approov protection is implemented by the [ApproovTokenVerifier](https://github.com/approov/quickstart-java-spring-token-check/blob/refactor/spring-quickstart/src/main/java/io/approov/ApproovApplication.java#L225-L353), which validates the Approov token (signature + expiry) and enforces token binding where required. The filter is wired into Spring Security in the [SecurityConfig](https://github.com/approov/quickstart-java-spring-token-check/blob/refactor/spring-quickstart/src/main/java/io/approov/ApproovApplication.java#L188-L219). ## Approov Token Verification Flow From d85f8deec51334d604b224d3c6f1361d1da9ea9e Mon Sep 17 00:00:00 2001 From: KMilej Date: Mon, 19 Jan 2026 11:41:00 +0000 Subject: [PATCH 22/22] dockerfile update --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3e1a537..eb9d106 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,5 @@ WORKDIR /app COPY . . -RUN bash scripts/install-prerequisites.sh - # Provide APP_START_CMD via --env-file. CMD ["bash", "scripts/build.sh"]

    \n" + - " To learn more about how Approov protects your APIs from malicious bots and tampered or fake apps, see https://approov.io/docs.\n" + - "