Node.js: príklad OpenID Connect s openid-client
Prihlásenie cez Dazr Identity: bezplatné OpenID Connect hostované v EÚ, s passkeys, kódmi e-mailom a účtami Google alebo Microsoft pod jedným tlačidlom.
Potrebujete tri hodnoty z vývojárskej konzoly: ID klienta, tajný kľúč klienta (len pri webových serverových aplikáciách) a URI presmerovania, ktoré ste zaregistrovali. Všetko ostatné je v dokumente discovery na adrese https://identity.dazr.eu/.well-known/openid-configuration.
Node.js (openid-client)
openid-client (verzia 6) číta dokument discovery a za vás kontroluje PKCE, state, nonce a ID token.
import * as client from 'openid-client';
const config = await client.discovery(
new URL('https://identity.dazr.eu'),
process.env.DAZR_CLIENT_ID,
process.env.DAZR_CLIENT_SECRET, // public client: pass undefined here and client.None() as the 4th argument
);
const redirect_uri = 'https://app.example.eu/auth/dazr/callback';
// 1. Start: keep the three random values in the user's session.
export async function start(session) {
session.verifier = client.randomPKCECodeVerifier();
session.state = client.randomState();
session.nonce = client.randomNonce();
return client.buildAuthorizationUrl(config, {
redirect_uri,
scope: 'openid profile email',
code_challenge: await client.calculatePKCECodeChallenge(session.verifier),
code_challenge_method: 'S256',
state: session.state,
nonce: session.nonce,
});
}
// 2. Callback: pass the full callback URL (a URL object).
export async function callback(session, currentUrl) {
const tokens = await client.authorizationCodeGrant(config, currentUrl, {
pkceCodeVerifier: session.verifier,
expectedState: session.state,
expectedNonce: session.nonce,
});
const claims = tokens.claims(); // sub, email, name
return { sub: claims.sub, email: claims.email, name: claims.name };
}
Kľúčujte účty podľa sub, nie podľa e-mailu Claim
sub je párový: rovnaký pre každú aplikáciu vašej organizácie, iný pre každú inú organizáciu. Pre danú osobu sa nikdy nemení, zatiaľ čo e-mailová adresa sa zmeniť môže. Ukladajte sub ako kľúč účtu a email berte ako kontaktný údaj.
Ďalšie informácie pre vývojárov
Dokumentácia pre vývojárovVšetci sprievodcovia integráciouĽubovoľná knižnica OpenID ConnectCeny