To run the stub locally, you can simply run docker compose up --build
.
If you would like to run it alongside an RP running locally in Docker, you'll need to turn on Docker host networking.
This requires v4.34 or higher of Docker Desktop. In Docker Desktop, go into Settings -> Resources -> Network, and tick
Enable host networking
. In your docker compose file for the RP, add network_mode: host
under the service that you're running.
Please ensure you are using the correct node version locally (Found in Dockerfile)
To build the app
npm install && npm run build
To start the app
npm run build && npm run start
To check:
npm run check; # Check all
npm run check:pretty; # Check prettier
npm run check:lint; # Check linting
To fix formatting/linting:
npm run fix; # Fix all
npm run fix:pretty; # Fix prettier
npm run fix:lint; # Fix linting
To setup pre-commit hook
npm run prepare
To run tests run
npm run test
Client configuration and configuration for the response can be set as environment variables, however there are also default values set. Parameters that are parsed as an array should be set as a comma separated string, for example
CLIENT_LOCS=P0,P2
The parameters to be set can be found in src/config.ts
. The private key for the default public key is:
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCZddHcSxG9QxWE
Qky1DXB7EmN9DTRDQxDsBF9KE3ncGc5AQ8WdL8jye0F12Qp0Ter68xMjvbDoW/dK
wwz5yJHYsgd0RB8qCwu3o8Y1xXWQboYb/edJbemxbzDrlDd+bLzU/Xvjyp7MOtV9
oasXg8NcAvNfWmH6fPyakqZyTppjosRQngH5Mh9jOUqabAV7euLSylJb4nnAT2aZ
PdWRHbJK4dFgdCXGUX119fuW05OxuAkXM3pM7TVlAOFjSIvDN0bCFLE7pHo39kg1
gcIoU9pAP610qyvDtAMhifHQiJcWeQaeLOXdS2pKZcBpx5O88zY/PzjHYmLAeunZ
KaXpFgsJAgMBAAECggEAGtEkgb8ak/zPm0OsvOzizZb6jMVMbz6ei+f9sOezYVuf
F8rgEyZhEsKoP0xUz9s352+n1hSVgB1mGwn30ASVPA1sUQyAd6vjec1kW0wszbcK
t4SIsOPEtU2NenV1tyGQZBYB2t4zHtRfL2ubhunvLzqSxgR437mMuQRMkugagbOQ
CRPhwslZECcZvmOh5HURkbE0L5F1uXckc+tf0hktgiI4LB+Eej9e4TkhHnv6B9pe
yejfk/O+48O3sZ2emYgY6TSqcgwutj6UipROknyAorWUQ8vTaSewm6HO++cRH5a/
D0JPoLX7uM8JcosIIiLE1p6qihjhPRe65Rvb7tSMOwKBgQDQBMHkETsQlb26vGhm
9Fc29GQJFe0yTZVD/94U98hpfbOu22E3TslXzpsNoCR61zgZdM7dWQINi3AvonFS
QJlDEYGNX0zYOqT1goI+3tBMpptnNzfgRN72bp748JiUyWLnjcWUNc2gwIEc2yET
wR4Zxz6A7h1iA9+fM/rEE1ULHwKBgQC823VoUO7p13WvdrYrmM93Xc6Cv5nZFLZn
bFjt4xwi096yJ2BTxARFhCBYaDD9vi4yzKjHih/1G53T6aaRbuLaNOSO58jHY1eh
par1Xw+JjKwK7bnFGOY+mGAT9kz/agDQv+ELu6PpgiRW/Awiz9UW5OV0cquQIhRj
60yn25PM1wKBgQCI2YhhLUDJUWnHbunUSY0S90bUf1tTy5yWZr9I1hY/6FWMhID5
bNii7qYtGZzGP86FWMY68rKaDJDalaitrxfk+qBbTEX2vuYFKj3bdKReuQDlr3sQ
DN8OCoqFRWtr/u0VXryMG7VSuzJ1tGeXYmYWGXEySvSDpf648u5XjkxViwKBgQCO
+9COJAhePuQ47jXKGC2q//ikARAnzIi1ENDbeoEI1UPbufgyM0vQndInXOsKkXxE
tbJrMGY1mq0JjfKwVTWnYzhQAah/XPUxy0396/TFfR2cQJPPZ6Saa58CPg3ZqpXn
df6adXwKBKAiwz0k9hks9ivK2C6QN10csT8eLx5djQKBgQCiVnIJ3JcjNXHlygCW
eZG4zLcylZXusOv3VYBJKypBLVI74buoFfrvMcV/lQrI3Yo+6V95rNYGm+2MVxIc
iZSejbyqjUjJBAH9GHkPsiA+w1vutdd2PuPKOV05TLmV5ZM06bmLHQjMCGMiWK0G
8qVxFvr2NWRDB3otAjxVHR/ZQA==
-----END PRIVATE KEY-----
You can setup the simulator to return specific error scenarios for the Core Identity JWT and ID Token issued. Multiple error states can be enabled and these should be passed to the following environment variables as a comma separated string:
AUTHORISE_ERRORS
- These will enable an error response from the/authorize
endpoint and can have the following valid values:
- "ACCESS_DENIED": This error will return an
access_denied
response for all valid requests to the/authorize
endpoint when enabled.
ID_TOKEN_ERRORS
- This enables invalid ID Tokens to be issued by the simulator and has the following valid values:
- "INVALID_ISS"
- "INVALID_AUD"
- "INVALID_ALG_HEADER"
- "INVALID_SIGNATURE"
- "TOKEN_EXPIRED"
- "TOKEN_NOT_VALID_YET"
- "NONCE_NOT_MATCHING"
- "INCORRECT_VOT"
CORE_IDENTITY_ERRORS
- This enables invalid ID Tokens to be issued by the simulator and has the following valid values:
- "INVALID_ALG_HEADER"
- "INVALID_SIGNATURE"
- "INVALID_ISS"
- "INVALID_AUD"
- "INCORRECT_SUB"
- "TOKEN_EXPIRED"
You can also setup these error scenarios using the /config
endpoint by making a POST request with a body similar to the one below:
{
"errorConfiguration":{
"coreIdentityErrors": ["INVALID_ALG_HEADER"],
"idTokenErrors": ["INVALID_ISS"]
}
}
To remove an error configuration, you can either unset the environment variables mentioned above, or you can POST the config endpoint without the errorConfiguration
field in the body.
Note
Anytime you update your configuration using the /config
endpoint you must include the errorConfiguration if you wish to maintain the configured errors