web-dev-qa-db-ja.com

PostmanによるASP.NET Web API承認

ASP.NET Web APIを作成し、Authorize属性をAPIコントローラーに適用しました。現在、Postmanを使用してテストしたいのですが、認証エラーが発生しています。

コントローラコードは次のとおりです。

  [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();
        }

私のリクエストは次のようになります http://prntscr.com/c8wz0b

私はこの高度なPostman RESTクライアントを使用しています http://prntscr.com/c8xafd

Postmanで承認を渡すにはどうすればよいですか?

7
Asif Hameed

EDIT 23/08/2016私はあなたがIDを使ってCookie認証をしていると思います

// 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))
                }
            });    

これは、Visual StudioのIDを使用した既定の構成です。なぜそれがセキュリティにとって良いオプションではないのか、私は議論できますが、それはポイントではありません。

あなたはそれを「郵便屋さん」で聖霊降臨することができますが、これは私がそれをする方法であるのでトリッキーです:

  1. ログインページからリクエストを作成します: enter image description here
  2. 偽造防止トークンを次の形式で取得します。 enter image description here
  3. この投稿パラメータをデータ形式で使用して、ログインページで投稿リクエストを作成します。 enter image description here

これで郵便配達員は認証Cookieを取得し、[authorize]タグでWeb APIをリクエストできます

[〜#〜]編集[〜#〜]

ツールの場合、認証ヘッダーを追加する必要があります。

  • ヘッダーフォームに移動
  • HTTPヘッダー「authorization」を追加します
  • 編集ボタンをクリックしてください;)

スクリーンショット

前の回答が削除されました

13
Mathieu

Postman Windows App 4.6.0の場合:

  1. リクエストコレクションからリクエストを選択します
  2. 「認証」タブに移動します
  3. 適切な「タイプ」を選択します。 「基本認証」
  4. 「ユーザー名」と「パスワード」を入力します
  5. 「リクエストの更新」をクリックします
2

Mathieuによって投稿された回答に加えて、私はpostman( https://www.getpostman.com/docs/interceptor_cookieshttps://www.getpostman .com/docs/capture )を使用してCookieをキャプチャします。その後それは働いた。

0
Kalpesh Patel