Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Locataires externes (en savoir plus)
Ce tutoriel montre comment acquérir un jeton via un navigateur où l’authentification native n’est pas suffisante pour terminer le flux utilisateur.
Dans ce tutoriel, vous allez :
- Consultez l’erreur BrowserRequired.
- Gérer l’erreur BrowserRequired.
Conditions préalables
- Si vous utilisez iOS, suivez les étapes de connexion d’utilisateurs dans un exemple d’application mobile iOS native.
- Si vous utilisez macOS, suivez les étapes de la procédure Connecter des utilisateurs dans un exemple d’application macOS (Swift) à l’aide de l’authentification native.
Navigateur requis
BrowserRequired est un mécanisme de secours pour différents scénarios où l’authentification native n’est pas suffisante pour terminer le flux utilisateur.
Pour garantir la stabilité de votre application et éviter l’interruption du flux d’authentification, il est vivement recommandé d’utiliser la méthode acquireToken() du kit de développement logiciel (SDK) pour poursuivre le flux dans le navigateur.
Lorsque nous initialisons le kit de développement logiciel, nous devons spécifier les types de défis que notre application peut prendre en charge. Voici la liste des types de défis acceptés par le kit de développement logiciel :
- OOB (hors bande) : ajoutez ce type de défi lorsque votre application iOS/macOS peut gérer un code secret à usage unique, dans ce cas un code envoyé par e-mail.
- Mot de passe : ajoutez ce type de défi lorsque votre application est en mesure de gérer l’authentification par mot de passe.
Lorsque Microsoft Entra nécessite des fonctionnalités que le client ne peut pas fournir l’erreur BrowserRequired sera retournée. Par exemple, supposons que nous initialisons l’instance du Kit de développement logiciel (SDK) spécifiant uniquement le type de défi OOB, mais dans le centre d’administration Microsoft Entra, l’application est configurée avec un flux d’utilisateur E-mail avec mot de passe. Lorsque nous appelons la méthode signUp(username) à partir de l’instance du Kit de développement logiciel (SDK), nous obtenons une erreur BrowserRequired, car Microsoft Entra nécessite un type de défi différent (mot de passe dans ce cas) que celui configuré dans le Kit de développement logiciel (SDK).
Le type de défi insuffisant n’est qu’un exemple de cas où BrowserRequired peut se produire.
BrowserRequired est un mécanisme de secours général qui peut se produire dans différents scénarios.
Échantillon de flux
Dans l’extrait de code suivant, vous pouvez voir comment spécifier les types de défis lors de l’initialisation de l’instance du SDK :
nativeAuth = try MSALNativeAuthPublicClientApplication(
clientId: "<client id>",
tenantSubdomain: "<tenant subdomain>",
challengeTypes: [.OOB]
)
Dans ce cas, nous ne spécifions que le type de défi OOB. Supposons que dans le centre d’administration Microsoft Entra, l’application est configurée avec un flux d’utilisateur E-mail avec mot de passe.
let parameters = MSALNativeAuthSignUpParameters(username: email)
nativeAuth.signUp(parameters: parameters, delegate: self)
func onSignUpStartError(error: MSAL.SignUpStartError) {
if error.isBrowserRequired {
// handle browser required error
}
}
Lorsque nous appelons la méthode signUp(parameters:delegate) à partir de l’instance du Kit de développement logiciel (SDK), nous obtenons une erreur BrowserRequired, car Microsoft Entra nécessite un type de défi différent (mot de passe dans ce cas) que celui configuré dans le Kit de développement logiciel (SDK).
Gérer l’erreur BrowserRequired
Pour gérer ce type d’erreur, nous devons lancer un navigateur et permettre à l’utilisateur d’y effectuer le flux d’authentification. Ceci peut être fait en appelant la méthode acquireToken(). Pour utiliser cette méthode, quelques configurations supplémentaires doivent être effectuées :
- Configurer des schémas d’URL dans notre projet Xcode
- Configurer l’URI de redirection dans le centre d’administration Microsoft Entra
Nous pouvons maintenant obtenir un jeton et un compte de manière interactive. Voici un exemple de la procédure à suivre :
func onSignUpStartError(error: MSAL.SignUpStartError) {
if error.isBrowserRequired {
let webviewParams = MSALWebviewParameters(authPresentationViewController: self)
let parameters = MSALInteractiveTokenParameters(scopes: ["User.Read"], webviewParameters: webviewParams)
nativeAuth.acquireToken(with: parameters) { (result: MSALResult?, error: Error?) in
// result will contain account and tokens retrieved in the browser
}
}
}
Les jetons et le compte renvoyés sont identiques à ceux qui sont récupérés avec un flux d’authentification natif.