2017-08-20 20 views
1

古い認証を.NET 2.0に変換しようとしています。.NET Core 1.1から2.0へのWeb API認証の移行

app.UseJwtBearerAuthentication(new JwtBearerOptions 
{ 
    AutomaticAuthenticate = true, 
    IncludeErrorDetails = true, 
    Authority = "https://securetoken.google.com/xxxxx", 
    TokenValidationParameters = new TokenValidationParameters 
    { 
     ValidateIssuer = true, 
     ValidIssuer = "https://securetoken.google.com/xxxxxx", 
     ValidateAudience = true, 
     ValidAudience = "xxxx", 
     ValidateLifetime = true, 
    }, 
}); 

私の新しいコードは以下の通りです:

public void Configure(...) 
{ 
    ... 
    app.UseAuthentication(); 
    ... 
} 

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) 
     .AddJwtBearer(options => 
     { 
      options.RequireHttpsMetadata = false; 
      options.IncludeErrorDetails = true; 
      options.Authority = "https://securetoken.google.com/xxxxxx"; 
      options.TokenValidationParameters = new TokenValidationParameters 
      { 
       ValidateIssuer = true, 
       ValidIssuer = "https://securetoken.google.com/xxxxx", 
       ValidateAudience = true, 
       ValidAudience = "xxxxxx", 
       ValidateLifetime = true, 
      }; 
     }); 
    ... 
    services.AddMvc(); 
    services.AddAuthorization(......); 
} 

しかし、2.0で、私は404応答を取得しています私は、次のコードを持っていました。私のエンドポイントから[Authorize]属性を削除すると、それは機能します。私の出力ウィンドウには、このことを示しています

Microsoft.AspNetCore.Hosting.Internal.WebHost:情報:情報:http://localhost:62423/api/users/info
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService GET 開始HTTP/1.1をリクエスト を認可ユーザーに失敗しました: (ヌル)。 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:情報: フィルタ 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'の要求で認証に失敗しました。 Microsoft.AspNetCore.Mvc.ChallengeResult:情報 認証スキームを使用したChallengeResult()を実行しています。

Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:情報: AuthenticationScheme:Identity.Applicationに挑戦しました。 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:情報:24.0837ms Microsoft.AspNetCore.Hosting.Internal.WebHostで 実行されたアクション SORTE.API.ContentManager.Controllers.UsersController.Info (SORTE.API.ContentManager):情報:情報:リクエスト は35.2446ms 302 Microsoft.AspNetCore.Hosting.Internal.WebHostに仕上がっ依頼 開始HTTP/1.1 http://localhost:62423/Account/Login?ReturnUrl=%2Fapi%2Fusers%2Finfo
Microsoft.AspNetCore.Hosting.Internal.WebHost GET:情報: は5.8149で終了要求ms 404

ログのエラーから、それは/Account/Loginにリダイレクトしようとしているようですが、私はそのようなエンドポイントを持っていません、私のプロジェクトはWeb APIです。

いくつかの設定がありません。

答えて

3

私はthisを読むまで同じ問題に直面していました。

Authorize属性を使用すると、実際にはデフォルトで最初の認証システムにバインドされます。

ソリューションは、使用するespecifyウィッヒスキーム(JwtBearer)だった:今私は(有効なトークンを持つ)状態200と401を得ることができ

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Policy = "PoliceName")] 

-

+0

(不正無効なトークンを)ありがとうございます!私はこの問題に約1週間悩まされていました。今、私の主張の変圧器は動作していませんが、それは別の問題です... – RBasniak

+0

うわー。ワオ。ありがとうございました。 –

+0

asp.netコア2.0のアップデート以来、同じ問題に直面してくれてありがとう! – Geotinc

関連する問題