Configurer l’authentification SDK
L’authentification SDK vous permet de fournir des preuves cryptographiques (côté serveur généré) aux requêtes SDK effectuées pour au nom des utilisateurs connectés.
Fonctionnement
Après avoir activé cette fonctionnalité dans votre app, vous pouvez configurer le tableau de bord de Braze pour qu’il rejette toute demande avec un jeton Web JSON (JWT) invalide ou manquant, ce qui inclut :
- Envoi d’événements personnalisés, d’attributs, d’achats et de données de session
- Créer de nouveaux utilisateurs dans votre espace de travail Braze
- Mise à jour des attributs de profil utilisateur standard
- Réception ou déclenchement de messages
Vous pouvez désormais empêcher les utilisateurs connectés non authentifiés d’utiliser la clé API SDK de votre application pour effectuer des actions malveillantes, telles que l’usurpation d’identité d’autres utilisateurs.
Mise en place de l’authentification
Étape 1 : Configurez votre serveur
Étape 1.1 : Générer une paire de clés publiques/privées
Générez une paire de clés publiques/privées RSA256. La clé publique sera ajoutée au tableau de bord de Braze, tandis que la clé privée devra être stockée en toute sécurité sur votre serveur.
Nous recommandons une clé RSA 2048 bits pour une utilisation avec l’algorithme JWT RS256.
N’oubliez pas de conserver vos clés privées privées. N’exposez jamais ou ne saisissez jamais votre clé privée dans votre application ou site Internet. Toute personne qui connaît votre clé privée peut se faire passer pour un autre utilisateur ou créer des utilisateurs au nom de votre application.
Étape 1.2 : Créer un jeton Web JSON pour l’utilisateur actuel
Une fois que vous avez votre clé privée, votre application côté serveur doit l’utiliser pour renvoyer un JWT à votre application ou site Internet pour l’utilisateur actuellement connecté.
En général, cette logique peut aller partout où votre application demande normalement le profil de l’utilisateur actuel, comme un endpoint de connexion ou partout où votre application a rafraîchi le profil de l’utilisateur actuel.
Lors de la génération du JWT, les champs suivants sont attendus :
En-tête JWT
| Champ | Requis | Description |
|---|---|---|
alg |
Oui | L’algorithme pris en charge est RS256. |
typ |
Oui | Le type doit être égal à JWT. |
Charge utile JWT
| Champ | Requis | Description |
|---|---|---|
sub |
Oui | Le « sujet » doit être égal à l’ID utilisateur que vous fournissez à Braze SDK lorsque vous appelez changeUser |
exp |
Oui | L’« expiration » ou le moment où vous souhaitez que ce jeton expire. |
Pour en savoir plus sur les jetons Web JSON ou pour parcourir les nombreuses bibliothèques open source qui simplifient ce processus de signature, consultez https://jwt.io.
Étape 2 : Configurer le SDK Braze
Cette fonctionnalité est disponible à partir des versions SDK suivantes](/docs/fr/user_guide/engagement_tools/campaigns/ideas_and_strategies/new_features/#filtering-by-most-recent-app-versions) :
Pour les intégrations iOS, cette page détaille les étapes à suivre pour le SDK Swift de Braze. Pour un exemple d’utilisation dans l’ancien SDK iOS d’AppboyKit, référez-vous à ce fichier et à ce fichier.
Étape 2.1 : Activez l’authentification dans le SDK de Braze.
Lorsque cette fonctionnalité est activée, le SDK Braze ajoutera le dernier JWT connu de l’utilisateur actuel aux demandes réseau effectuées sur les serveurs Braze.
Ne vous inquiétez pas, l’initialisation avec cette seule option n’aura aucun impact sur la collecte des données, jusqu’à ce que vous appliquiez l’authentification dans le tableau de bord de Braze.
Lorsque vous appelez initialize, définissez la propriété enableSdkAuthentication facultative à true.
1
2
3
4
5
import * as braze from "@braze/web-sdk";
braze.initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
enableSdkAuthentication: true,
});
L’authentification SDK doit être activée lors de l’initialisation du SDK natif. Veuillez ajouter la configuration suivante à votre code natif iOS et Android :
iOSAppDelegate.swift
1
2
3
4
5
6
7
8
9
10
11
12
import BrazeKit
import braze_react_native_sdk
let configuration = Braze.Configuration(
apiKey: "{YOUR-BRAZE-API-KEY}",
endpoint: "{YOUR-BRAZE-ENDPOINT}"
)
configuration.api.sdkAuthentication = true
let braze = BrazeReactBridge.perform(
#selector(BrazeReactBridge.initBraze(_:)),
with: configuration
).takeUnretainedValue() as! Braze
Androidbraze.xml
1
<bool name="com_braze_sdk_authentication_enabled">true</bool>
Après avoir activé l’authentification SDK dans la couche native, vous pouvez utiliser les méthodes JavaScript React native présentées dans les étapes suivantes.
Lors de la configuration de l’instance Braze, appelez setIsSdkAuthenticationEnabled à true.
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
.setIsSdkAuthenticationEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());
Vous pouvez également ajouter <bool name="com_braze_sdk_authentication_enabled">true</bool> à votre braze.xml.
Lors de la configuration de l’instance Braze, appelez setIsSdkAuthenticationEnabled à true.
1
2
3
BrazeConfig.Builder brazeConfigBuilder = BrazeConfig.Builder()
.setIsSdkAuthenticationEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
Vous pouvez également ajouter <bool name="com_braze_sdk_authentication_enabled">true</bool> à votre braze.xml.
Pour activer l’authentification SDK, définissez la propriété configuration.api.sdkAuthentication de votre objet BRZConfiguration sur YES avant d’initialiser l’instance de Braze :
1
2
3
4
5
6
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
endpoint:@"{BRAZE_ENDPOINT}"];
configuration.api.sdkAuthentication = YES;
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
Pour activer l’authentification SDK, définissez la propriété configuration.api.sdkAuthentication de votre objet Braze.Configuration sur true lors de l’initialisation du SDK :
1
2
3
4
5
let configuration = Braze.Configuration(apiKey: "{YOUR-BRAZE-API-KEY}",
endpoint: "{YOUR-BRAZE-ENDPOINT}")
configuration.api.sdkAuthentication = true
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
Actuellement, l’authentification SDK doit être activée dans le cadre de l’initialisation du SDK dans le code iOS et Android natif. Pour activer l’authentification SDK dans le SDK Flutter, suivez les intégrations pour iOS et Android depuis les autres onglets. Une fois l’authentification SDK activée, le reste de la fonctionnalité peut être intégré dans Dart.
L’authentification SDK doit être activée lors de l’initialisation du SDK dans le code natif iOS et Android. Lorsque cette fonctionnalité est activée dans la couche native, vous pouvez utiliser les méthodes du SDK Flutter pour transmettre la signature JWT.
iOS
Pour activer l’authentification SDK, veuillez définir laconfiguration.api.sdkAuthenticationpropriété surtruedans votre code iOS natif :
1
2
3
let configuration = Braze.Configuration(apiKey: "{YOUR-BRAZE-API-KEY}", endpoint: "{YOUR-BRAZE-ENDPOINT}")
configuration.api.sdkAuthentication = true
let braze = Braze(configuration: configuration)
Androidbraze.xml
1
<bool name="com_braze_sdk_authentication_enabled">true</bool>
Après avoir activé l’authentification SDK dans la couche native, vous pouvez utiliser les méthodes Flutter SDK présentées dans les étapes suivantes.
L’authentification SDK doit être activée lors de l’initialisation du SDK natif. Veuillez ajouter la configuration suivante à votre code natif iOS et Android :
iOS
Veuillez définir laSDKAuthenticationEnabledpropriété surtruedans votre fichier de configuration :
1
2
<key>SDKAuthenticationEnabled</key>
<true/>
Androidbraze.xml
1
<bool name="com_braze_sdk_authentication_enabled">true</bool>
Après avoir activé l’authentification SDK dans la couche native, vous pouvez utiliser les méthodes Unity C# présentées dans les étapes suivantes.
L’authentification SDK doit être activée lors de l’initialisation du SDK natif. Veuillez ajouter la configuration suivante à votre code natif iOS et Android :
iOS
Pour activer l’authentification SDK, veuillez définir laenableSDKAuthenticationpropriété surtruedans votre config.xml:
1
<preference name="com.braze.ios_enable_sdk_authentication" value="true" />
Androidbraze.xml
1
<bool name="com_braze_sdk_authentication_enabled">true</bool>
Après avoir activé l’authentification SDK dans la couche native, vous pouvez utiliser les méthodes JavaScript cordova présentées dans les étapes suivantes.
L’authentification SDK doit être activée lors de l’initialisation du SDK natif. Veuillez configurer l’authentification SDK séparément pour iOS et Android :
iOS
Pour activer l’authentification SDK, veuillez définir laconfiguration.Api.SdkAuthenticationpropriété surtruelors de l’initialisation du SDK :
1
2
3
var configuration = new BRZConfiguration("YOUR-API-KEY", "YOUR-ENDPOINT");
configuration.Api.SdkAuthentication = true;
var braze = new Braze(configuration);
Androidbraze.xml
1
<bool name="com_braze_sdk_authentication_enabled">true</bool>
Après avoir activé l’authentification SDK, vous pouvez utiliser les méthodes .NET MAUI présentées dans les étapes suivantes.
Lorsque vous utilisez le plugin Braze Expo, veuillez définir laenableSdkAuthenticationpropriété surtruedans la configuration de votre application. Cela configure automatiquement l’authentification SDK dans les couches natives iOS et Android sans nécessiter de modifications manuelles du code natif.
app.json ou app.config.js
1
2
3
4
5
6
7
8
9
10
11
12
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"enableSdkAuthentication": true
}
]
]
}
}
Après avoir activé l’authentification SDK dans la configuration de votre application, vous pouvez utiliser les méthodes JavaScript React native indiquées dans l’onglet React native pour les étapes suivantes.
Pour un exemple d’implémentation complet, veuillez consulter l’application exemple du plugin Braze Expo sur GitHub.
Étape 2.2 : Définir le JWT de l’utilisateur actuel
Lorsque votre application appelle la méthode Braze changeUser, fournissez également le JWT qui a été généré côté serveur.
Vous pouvez également configurer le jeton pour actualiser la mi-session pour l’utilisateur actuel.
Gardez à l’esprit que changeUser ne doit être appelée que lorsque l’ID utilisateur a réellement été modifié. Vous ne devez pas utiliser cette méthode pour mettre à jour le jeton d’authentification (JWT) si l’ID de l’utilisateur n’a pas changé.
Fournissez le JWT lors de l’appel changeUser:
1
2
import * as braze from "@braze/web-sdk";
braze.changeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
2
import * as braze from "@braze/web-sdk";
braze.setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Fournissez le JWT lors de l’appel changeUser:
1
2
3
import Braze from '@braze/react-native-sdk';
Braze.changeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
2
3
import Braze from '@braze/react-native-sdk';
Braze.setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Fournissez le JWT lors de l’appel changeUser:
1
Braze.getInstance(this).changeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
Braze.getInstance(this).setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Fournissez le JWT lors de l’appel changeUser:
1
Braze.getInstance(this).changeUser("NEW-USER-ID", "JWT-FROM-SERVER")
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
Braze.getInstance(this).setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER")
Fournissez le JWT lors de l’appel changeUser:
1
[AppDelegate.braze changeUser:@"userId" sdkAuthSignature:@"JWT-FROM-SERVER"];
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
[AppDelegate.braze setSDKAuthenticationSignature:@"NEW-JWT-FROM-SERVER"];
Fournissez le JWT lors de l’appel changeUser:
1
AppDelegate.braze?.changeUser(userId: "userId", sdkAuthSignature: "JWT-FROM-SERVER")
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
AppDelegate.braze?.set(sdkAuthenticationSignature: "NEW-JWT-FROM-SERVER")
Fournissez le JWT lors de l’appel changeUser:
1
braze.changeUser("userId", sdkAuthSignature: "JWT-FROM-SERVER")
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
braze.setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER")
Veuillez fournir le JWT lors de l’appel changeUser:
1
2
3
4
import 'package:braze_plugin/braze_plugin.dart';
BrazePlugin braze = BrazePlugin();
braze.changeUser("NEW-USER-ID", sdkAuthSignature: "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
2
3
4
import 'package:braze_plugin/braze_plugin.dart';
BrazePlugin braze = BrazePlugin();
braze.setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Veuillez fournir le JWT lors de l’appel ChangeUser:
1
BrazeBinding.ChangeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
BrazeBinding.SetSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Veuillez fournir le JWT lors de l’appel changeUser:
1
BrazePlugin.changeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
BrazePlugin.setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Veuillez fournir le JWT lors de l’appel ChangeUser:
iOS
1
Braze.SharedInstance?.ChangeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
Braze.SharedInstance?.SetSDKAuthenticationSignature("NEW-JWT-FROM-SERVER");
Android
1
Braze.GetInstance(this).ChangeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
Braze.GetInstance(this).SetSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Lorsque vous utilisez le plugin Braze Expo, veuillez employer les mêmes méthodes SDK React native. Veuillez fournir le JWT lors de l’appel changeUser:
1
2
3
import Braze from '@braze/react-native-sdk';
Braze.changeUser("NEW-USER-ID", "JWT-FROM-SERVER");
Ou, lorsque vous avez actualisé la mi-session jeton de l’utilisateur :
1
2
3
import Braze from '@braze/react-native-sdk';
Braze.setSdkAuthenticationSignature("NEW-JWT-FROM-SERVER");
Étape 2.3 : Enregistrer une fonction de rappel pour les jetons invalides
Lorsque cette fonctionnalité est définie comme requise, les scénarios suivants entraînent le rejet des demandes de SDK par Braze :
- Le JWT a expiré au moment où l’API Braze a été reçue
- JWT était vide ou manquant
- JWT n’a pas vérifié les clés publiques que vous avez téléchargées sur le tableau de bord de Braze
Vous pouvez utiliser subscribeToSdkAuthenticationFailures pour vous abonner à être averti lorsque les demandes SDK échouent pour l’une de ces raisons. Une fonction de rappel contient un objet avec les informations pertinentes errorCodeconcernant reasonl’erreur, l’identifiantuserIdde la requête (l’utilisateur ne peut pas être anonyme) et le jeton d’authentification (JWT) à l’origine de l’erreur.
Les demandes échouées seront périodiquement récupérées jusqu’à ce que votre application fournisse un nouveau JWT valide. Si cet utilisateur est toujours connecté, vous pouvez profiter de ce rappel pour demander un nouveau JWT à votre serveur et fournir au SDK de Braze ce nouveau jeton valide.
Si vous rencontrez une erreur d’authentification, veuillez vérifier que l’identifiantuserIddans l’erreur correspond à celui de l’utilisateur actuellement connecté. Ensuite, récupérez une nouvelle signature depuis votre serveur et fournissez-la au SDK Braze. Vous pouvez également enregistrer ces erreurs dans votre service de surveillance ou de signalement des erreurs.
Ces méthodes de fonction de rappel sont un excellent endroit pour ajouter votre propre service de surveillance ou d’erreur afin de suivre la fréquence à laquelle vos demandes de Braze sont rejetées.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import * as braze from "@braze/web-sdk";
braze.subscribeToSdkAuthenticationFailures((error) => {
console.error("SDK authentication failed:", error);
console.log("Error code:", error.errorCode);
console.log("User ID:", error.userId);
// Note: Do not log error.signature as it contains sensitive authentication credentials
// Verify the error.userId matches the currently logged-in user
// Fetch a new token from your server and set it
fetchNewSignature(error.userId).then((newSignature) => {
braze.setSdkAuthenticationSignature(newSignature);
});
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import Braze from '@braze/react-native-sdk';
const sdkAuthErrorSubscription = Braze.addListener(
Braze.Events.SDK_AUTHENTICATION_ERROR,
(error) => {
console.log(`SDK Authentication for ${error.userId} failed with error code ${error.errorCode}.`);
const updated_jwt = getNewTokenSomehow(error);
Braze.setSdkAuthenticationSignature(updated_jwt);
}
);
// Don't forget to remove the listener when done
// sdkAuthErrorSubscription.remove();
1
2
3
4
Braze.getInstance(this).subscribeToSdkAuthenticationFailures(error -> {
String newToken = getNewTokenSomehow(error);
Braze.getInstance(getContext()).setSdkAuthenticationSignature(newToken);
});
1
2
3
4
Braze.getInstance(this).subscribeToSdkAuthenticationFailures({ error: BrazeSdkAuthenticationErrorEvent ->
val newToken: String = getNewTokenSomehow(error)
Braze.getInstance(getContext()).setSdkAuthenticationSignature(newToken)
})
1
2
3
4
5
6
7
8
9
10
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
braze.sdkAuthDelegate = delegate;
AppDelegate.braze = braze;
// Method to implement in delegate
- (void)braze:(Braze *)braze sdkAuthenticationFailedWithError:(BRZSDKAuthenticationError *)error {
NSLog(@"Invalid SDK Authentication Token.");
NSString *newSignature = getNewTokenSomehow(error);
[AppDelegate.braze setSDKAuthenticationSignature:newSignature];
}
1
2
3
4
5
6
7
8
9
10
let braze = Braze(configuration: configuration)
braze.sdkAuthDelegate = delegate
AppDelegate.braze = braze
// Method to implement in delegate
func braze(_ braze: Braze, sdkAuthenticationFailedWithError error: Braze.SDKAuthenticationError) {
print("Invalid SDK Authentication Token.")
let newSignature = getNewTokenSomehow(error)
AppDelegate.braze?.set(sdkAuthenticationSignature: newSignature)
}
1
2
3
4
5
braze.setBrazeSdkAuthenticationErrorCallback((BrazeSdkAuthenticationError error) async {
print("Invalid SDK Authentication Token.");
final newSignature = getNewTokenSomehow(error);
braze.setSdkAuthenticationSignature(newSignature);
});
1
2
3
4
5
6
7
8
9
10
import 'package:braze_plugin/braze_plugin.dart';
BrazePlugin braze = BrazePlugin();
braze.setBrazeSdkAuthenticationErrorCallback((BrazeSdkAuthenticationError error) async {
print("SDK Authentication for ${error.userId} failed with error code ${error.errorCode}.");
String newSignature = getNewTokenSomehow(error);
braze.setSdkAuthenticationSignature(newSignature);
});
iOS
Veuillez configurer le délégué d’authentification SDK dans votre implémentation iOS native :
1
2
3
4
5
6
7
8
9
public class SdkAuthDelegate : BRZSdkAuthDelegate
{
public void Braze(Braze braze, BRZSDKAuthenticationError error)
{
Debug.Log("Invalid SDK Authentication Token.");
string newSignature = GetNewTokenSomehow(error);
BrazeBinding.SetSdkAuthenticationSignature(newSignature);
}
}
Android
1
2
3
4
Braze.GetInstance(this).SubscribeToSdkAuthenticationFailures((error) => {
string newToken = GetNewTokenSomehow(error);
Braze.GetInstance(this).SetSdkAuthenticationSignature(newToken);
});
1
2
3
4
5
6
BrazePlugin.subscribeToSdkAuthenticationFailures((error) => {
console.log(`SDK Authentication for ${error.user_id} failed with error code ${error.error_code}.`);
const newSignature = getNewTokenSomehow(error);
BrazePlugin.setSdkAuthenticationSignature(newSignature);
});
iOS
Veuillez configurer le délégué d’authentification SDK sur votreBrazeinstance :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SdkAuthDelegate : BRZSdkAuthDelegate
{
public override void Braze(Braze braze, BRZSDKAuthenticationError error)
{
Console.WriteLine("Invalid SDK Authentication Token.");
string newSignature = GetNewTokenSomehow(error);
Braze.SharedInstance?.SetSDKAuthenticationSignature(newSignature);
}
}
// Set the delegate during initialization
var configuration = new BRZConfiguration("YOUR-API-KEY", "YOUR-ENDPOINT");
configuration.Api.SdkAuthentication = true;
var braze = new Braze(configuration);
braze.SdkAuthDelegate = new SdkAuthDelegate();
Android
1
2
3
4
Braze.GetInstance(this).SubscribeToSdkAuthenticationFailures((error) => {
string newToken = GetNewTokenSomehow(error);
Braze.GetInstance(this).SetSdkAuthenticationSignature(newToken);
});
Lorsque vous utilisez le plugin Braze Expo, veuillez employer les mêmes méthodes SDK React native :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import Braze from '@braze/react-native-sdk';
const sdkAuthErrorSubscription = Braze.addListener(
Braze.Events.SDK_AUTHENTICATION_ERROR,
(error) => {
console.log(`SDK Authentication for ${error.userId} failed with error code ${error.errorCode}.`);
const updated_jwt = getNewTokenSomehow(error);
Braze.setSdkAuthenticationSignature(updated_jwt);
}
);
// Don't forget to remove the listener when done
// sdkAuthErrorSubscription.remove();
Étape 3 : Activer l’authentification dans le tableau de bord
Ensuite, vous pouvez activer l’authentification dans le tableau de bord de Braze pour les apps que vous avez configurées précédemment.
Gardez à l’esprit que les requêtes SDK continueront à circuler comme d’habitude sans authentification, sauf si le paramètre d’authentification SDK de l’app est défini sur Requis dans le tableau de bord de Braze.
En cas de problème avec votre intégration (par exemple, votre application transmet incorrectement des jetons au SDK ou votre serveur génère des jetons invalides), désactivez cette fonctionnalité dans le tableau de bord de Braze, et les données recommenceront à circuler comme d’habitude sans vérification.
Options d’application
Dans la page Gérer les paramètres du tableau de bord, chaque application dispose de trois états d’authentification SDK qui contrôlent la manière dont Braze vérifie les requêtes.
| Réglage | Description |
|---|---|
| Désactivé | Braze ne vérifiera pas le JWT fourni à un utilisateur. (Paramètre par défaut) |
| Facultatif | Braze vérifiera les demandes pour les utilisateurs connectés, mais ne rejettera pas les demandes non valides. |
| Requis | Braze vérifiera les demandes pour les utilisateurs connectés, et rejettera les JWT non valides. |

Le paramètre Facultatif est un moyen utile de surveiller l’impact potentiel de cette fonctionnalité sur le trafic SDK de votre application.
Un JWT invalide sera signalé dans les deux états, facultatif et obligatoire, mais seul l’état obligatoire rejettera les demandes de SDK, obligeant les applications à réessayer et à demander un nouveau JWT.
Gérer les clés publiques
Ajouter une clé publique
Vous pouvez ajouter jusqu’à trois clés publiques pour chaque application : une clé principale, une clé secondaire et une clé tertiaire. Si nécessaire, vous pouvez également ajouter la même clé à plusieurs applications. Pour ajouter une clé publique :
- Rendez-vous sur le tableau de bord de Braze et sélectionnez Paramètres > Paramètres de l’application.
- Choisissez une application dans votre liste d’applications disponibles.
- Sous Authentification SDK, sélectionnez Ajouter une clé publique.
- Saisissez une description facultative, collez votre clé publique, puis sélectionnez Ajouter une clé publique.
Attribuer une nouvelle clé primaire
Pour attribuer une clé secondaire ou tertiaire comme nouvelle clé principale :
- Rendez-vous sur le tableau de bord de Braze et sélectionnez Paramètres > Paramètres de l’application.
- Choisissez une application dans votre liste d’applications disponibles.
- Sous Authentification SDK, choisissez une clé et sélectionnez Gérer > Faire une clé primaire.
Supprimer une clé
Pour supprimer une clé principale, attribuez d’abord une nouvelle clé principale, puis supprimez votre clé. Pour supprimer une clé non primaire :
- Rendez-vous sur le tableau de bord de Braze et sélectionnez Paramètres > Paramètres de l’application.
- Choisissez une application dans votre liste d’applications disponibles.
- Sous Authentification SDK, choisissez une clé non primaire et sélectionnez Gérer > Supprimer la clé publique.
Analyses
Chaque application affichera une ventilation des erreurs d’authentification SDK collectées lorsque cette fonctionnalité est dans l’état Facultatif et Requis.
Les données sont disponibles en temps réel, et vous pouvez déplacer le curseur sur les points du graphique pour voir la répartition des erreurs pour une date donnée.

Codes d’erreur
| code d’erreur | Cause de l’erreur | Description | Marche à suivre pour résoudre le problème |
|---|---|---|---|
| 10 | EXPIRATION_REQUIRED |
L’expiration est un champ obligatoire pour l’utilisation de Braze. | Veuillez ajouter un champexp d’expiration à votre logique de création de JWT. |
| 20 | DECODING_ERROR |
Clé publique non conforme ou erreur générale non détectée. | Veuillez copier votre JWT dans un outil de test JWT afin de déterminer pourquoi votre JWT est dans un format non valide. |
| 21 | SUBJECT_MISMATCH |
Les sujets attendus et réels ne sont pas les mêmes. | Lesubchamp doit correspondre à l’ID utilisateur transmis à la méthodechangeUser SDK. |
| 22 | EXPIRED |
Le jeton fourni a expiré. | Veuillez prolonger la durée de validité ou actualiser périodiquement les jetons avant leur expiration. |
| 23 | INVALID_PAYLOAD |
La charge utile jeton n’est pas valide. | Veuillez copier votre JWT dans un outil de test JWT afin de déterminer pourquoi votre JWT est dans un format non valide. |
| 24 | INCORRECT_ALGORITHM |
L’algorithme du jeton n’est pas pris en charge. | Veuillez modifier votre JWT afin d’utiliserRS256le chiffrement. Les autres types ne sont pas pris en charge. |
| 25 | PUBLIC_KEY_ERROR |
La clé publique n’a pas pu être convertie au format approprié. | Veuillez copier votre JWT dans un outil de test JWT afin de déterminer pourquoi votre JWT est dans un format non valide. |
| 26 | MISSING_TOKEN |
Aucun jeton n’a été fourni dans la demande. | Veuillez vous assurer que vous transmettez un jeton lorsque vous effectuez l’appelchangeUser(id, token)et que votre jeton n’est pas vide. |
| 27 | NO_MATCHING_PUBLIC_KEYS |
Aucune clé publique ne correspond au jeton fourni. | La clé privée utilisée dans le JWT ne correspond à aucune des clés publiques configurées pour votre application. Veuillez vérifier que vous avez bien ajouté les clés publiques à l’application appropriée dans votre espace de travail, correspondant à cette clé API. |
| 28 | PAYLOAD_USER_ID_MISMATCH |
Tous les ID d’utilisateur dans la charge utile de la requête ne correspondent pas comme requis. | Ceci est inattendu et peut entraîner une charge utile malformée. Veuillez ouvrir un ticket d’assistance pour obtenir de l’aide. |
Foire aux questions (FAQ)
Cette fonctionnalité doit-elle être activée sur toutes mes applications en même temps ?
Non, cette fonctionnalité peut être activée pour des applications spécifiques et n’a pas besoin d’être utilisée sur toutes vos applications, en même temps.
Que se passe-t-il pour les utilisateurs qui sont toujours sur les versions antérieures de mon application ?
Lorsque vous commencez à faire appliquer cette fonctionnalité, les demandes effectuées par les versions anciennes d’applications seront rejetées par Braze et récupérées par les SDK. Une fois que les utilisateurs auront mis à jour leur application vers une version prise en charge, les demandes en file d’attente seront à nouveau acceptées.
Dans la mesure du possible, il convient de faire en sorte que les utilisateurs effectuent la mise à niveau comme pour toute autre mise à niveau obligatoire. Vous pouvez également laisser la fonctionnalité en option jusqu’à ce que vous constatiez qu’un pourcentage acceptable d’utilisateurs a effectué la mise à niveau.
Quelle expiration dois-je utiliser lors de la génération d’un JWT ?
Nous vous recommandons d’utiliser la valeur la plus élevée parmi : la durée moyenne de la session, l’expiration du cookie/jeton de la session, ou la fréquence à laquelle votre application rafraîchirait autrement le profil utilisateur actuel.
Que se passe-t-il si un JWT expire au milieu de la session d’un utilisateur ?
Si le jeton d’un utilisateur expire à mi-session, le SDK dispose d’une fonction de rappel qu’il invoquera pour indiquer à votre application qu’un nouveau JWT est nécessaire pour continuer à envoyer des données à Braze.
Que se passe-t-il si mon intégration côté serveur est interrompue et que je ne peux plus créer un JWT ?
Si votre serveur n’est pas en mesure de fournir un JWT ou si vous remarquez un problème d’intégration, vous pouvez toujours désactiver la fonctionnalité dans le tableau de bord de Braze.
Une fois désactivée, toutes les demandes de SDK échouées en attente seront finalement récupérées par le SDK et acceptées par Braze.
Pourquoi cette fonction utilise-t-elle des clés publiques/privées plutôt que des secrets partagés ?
Lors de l’utilisation de secrets partagés, toute personne ayant accès à ce secret partagé, comme la page du tableau de bord de Braze, serait en mesure de générer des jetons et d’usurper l’identité de vos utilisateurs finaux.
Au lieu de cela, nous utilisons des clés publiques/privées afin que même les employés de Braze (sans parler des utilisateurs de votre entreprise) n’aient pas accès à vos clés privées.
Comment les demandes rejetées seront-elles récupérées ?
Lorsqu’une demande est rejetée en raison d’une erreur d’authentification, le SDK invoque votre rappel utilisé pour actualiser le JWT de l’utilisateur.
Les demandes réessaieront périodiquement en utilisant une approche de délais exponentielle. Après 50 tentatives consécutives échouées, les nouvelles tentatives seront interrompues jusqu’à la prochaine session. Chaque SDK dispose également d’une méthode qui permet de demander manuellement un rafraîchissement des données.
Est-il possible d’utiliser l’authentification SDK pour les utilisateurs anonymes ?
Non. L’authentification SDK ne fonctionnera pas pour les utilisateurs anonymes.
Modifier cette page sur GitHub