JWT - JsonWebToken ručne
Návod ako pracovať ručne s JavaWebToken-om ktorý sa používá u Bearer typu autorizácie pri HTTP protokole.
Popis
Kód kde sa podpisovanie/kontrola robí ručne kde sa dá pochopiť jak to funguje.
Skript
#!/bin/bash
#subor ktory obsahuje tvoj JWT
file="payload.txt"
echo "########### "Vloz JWT podpisany Googlom:
read content
echo
echo $content > $file
echo
#funkcia na upravu base64, standartne sa zaokruhluje, u JWT nie
decode_base64_url() {
local len=$((${#1} % 4))
local result="$1"
if [ $len -eq 2 ]; then result="$1"'=='
elif [ $len -eq 3 ]; then result="$1"'='
fi
echo "$result" | tr '_-' '/+' | openssl enc -d -base64
}
#vytiahni casti z JWT
cat $file | cut -d'.' -f1 >payload1.raw
cat $file | cut -d'.' -f2 >payload2.raw
cat $file | cut -d'.' -f3 >payload3.raw
#priprav a zobraz casti ktore su podpisane
echo "########### Podpisane data:"
decode_base64_url $( cat payload1.raw )
echo -n "."
decode_base64_url $( cat payload2.raw )
echo -n $(cat payload1.raw)"."$(cat payload2.raw) > payload12.raw
#priprav podpis
decode_base64_url $( cat $file | cut -d'.' -f3 ) >payload3.txt
echo
echo
#prejdi cez vsetky verejne kluce a najdi ktory funguje
for F in $( ls "/tmp/google_ca_history/" | grep -v google )
do
echo "#########"
echo Kontrola podpisu pomocou: /tmp/refresh_cert/"$F"
openssl dgst -sha256 -verify "/tmp/google_ca_history/"$F -signature payload3.txt payload12.raw
echo
done
Zdroje
https://medium.com/@bn121rajesh/rsa-sign-and-verify-using-openssl-behind-the-scene-bf3cac0aade2https://stackoverflow.com/questions/59002949/how-to-create-a-json-web-token-jwt-using-openssl-shell-commands
https://techdocs.akamai.com/iot-token-access-control/docs/generate-jwt-rsa-keys
Príspevok pridaný dňa: 25.07.2023 od užívatela: Dodoslav.