oidc-test-client/app.js

43 lines
1.4 KiB
JavaScript
Raw Normal View History

2023-03-20 19:28:14 +00:00
import express from 'express'
import {Issuer, generators} from 'openid-client'
import bodyParser from 'body-parser'
async function run() {
const app = express();
app.use(bodyParser.urlencoded());
app.use(bodyParser.json())
2023-04-13 19:38:35 +00:00
const issuer = await Issuer.discover(process.env.OIDC_GATEWAY_URI);
2023-03-20 19:28:14 +00:00
console.log('Discovered issuer %s %O', issuer.issuer, issuer.metadata);
const client = new issuer.Client({
2023-04-13 19:38:35 +00:00
client_id: process.env.OIDC_CLIENT_ID,
redirect_uris: [process.env.OIDC_REDIRECT_URIS],
2023-03-20 19:28:14 +00:00
response_types: ['id_token'],
// id_token_signed_response_alg (default "RS256")
})
const nonce = generators.nonce();
app.get('/', async function (req, res) {
let url = client.authorizationUrl({
2023-04-13 19:38:35 +00:00
redirect_uri: process.env.CLIENT_URL + '/cb',
2023-03-20 19:28:14 +00:00
scope: 'openid',
response_mode: 'form_post',
nonce,
});
res.redirect(url);
});
app.post('/cb', async function (req, res) {
const params = client.callbackParams(req);
2023-04-13 19:38:35 +00:00
const tokenSet = await client.callback(process.env.CLIENT_URL + '/cb', params, {nonce});
2023-03-20 19:28:14 +00:00
console.log('received and validated tokens %j', tokenSet);
console.log('validated ID Token claims %j', tokenSet.claims());
res.send(tokenSet.claims());
});
app.listen(3000);
}
run().catch(console.dir);