Pertanyaan Tidak dapat mengotorisasi permintaan API WEB dari situs di proyek yang berbeda


Saya punya, apa yang saya pikir adalah pola solusi yang sangat umum, di Visual Studio:

  1. Proyek ASP.NET MVC yang memiliki sejumlah sudut pandang yang didukung ASP.NET
  2. WEB API v2 proyek yang melayani data ke angularjs

Saya menggunakan OWIN dengan auth disimpan dalam pendekatan cookie aplikasi Proyek MVC dan WEB API memiliki konfigurasi ini:

    app.UseCookieAuthentication(new CookieAuthenticationOptions             {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login"),
        LogoutPath = new PathString("/Account/Logout"),
        CookieDomain = CloudConfigurationManager.GetSetting("AuthCookieDomain"),
        CookieSecure = CookieSecureOption.Always,
        CookiePath = "/",
        CookieHttpOnly = false,
        ExpireTimeSpan = TimeSpan.FromDays(365),
        SlidingExpiration = true,           });

    // Use a cookie to temporarily store information about a user logging in with a third party login provider          app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

API Web meminta setiap panggilan untuk diautentikasi:

    config.Filters.Add(new AuthorizeAttribute());

Cors diaktifkan dan Cors untuk OWIN diinstal dalam proyek Web API. Kedua proyek berjalan di bawah https: // localhost tetapi dengan port yang berbeda saat ini Jika saya login ke situs MVC melalui browser dan melakukan GET pada metode web api, semuanya baik. Namun, jika situs tersebut melakukan permintaan, itu mendapat izin dari pihak yang tidak berwenang.

Ada saran?


7
2018-06-29 14:55


asal


Jawaban: