2017-06-07 1 views
0

J'essaie d'écrire un gestionnaire d'erreurs pour une application iOS et je souhaite gérer les erreurs différemment en fonction des codes d'erreur HTTP du service de jeton Azure AD (STS). Par exemple, si je reçois un HTTP 429, je sais ne pas réessayer la requête ou si je reçois un HTTP 500, je peux choisir de faire une nouvelle tentative.Comment extraire le code d'erreur HTTP envoyé depuis Azure AD à l'aide d'ADAL Objective-C

Comment extraire cette information de l'erreur AD fournie dans l'objectif C ADAL?

Répondre

1

Nous vous déconseillons d'utiliser directement les codes d'erreur HTTP lorsque vous utilisez nos bibliothèques. Nous fournissons les codes d'erreur ADAL que vous devez utiliser pour déterminer les prochaines étapes de votre application. Ils enveloppent à la fois les erreurs HTTP et les autres erreurs que la bibliothèque peut provoquer dans un objet NSError que vous pouvez utiliser.

Vous devriez vérifier le domaine d'erreur pour ADAuthenticationErrorDomain et correspondre à un code d'erreur tel que AD_ERROR_USER_INPUT_NEEDED

Nous maintenons cette liste de codes d'erreur dans le fichier d'en-tête ADErrorCodes.h du SDK ainsi que la description de la façon dont l'erreur peut se produire : https://github.com/AzureAD/azure-activedirectory-library-for-objc/blob/dev/ADAL/src/public/ADErrorCodes.h

Pour attraper ces erreurs dans votre code, utilisez le modèle suivant:

[authContext acquireTokenSilentWithResource:... 
      completionBlock:^(ADAuthenticationResult *result) { 

if (!result.error) { 

// normal program flow 

} else { 

    if ([result.error.domain isEqual:ADAuthenticationErrorDomain] && result.error.code == AD_ERROR_USER_INPUT_NEEDED) { 

      // Handle user input needed error 

     } 

    else if ([result.error.domain isEqual:ADAuthenticationErrorDomain] && result.error.code == AD_ERROR_SERVER_WRONG_USER) { 

      // Handle user returned by the server 
      //does not match the the user identifier error 

      } 
}];