shy-student-92360
06/16/2025, 12:43 PMthis.client = new FrontendApi(
new Configuration({
basePath: KRATOS_BASE_PATH,
}),
);
public async getLogoutUrl(
returnToUri: string = ROUTES.HOME.path,
): Promise<string | undefined> {
try {
const sessionCookie = this.getSessionCookie();
const { data } = await this.client.createBrowserLogoutFlow({
cookie: HYDRA_COOKIE + "=" + sessionCookie,
returnTo: generateUrl(returnToUri).toString(),
});
return data.logout_url;
} catch {
return undefined;
}
}
C'est quoi la meilleur choses à faire ? Me connecter à une autre application ou ajouter un headerbrief-egg-61061
06/16/2025, 12:43 PMbrief-egg-61061
06/16/2025, 12:44 PMbash ory patch oauth2-config --project <project-id> --workspace <workspace-id> \ --add '/oauth2/token_hook/url="<https://my-example.app/token-hook>"' \ --add '/oauth2/token_hook/auth/type="api_key"' \ --add '/oauth2/token_hook/auth/config/in="header"' \ --add '/oauth2/token_hook/auth/config/name="X-API-Key"' \ --add '/oauth2/token_hook/auth/config/value="MY API KEY"' \ --format yaml
[Customizing claims with OAuth2 webhooks](https://www.ory.sh/docs/hydra/guides/claims-at-refresh) Pour différencier vos applications clientes dans le webhook : - Utilisez l’identifiant du client OAuth2 (client_id
) qui est déjà inclus dans le payload envoyé au webhook par Ory. Ce champ est prévu pour identifier l’application qui effectue la connexion. - Exemple de payload reçu par le webhook : json { "session": { ... }, "request": { "client_id": "app-client", ... } }
Vous pouvez donc différencier vos applications côté webhook en utilisant ce champ, sans avoir besoin d’ajouter un header personnalisé à la requête SDK [Customizing claims with OAuth2 webhooks](https://www.ory.sh/docs/hydra/guides/claims-at-refresh). Si vous souhaitez absolument ajouter un header custom à la requête SDK : - Le SDK @ory/client ne propose pas d’option native pour injecter des headers personnalisés dans les appels (sauf pour certains cas comme l’API key d’administration). - Pour contourner cette limitation, il faudrait soit : - Modifier le SDK (non recommandé). - Utiliser un proxy HTTP entre votre application et Ory pour injecter le header. - Ou, si vous contrôlez l’appel HTTP sous-jacent (par exemple, en utilisant axios ou fetch directement), vous pouvez alors ajouter vos headers, mais vous perdez l’abstraction du SDK. Conclusion : La meilleure pratique est d’utiliser le champ client_id
dans le payload du webhook pour différencier vos applications. Ajouter un header custom via le SDK n’est pas supporté nativement et n’est généralement pas nécessaire pour ce cas d’usage. N’hésitez pas à préciser votre besoin si vous souhaitez un exemple d’implémentation côté webhook pour filtrer selon le client_id
.shy-student-92360
06/16/2025, 12:47 PMfunction(ctx) {
oryUuid: ctx.identity.id,
email: ctx.identity.traits.email,
redirectTo: ctx,
headers: ctx.request_headers
}
pour le webhook?shy-student-92360
06/16/2025, 12:48 PMfunction(ctx) {
oryUuid: ctx.identity.id,
email: ctx.identity.traits.email,
redirectTo: ctx,
headers: ctx.request_headers
}
pour le webhook?brief-egg-61061
06/16/2025, 12:48 PMbrief-egg-61061
06/16/2025, 12:49 PMjsonnet function(ctx) { userId: ctx.identity.id, customData: ctx.flow.transient_payload.custom_data, traits: { email: ctx.identity.traits.email, name: ctx.identity.traits.name, newsletterConsent: ctx.identity.traits.consent.newsletter, }, }
[Customizing request body with Jsonnet](https://www.ory.sh/docs/guides/integrate-with-ory-cloud-through-webhooks#jsonnet-templating) Résumé : - Si vous utilisez un webhook d’identité (ex : registration, login), le client_id/client_name OAuth2 n’est pas disponible dans ctx selon la documentation. - Si vous utilisez un webhook OAuth2 (token_hook), le client_id est inclus dans le payload envoyé par Ory, mais ce n’est pas un template Jsonnet, c’est un POST JSON classique [Customizing claims with OAuth2 webhooks](https://www.ory.sh/docs/hydra/guides/claims-at-refresh). Conclusion : Je suis désolé, mais d’après les sources disponibles, il n’est pas possible de récupérer le client_id ou le client_name OAuth2 dans un template Jsonnet de webhook d’identité. Ces informations sont uniquement disponibles dans les webhooks OAuth2/Hydra, où elles sont envoyées dans le payload JSON, mais pas exposées dans ctx pour Jsonnet. Si vous avez besoin de cette information dans un webhook d’identité, il faudrait la transmettre d’une autre manière (par exemple, via un champ custom dans le flow ou dans les headers si vous contrôlez l’appel).shy-student-92360
06/16/2025, 12:58 PMthis.client = new FrontendApi(
new Configuration({
basePath: KRATOS_BASE_PATH,
}),
);
const { data } = await this.client.createBrowserLogoutFlow({
cookie: HYDRA_COOKIE + "=" + sessionCookie,
returnTo: generateUrl(returnToUri).toString(),
});
brief-egg-61061
06/16/2025, 12:58 PMbrief-egg-61061
06/16/2025, 12:58 PMclient_id
) à un webhook Ory lors d’un flow d’identité (registration, login, etc.), la documentation officielle recommande d’utiliser le champ optionnel transient_payload
lors de la soumission du flow. Ce champ permet de transmettre des données temporaires qui seront accessibles dans le contexte (ctx.flow.transient_payload
) du webhook Jsonnet, mais qui ne seront pas persistées dans l’identité. Exemple d’utilisation lors d’un flow de registration : js const { data } = await this.client.updateRegistrationFlow({ flow: flowId, updateRegistrationFlowBody: { method: "password", csrf_token: "your-csrf-token", "traits.email": "<mailto:email@example.com|email@example.com>", password: "verystrongpassword", transient_payload: { client_id: "votre_client_id_personnalisé" } } });
Dans votre template Jsonnet du webhook, vous pourrez alors accéder à cette valeur : js function(ctx) { clientId: ctx.flow.transient_payload.client_id, // autres champs... }
Limite : Pour les méthodes comme createBrowserLogoutFlow
, la documentation ne mentionne pas la possibilité de passer un champ transient_payload
ou d’ajouter des headers personnalisés via le SDK @ory/client. Cette capacité est documentée uniquement pour les flows de registration, login, etc. Si vous avez besoin de transmettre des données personnalisées lors du logout, la documentation ne fournit pas de solution directe pour ce cas d’usage, et il n’est pas possible d’ajouter un header custom via le SDK selon les sources disponibles. Résumé : - Pour registration/login/settings : utilisez transient_payload
dans le body de la requête pour transmettre des données personnalisées, récupérables dans le webhook Jsonnet via ctx.flow.transient_payload
[Submit registration flow](https://www.ory.sh/docs/kratos/bring-your-own-ui/custom-ui-basic-integration#submit-registration-flow). - Pour logout : il n’existe pas de mécanisme documenté pour transmettre un champ custom ou un header via le SDK. Si vous avez besoin de ce comportement pour le logout, il n’est pas supporté nativement selon la documentation actuelle.