Versions publiées
Les fonctionnalités et les modifications majeures apportées aux versions des déclencheurs du flux de connexion sont énumérées ci-dessous.
v3 (GA)
Postconnexion
Modifications importantes
api.redirect.canRedirect()est qualifié comme déconseillé.api.redirect.sendUserTo()n’ignorera plus la redirection lorsqu’il s’agit d’un flux non interactif. Cela signifie que les appels àapi.redirect.sendUserTo()doivent d’abord vérifier si la redirection est nécessaire avant de l’effectuer. Des informations telles queevent.authentication.methodspeuvent être consultées pour vérifier si une redirection a été effectuée avec succès et enregistrée au moyen deapi.authentication.recordMethod(). Une tentative de redirection dans un flux non interactif déclenchera bien une erreurinteraction_required.
Nouvelles fonctionnalités
event.authentication.methodspeut désormais contenir des méthodes personnalisées réalisées par les utilisateurs au cours de cette séance et enregistrées à l’aide deapi.authentication.recordMethod()dans le gestionnaireonContinuePostLogin.api.authentication.recordMethod()est ajoutée pour permettre de stocker un enregistrement de l’achèvement d’une méthode personnalisée dans la séance de l’utilisateur. Ces API vous permettent d’exiger des facteurs strictement personnalisés dans certains scénarios. L’utilisateur (sur un appareil particulier) devra effectuer le facteur personnalisé, qu’il y ait ou non une connexion interactive. Si les conditions sont réunies pour exiger le facteur personnalisé et que la session de l’utilisateur ne contient pas d’enregistrement de sa réalisation, l’interactivité du flux ne devrait pas influencer le fait qu’il soit exigé ou non. Voici un exemple de ce qu’il faut faire si vous souhaitez mettre en place un facteur personnalisé obligatoire :Dans
onExecutePostLogin, recherchez un enregistrement dans le tableauevent.authentication.methodsavec l’URL d’identifiant de la méthode personnalisée. Si la méthode existe et que son horodatage est suffisamment récent, la connexion peut se poursuivre. Sinon, déclenchez une redirection vers l’URL d’implémentation du facteur personnalisé en utilisantapi.redirect.sendUserTo(). Les données personnalisées peuvent être encodées dans un JWT et signées à l’aide deapi.redirect.encodeToken().Lorsque l’utilisateur est redirigé vers
/continue, le gestionnaireonContinuePostLoginest invoqué. Dans ce gestionnaire, validez les données renvoyées par le facteur personnalisé (si nécessaire) et signalez son achèvement en appelantapi.authentication.recordMethod().
v2 (GA)
Postconnexion
Modifications importantes
Exécution des effets secondaires
Dans la version du déclencheur post-connexion précédant la mise à disposition générale, les effets secondaires étaient exécutés en renvoyant un objet à partir d’une action. En ce qui concerne les actions mises à disposition générale, un objet api permet d’encapsuler ces changements et de fournir de meilleures suggestions dans l’éditeur ainsi qu’une documentation en ligne.
Mettre à jour user user_metadata
Déclencheur avant la mise à disposition générale :
async function myFunction(event, context) {
return {
user: {
userMetadata: {
myParam: "foo"
}
}
};
}Was this helpful?
Déclencheur après la mise à disposition générale :
async function onExecutePostLogin(event, api) {
api.user.setUserMetadata('myParam', 'foo');
}Was this helpful?
Mettre à jour user app_metadata
Déclencheur avant la mise à disposition générale :
async function myFunction(event, context) {
return {
user: {
appMetadata: {
myParam: "foo"
}
}
};
}Was this helpful?
Déclencheur après la mise à disposition générale :
async function onExecutePostLogin(event, api) {
api.user.setAppMetadata('myParam', 'foo');
}Was this helpful?
Refuser une connexion
Déclencheur avant la mise à disposition générale :
async function myFunction(event, context) {
throw new Error("Access denied.");
}Was this helpful?
Déclencheur après la mise à disposition générale :
async function onExecutePostLogin(event, api) {
api.access.deny("Access denied.");
}Was this helpful?
Ajouter des demandes personnalisées au jeton d’accès
Déclencheur avant la mise à disposition générale :
async function myFunc(event, context) {
return {
accessToken: {
customClaims: {
'https://example.com/custom/claim': 'Custom claim value',
}
}
};
}Was this helpful?
async function myFunc(event, api) {
api.accessToken.setCustomClaim('https://example.com/custom/claim', 'Custom claim value');
}Was this helpful?
Ajouter des demandes personnalisées au jeton d’ID
Déclencheur avant la mise à disposition générale :
async function myFunc(event, context) {
return {
idToken: {
customClaims: {
'https://example.com/custom/claim': 'Custom claim value',
}
}
};
}Was this helpful?
Déclencheur après la mise à disposition générale :
async function myFunc(event, api) {
api.idToken.setCustomClaim('https://example.com/custom/claim', 'Custom claim value');
}Was this helpful?
Activer l’authentification multifacteur (MFA) de façon dynamique
Déclencheur avant la mise à disposition générale :
async function myFunction(event, context) {
return {
command: {
type: "multifactor",
provider: "any"
}
};
}Was this helpful?
Déclencheur après la mise à disposition générale :
async function onExecutePostLogin(event, api) {
api.multifactor.enable("duo");
}Was this helpful?
Rediriger l’utilisateur
Déclencheur avant la mise à disposition générale :
async function myFunction(event, context) {
return {
command: {
type: "redirect",
url: "https://my-app.example.com"
}
};
}Was this helpful?
Déclencheur après la mise à disposition générale :
async function onExecutePostLogin(event, api) {
api.redirect.sendUserTo("https://my-app.example.com");
}Was this helpful?
Afin de garantir que les paramètres sont envoyés en toute sécurité et d’éviter les attaques par réinsertion, la transmission de données via des redirections a été considérablement modifiée dans Actions Disponibilité générale. Pour plus de détails, consultez Rediriger avec des actions.
Manipuler les permissions
Bien que nous ayons testé la manipulation directe des permissions de jeton d’ID et d’accès dans la version bêta des actions, nous ne prenons pas en charge cette fonctionnalité dans la version finale.