Using static client data as DCR fallback

This commit is contained in:
2underscores 2025-07-28 20:18:18 +10:00
commit b99b3d29d9

View file

@ -88,16 +88,34 @@ export const oauthTransitions: Record<OAuthStep, StateTransition> = {
clientMetadata.scope = scopesSupported.join(" "); clientMetadata.scope = scopesSupported.join(" ");
} }
const fullInformation = await registerClient(context.serverUrl, { // Try DCR first, with static client as fallback
metadata, try {
clientMetadata, const fullInformation = await registerClient(context.serverUrl, {
}); metadata,
clientMetadata,
});
context.provider.saveClientInformation(fullInformation); context.provider.saveClientInformation(fullInformation);
context.updateState({ context.updateState({
oauthClientInfo: fullInformation, oauthClientInfo: fullInformation,
oauthStep: "authorization_redirect", oauthStep: "authorization_redirect",
}); });
console.log({ fullInformation });
return;
} catch (dcrError) {
console.error(dcrError);
// DCR failed, fallback to preregistered client
const existingClientInfo = await context.provider.clientInformation();
if (!existingClientInfo) {
console.error("Neither dynamic client registration or preregistered client information was found");
throw dcrError;
}
context.updateState({
oauthClientInfo: existingClientInfo,
oauthStep: "authorization_redirect",
});
}
}, },
}, },