ASP.NET Web API 2: Comment faire pour me connecter avec l'authentification externe des services?
Selon ce post http://www.asp.net/web-api/overview/security/external-authentication-services...
Je suis en mesure de se connecter avec un local service d'authentification (avec la nouvelle ASP.NET l'identité de cadre)
mais je ne peux pas trouver une soluce pour appeler correctement (à partir d'une application mobile ou Facteur) la valeur par défaut de l'API web généré dans Visual Studio 2013 SPA modèle.
Quelqu'un peut m'aider?
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème aujourd'hui et a trouvé la solution suivante:
À d'abord obtenir tous les fournisseurs disponibles
Le message de réponse est une liste au format json
Maintenant envoyer une requête GET à l'url du fournisseur que vous souhaitez utiliser. Vous allez être redirigé vers la page de connexion du fournisseur externe. Remplissez vos informations d'identification et le vous allez être redirigé vers votre site. Maintenant analyser le
access_token
à partir de l'url.Si l'utilisateur a déjà un compte local, la
.AspNet.Cookies
cookie est créé et vous êtes fait. Si pas, seulement le.AspNet.ExternalCookie
cookie est créé et vous devez vous inscrire à un compte local.Il existe une api pour savoir si l'utilisateur est inscrit:
La réponse est
Pour créer un compte local pour l'utilisateur, appelez
Maintenant envoyer la même demande à l'url du fournisseur comme avant
Mais cette fois que l'utilisateur a déjà un compte et obtient authentifié. Vous pouvez le vérifier en appelant
/api/Account/UserInfo
de nouveau.Maintenant extraire le
access_token
à partir de l'url. Vous devez ajouter leAuthorization: Bearer [access_token]
en-tête pour chaque demande que vous faites.Uri.Fragment
de la propriété.Uri
classe etHttpUtility.ParseQueryString
méthode.Uri uri= new Uri("http://localhost:15359/#access_token=[..]&token_type=bearer&expires_in=[..]&state=QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1"); string access_token = HttpUtility.ParseQueryString(uri.Query).Get("access_token");
GetUserInfo
de nouveau après l'inscription, je reçois une référence nulle exception, parce que mon émetteur est l'AUTORITÉ LOCALE après la connexion et inscription via Facebook (dans mon exemple).J'ai trouvé un autre post assez de détails comment cette authentification externe fonctionne. Le client est WPF et le serveur utilise ASP.NET l'Identité.
Pour ceux qui essaient d'utiliser l'Api Web 2 Externe Connexion avec Facebook dans l'Application Android ce post, c'est d'expliquer que la première partie de ce que nous avons à faire. Voici un lien explicatif de l'ensemble de l'image:
[L'accès authentifié à WebAPI via Facebook jeton à partir de l'Application Android