web-dev-qa-db-fra.com

Autorisation d'API Web ASP.NET avec Postman

J'ai créé une API Web ASP.NET et appliqué l'attribut Authorize au contrôleur API. Maintenant, je veux le tester en utilisant Postman mais je reçois une erreur d'autorisation.

Le code du contrôleur est:

  [Authorize]
        [HttpPost]
        public IHttpActionResult Attend([FromBody] int gigId)
        {

            var attendance = new Attdendance
            {
                GigId =  gigId,
                AttendeeId = User.Identity.GetUserId()
            };

            _context.Attdendances.Add(attendance);
            _context.SaveChanges();
            return Ok();
        }

Ma demande ressemble à ceci http://prntscr.com/c8wz0b

J'utilise ce client Postman Rest avancé http://prntscr.com/c8xafd

Comment puis-je passer l'autorisation dans Postman?

5
Asif Hameed

EDIT 23/08/2016 Je suppose que vous êtes en authentification par cookie avec identité

// Enable the application to use a cookie to store information for the signed in user
            // and to use a cookie to temporarily store information about a user logging in with a third party login provider
            // Configure the sign in cookie
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                Provider = new CookieAuthenticationProvider
                {
                    // Enables the application to validate the security stamp when the user logs in.
                    // This is a security feature which is used when you change a password or add an external login to your account.  
                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                        validateInterval: TimeSpan.FromMinutes(30),
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });    

C'est la configuration par défaut avec identité dans Visual Studio. Je peux expliquer pourquoi ce n'est pas une bonne option pour la sécurité, mais ce n'est pas le but.

Vous pouvez y aller avec "postman" mais c'est délicat Voici comment je le fais:

  1. Faites une demande sur votre page de connexion:  enter image description here
  2. Obtenez le jeton anti-falsification sous la forme:  enter image description here
  3. Faites une demande de publication sur la page de connexion avec cette publication params sous forme de données:  enter image description here

Maintenant, votre facteur reçoit le cookie d'authentification et vous pouvez demander une API Web avec la balise [authorize]

EDIT

Pour l'outil, vous devez ajouter un en-tête d'autorisation.

  • Allez dans le formulaire En-têtes 
  • Ajouter l'en-tête HTTP "autorisation" 
  • Cliquez sur le bouton d'édition et voilà;)

capture d'écran

Réponse précédente supprimée  

9
Mathieu

Pour Postman Windows App 4.6.0:

  1. Sélectionnez votre demande dans votre collection de demandes
  2. Allez dans l'onglet "Autorisation"
  3. Choisissez un "Type" approprié, par exemple. "Authentification de base"
  4. Entrez "Nom d'utilisateur" et "Mot de passe"
  5. Cliquez sur "Demande de mise à jour"
2
Georg Patscheider

En plus de la réponse publiée par Mathieu, je devais installer l'extension interceptor pour postman ( https://www.getpostman.com/docs/interceptor_cookies , https://www.getpostman.com/docs/ capture ) pour capturer les cookies. Après cela a fonctionné.

0
Kalpesh Patel