2016-07-26 10 views
1

cookie認証を使用して、MVCサイトからWebApiにajaxリクエストを作成します。 BUT 問題が発生しました。クロスドメインクッキー認証のトラブルWebApi ASP.NET

ControllerContext.RequestContext.Principal 

ヌルです。要求に応じて存在しない限り、Cookieを認識できないようです。 私は2つのアプリケーションを持っています 1 - MVCメイン 2 - WebApi additional MVCはWebApiを要求します。どちらも共通のアイデンティティユーザーを使用します。ここで

は私の実装IAppBuilder

public static void Register(IAppBuilder app) 
    { 
     app.CreatePerOwinContext(MyDbContext.Create); 
     app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 
     app.UseCookieAuthentication(new CookieAuthenticationOptions() 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      CookieName = ".AspNet.Cookies", 
      CookieSecure = CookieSecureOption.Never, 
      AuthenticationMode = AuthenticationMode.Active 
     }); 

     app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
    } 
  • マイApplicationManagerのため

    1. 登録されている:

      WEBAPIとMVCで

      public class ApplicationUserManager : UserManager<ApplicationUser> { 
      public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store) 
      { 
      } 
      
      public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
      { 
          var appDbContext = context.Get<MyDbContext>(); 
          var appUserManager = new ApplicationUserManager(new UserStore<ApplicationUser>(appDbContext)); 
          return appUserManager; 
      } } 
      
    2. 同じいるMachineKeys

      <のmachineKey解読= "AES" decryptionKey = "F7F ..." 検証= "SHA1" validationKey = "DD2 ..."/>

    3. 承認で覆われ、コントローラが

      [Authorize] 
      [EnableCors(origins: "*", headers: "*", methods: "*", SupportsCredentials = true)] 
      public sealed class BalanceController : ApiController ... 
      
    4. 属性

    助けてください。

  • 答えて

    0

    SupportCredentialsを有効にすると、origins"*"に設定することはできません。タイトルhereの上の段落を参照してください。

    originsを特定のものに設定すると機能しますか?

    クライアントが/tokenエンドポイントにヒットした場合、または許可が発生した後に実際のエンドポイントにヒットした場合も、リクエストは失敗しますか?

    /tokenエンドポイントに到達できない場合は、Microsoft.AspNet.WebApi.Corsをアンインストールし、代わりにMicrosoft.Owin.Corsをインストールする必要があります。

    関連する問題