essayer d'obtenir un jeton oauth à l'aide de fiddler
J'ai suivi Scott Allen ASP.NET MVC 5 les bases sur pluralsight, et qu'ils peuvent demander un jeton, à l'aide d'une simple page HTML, mais maintenant besoin de l'essayer et de le faire à l'aide de fiddler. la raison pour laquelle je besoin de le tester à l'aide de fiddler, c'est que c'est dans l'essence de la façon dont mon apu sera appelée. Une application de l'appareil ios est en cours d'écriture, et je ne l'api pièce.
Donc, j'entre dans le followdin dans un violon:
En-TÊTE:
POST http://localhost:53140/token HTTP/1.1
Content-Type: application/json
Host: localhost:53140
Content-Length: 50
CORPS:
grant_type=mot de passe:
{"userName":"something",
"password":"password"}
et je reçois 400 bad request.
j'ai changé le type de contenu : application/x-www-form-urlencoded, mais encore une 400.
ce que je fais mal?
MODIFIER
Même essayé de "username=nom d'utilisateur&mot de passe=mot de passe" toujours pas de joie
MODIFIER
Oups, avait la grant_type dans le mauvais endroit. ce besoin d'être dans le corps:
grant_type:mot de passe&nom d'utilisateur:nom d'utilisateur&mot de passe:mot de passe
Maintenant je obtenir un nom d'utilisateur ou mot de passe ne sont pas valides:
{"error":"invalid_grant","error_description":"Le nom d'utilisateur ou
le mot de passe est incorrect."}
je vais laisser le post actif, comme cela peut être un leurre.
Aussi, dans un violon, assurez-vous après grant_type=mot de passe&username=nom d'utilisateur&mot de passe=mot de passe il n'y a pas d'espace ou saut de ligne.
Merci de corriger les fautes d'orthographe dans ton post; maintenant, c'est clairement incorrect et que vous êtes à envoyer des gens sur un wild goose chase en essayant de deviner de quel problème que vous rencontrez.
EricLaw, ne pouvez-vous pas voir les modifications?
OriginalL'auteur CSharpNewBee | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
Dans un violon, assurez-vous après grant_type=mot de passe&username=nom d'utilisateur&mot de passe=mot de passe il n'y a pas d'espace ou saut de ligne.
OriginalL'auteur sunil
J'ai été dépannage le même message d'erreur
tout en essayant cette tutoriel moi-même. Il semble que la
UserName
être persisté sur la base de données locale est en fait l'adresse e-mail plutôt que leUserName
fourni dans le JSON de la charge utile, tout en invoquant l'/api/Account/Register
Web API. Vous pouvez le vérifier en exécutant une requête T-SQL contre le [AspNetUsers] table. (Si vous utilisez LocalDb base de données, vous pouvez ouvrir la base de données située dans le projet de App_Data l'aide d'Afficher Tous les Fichiers.)Veuillez noter qu'une fois que le nom réel de l'utilisateur à la confirmation de l'adresse e-mail, l'adresse e-mail (et éventuellement votre mot de passe) doit être codées dans l'URL lors de l'affichage de la
/api/Token
demande.Par exemple:
Espère que cette aide.
ouais, le nom d'utilisateur doit être l'adresse e-mail
OriginalL'auteur Michael Zino
Dans un violon, vous pouvez écrire
Host: localhost:17271
Contenu-Longueur: 81
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Dans RequestBody vous pouvez écrire
grant_type=mot de passe&username=Alice&mot de passe=password123&response_type=token
De l'espoir à quelqu'un de l'aider parce que mon problème est à résoudre par ce type de requestbody
OriginalL'auteur Dipal Kothari
Seul problème que je vois, c'est qu'il ressemble à vous de mettre le nom d'utilisateur et mot de passe dans le Corps de la Requête comme une chaîne Json. il faut juste être un texte sans guillemets:
grant_type=mot de passe&username=nom d'utilisateur&mot de passe=Mot de passe
Alors assurez-vous d'avoir le Contenu de Type: application/x-www-form-urlencoded
OriginalL'auteur Eldon Elledge
C'est comment je le fais à l'aide de Fiddler4 (ce guide suppose que vous sont à commencer à partir de zéro):
À ce point, j'ai tendance à changer le "DefaultConnection" dans mon Web.fichier de configuration pour pointer vers un Serveur SQL où je sera l'hôte de la ASP.NET l'Identité des tables, mais vous n'avez pas besoin d'utiliser seulement la localDb par défaut.
Le feu jusqu'à Fiddler4 puis cliquez sur l'onglet Composer sur le droit
Changer le type de demande de 'POST', puis de changer l'URL de votre site web local qui vous a couru plus tôt (VS Web API 2) e.g:
http://localhost:49598/api/Account/Register
Modifier le texte d'en-tête à la suivante:
User-Agent: Fiddler
Content-Type: application/json;charset=UTF-8
Dans le corps de la requête vous avez besoin pour composer vos données JSON qui sera le compte vous vous inscrivez par exemple:
{
"Email": "[email protected]",
"Mot De Passe": "YourPassw0rd!",
"ConfirmPassword": "YourPassw0rd!"
}
Avec votre site web de l'exécution de frapper le bouton Exécuter en haut à droite
En cas de succès, vous devriez voir une réponse 200 sur le côté gauche de Fiddler4 qui confirme le Compte de l'API de Contrôleur de l'action Registre a été appelé un nouvel utilisateur a été correctement enregistré.
Vous pouvez maintenant tester votre compte d'utilisateur en demandant un jeton d'Autorisation. Effacer le contenu du corps de la Requête en Fiddler4 et puis changer le type de POSTE si nécessaire.
Modifier le texte d'en-tête pour le nouveau ci-dessous:
User-Agent: Fiddler
Content-Type: application/json;charset=UTF-8
Dans le corps de la requête collez le texte suivant (en changeant les valeurs de votre compte évidemment)
grant_type=mot de passe&[email protected]&mot de passe=Passw0rd!
Frapper à nouveau Exécuter et vous devriez voir une réponse 200 sur le côté gauche de Fiddler4:
http://localhost:49598/Token
Double-cliquez sur la réponse pour ouvrir l'Inspecteur de l'onglet sur le côté droit de Fiddler4 qui doit afficher les informations de l'autorisation au format JSON (vous pouvez aussi le voir comme raw en cliquant sur le "Brut" de l'onglet).
Recherchez access_token= " line qui aura le jeton d'accès vous avez besoin de faire "au porteur" type de demandes.
En d'autres termes, c'est ce qui se passe maintenant:
un. Vous authentifier et d'obtenir un jeton d'authentification.
b. Toutes les demandes faites à l'API de points de terminaison sont effectuées en utilisant le porteur type de jeton et c'est dans l'en-tête de votre demande.
c. Vous pouvez passer le jeton d'authentification que vous avez reçu et ce qui est validé et votre demande est traitée.
d. Vous devez vous assurer que votre site Web API 2 points de terminaison ont [Autoriser] de décoration sur les méthodes et/ou de la classe pour s'assurer que ces zones sont sécurisées.
e. Si votre jeton d'authentification a expiré (à régler dans les App_Start\Démarrage.Auth.cs de la classe de AccessTokenExpireTimeSpan'...), alors vous aurez besoin pour gérer cela pour exemple, mon application appelle un muet méthode qui nécessite l'autorisation, en cas d'échec du côté client AngularJS code redirige l'utilisateur vers l'écran de connexion où un utilisateur valide peut demander à un autre jeton d'authentification par connexion.
*note: j'ai garder le temps d'expiration de 30 minutes pour mon auth jetons
Bien maintenant utiliser ce jeton dans Fiddler4...
Commencer Fiddler4 et dans l'onglet Composer sur le droit de modifier le type à OBTENIR (Effacer le contenu du Corps de la Requête si vous avez besoin)
Modifier le texte d'en-tête à la suivante:
User-Agent: Fiddler
Host: localhost:49598
Autorisation: Porteur your_very_long_auth_token_here
Modifier l'url à la bonne vieille api/valeurs de point de terminaison:
http://localhost:49598/api/values
Frapper le bouton Exécuter et si tout était de succès, vous devriez voir la réponse de 200 sur la gauche:
200 HTTP localhost:49598 /api/valeurs
Double-cliquez sur cette réponse et l'inspecteur de l'onglet devrait ouvrir montrant la réponse JSON
Cette conclut la façon d'utiliser Fiddler4 pour tester Oauth2 avec l'API Web 2. J'espère que quelqu'un trouve cela utile si vous constatez des erreurs, faites le moi savoir dans vos commentaires et je mettrai à jour cette réponse.
OriginalL'auteur Tahir Khalid
Je ne suis pas familier avec Scott sûr, mais normalement pour OAuth2, tu fais une requête GET à la
authorization server
avec les informations d'identification, ce qui vous donne ensuite unAuthorizationCode
qui vous puis la POSTE avec quelques autres trucs à latoken server
pour obtenir votre jeton.Je ne suis pas au courant d'un raccourci si vous pouvez obtenir un
token
par juste de transmettre les informations de connexion pour le jeton serveur.OriginalL'auteur Darrel Miller