2017-02-14 2 views
0

ADAL: Impossible d'utiliser "prompt = admin_consent" comme paramètre de requête supplémentaire dans Xamarin.PCLADAL Impossible d'utiliser admin_consent dans Xamarin.PCL

Quand je suis en train d'utiliser le code suivant dans Xamarin PCL

result = await authContext.AcquireTokenAsync(AppIdURI, ClientId, RedirectUri, PlatformParameter, UserIdentifier.AnyUser, "prompt=admin_consent"); 

Je reçois une exception:

paramètre de requête en double 'invite' à extraqueryparameters

J'utilise cet appel pour ajouter des autorisations pour l'application au niveau de l'administrateur dans un scénario multi-clients. Sans "prompt = admin_consent" je ne peux pas autoriser l'application pour tous les utilisateurs. Lorsque j'utilise le comportement par défaut, ADAL affiche le consentement pour un administrateur lors de la première connexion, mais n'enregistre pas les modifications dans Azure AD.

Peut-être que quelqu'un sait comment gérer ce problème.

Merci

Mise à jour 15.02.2017

Je crée PlatformParameter dans Xamarin Android Project:

var PlatformParameter =new PlatformParameters(this); 

où 'ceci' est 'l'activité'. On dirait qu'il génère un paramètre 'prompt' par défaut.

Ce problème est valable uniquement pour les Xamarin, il n'y a aucun problème dans UWP et WPF ou ASP.NET et seulement dans le scénario multi locataire.

+0

Possible duplicata de [Le consentement de l'utilisateur ADAL a été déclenché même si l'administrateur a déjà consenti] (http://stackoverflow.com/questions/30638506/adal-user-consent-triggered-even-when-admin-has-already-consented – SushiHangover

+0

Pouvez-vous partager l'URL de connexion complète générée par votre code? Mon hypothèse est que l'un de vos autres paramètres définit également une valeur d'invite. –

+0

SushiHangover, ce n'est pas un doublon, et le sujet que vous avez pointé concerne un autre problème. Ma question est actuelle pour la version Xamarin d'ADAL seulement. Je n'ai aucun problème avec le consentement des applications quand je force à utiliser "prompt = admin_consent" dans UWP, WPF, Console app, ASP.NET. –

Répondre

1

Le problème ici est que la surcharge PlatformParameter que vous passez est déjà l'exemple chaîne de requête « rapide » dans votre URL de connexion. Ainsi, lorsque vous ajoutez manuellement une autre chaîne de requête avec "invite", elle voit le paramètre dupliqué.

Vous devez vous assurer que PlatformParameter est défini sur 'PromptBehavior.Auto' ou que les paramètres de chaîne de requête supplémentaires ne fonctionneront pas. Faites-moi savoir si cela aide!

+0

Merci pour le conseil. Mais 'PromptBehavior.Auto' n'est pas disponible dans la version Xamarin (PCL) d'ADAL. PlatformParameter est PlatformParameters (this), où c'est Activity. On dirait qu'il génère un paramètre 'prompt' par défaut. –