Skip to content

Instantly share code, notes, and snippets.

@pauldougan
Last active February 15, 2024 15:58
Show Gist options
  • Save pauldougan/9026f6b522859a087ad3b3c0dd306770 to your computer and use it in GitHub Desktop.
Save pauldougan/9026f6b522859a087ad3b3c0dd306770 to your computer and use it in GitHub Desktop.
generate client ID
import java.security.SecureRandom;
import java.util.Base64.Encoder;
int ENTROPY_BYTES = 20;
SecureRandom RANDOM = new SecureRandom();
Base64.Encoder ENCODER = Base64.getUrlEncoder().withoutPadding();
byte[] buffer = new byte[ENTROPY_BYTES];
RANDOM.nextBytes(buffer)
System.out.println(ENCODER.encodeToString(buffer))

Generate an OIDC client ID for GOV.UK One Login

A freestanding jshell script to generate a client ID based on https://github.com/govuk-one-login/authentication-api/blob/main/shared/src/main/java/uk/gov/di/authentication/shared/helpers/IdGenerator.java

Simplified as a small jshell snippet to avoid dependencies and the need to download jar files. Its a couple of standard method calls to java.security.SecureRandom and java.util.Base64.Encoder.

Install prerequisites

  • Java development kit and jshell - brew install temurin11

Usage

Generate a one off client ID

cat clientID.jsh | jshell -

Output

b2bFMdpamRByQdGxGib4F5DLQkQ

Generate 10 client IDs

for i in {0..10}
do
  cat clientID.jsh | jshell -
done

Output

ooH/ZpPF2zus0iCOEFsVcXFYfDo
Xb4S4XsLyMl4t6t23Bciti+WbZ8
agKTj0sffIFn0Jrt/aJWWNVwfek
2GHyVu7D79/gPk+vWzbrXeS0PsM
FsAz4+wz6IUekBrJZ3JM5Luul54
F8gKvcePa7jyXvBblLvf1xzsEQA
HwFg4xSZHiZZwchulDXgXSGPgNo
p2Cpbroeij8yJTyDUlz5P3bdH/o
xFPalHv0iWzPDdwJarRnu+QkE5M
76qmV48zbYfSwVaZwkxPjqLQgec
/h4XTlTKotRnxeIe6QIXxros4gM

Generate a csv of client IDs

(echo clientID
for i in {0..10}
do
  cat clientID.jsh | jshell -
done ) >> clientIDs.csv

Output

cat clientIDs.csv
clientID
W1wiuuAz47tz9soWxoogPGBgguc
ByXJhugDkfsejG44EatC8/07Xyc
QhuHXTpJoq36EPZidU1eWYnuyH0
lqrxmbjCqJz/QJ4nwdGw1V0FHbQ
T7qSQR2kvybSIrhXjxWSECB2gog
16H/qF+h1Ay8xSDGAcZTIN7rV4Q
XLEpH+oeeFOw3b+HonNHv6SYCxs
3dTI4Ayb2A7ohN0U2ytlXX5O2lw
NaPNGXHu01yEvDjGX+tdnGygty8
tqBBSjfBPr58rXpuzCZgPFJntxc
Brcr4pGiqz8CvzLXxREyt8yFPrY

Shell alias

alias clientid='curl -s https://gist.githubusercontent.com/pauldougan/9026f6b522859a087ad3b3c0dd306770/raw/15f3314067ba4e8ec1fe023acd9c1170e86b6bf5/clientID.jsh |  jshell -'
clientid
Z3qydJ8j9iMwbOcu1n+fq4k9iEU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment