2

私のSPAアプリケーション(Aureliaを使用)がASP.NET Core 2 Web APIを呼び出します。 Google OIDCプロバイダを使用してユーザーを認証し、同じ方法でWeb APIを保護する必要があります。SPA(Aurelia)+ ASP.NET Core WebAPI + Google認証

現在、私はクライアント(SPA)側でユーザーを認証し、IDトークンとアクセストークンを取得できます。各API呼び出しで、ヘッダーにアクセストークンを送信します。

トークンを検証してAPIへのアクセスを許可または拒否するサーバー側の処理方法がわかりません。私は外部のログインプロバイダを追加する方法を公式の文書に従ったが、それはサーバー側のMVCアプリケーションに対してのみ動作するように見える。

これを行う方法は簡単ですか?

私はIdentityServer4がこのシナリオをサポートしていると思いますが、私がやりたいことはあまりにも複雑なようです。私は自分の身元確認/認証サーバーは結局必要ありません。

更新:ミロスラフ・ポポヴィッチの回答に基づいて

、このようなASP.NETコア2.0ルックスのための私の設定:

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(o => 
    {   
    o.Authority = "https://accounts.google.com"; 
    o.TokenValidationParameters = new TokenValidationParameters 
    { 
     ValidIssuer = "accounts.google.com", 
     ValidAudience = "xxxxxxxxxxxxx.apps.googleusercontent.com", 
     ValidateAudience = true, 
     ValidateIssuer = true 
    }; 
    }); 

    services.AddMvc(); 
} 

そしてConfigure()に、私はapp.UseAuthentication()を呼び出します。

この設定を使用すると、エラーメッセージが取得されます。トークンにSecurityTokenValidatorを使用できません。

アップデート2:私はそれが仕事作っ

。サーバー構成が正しい。問題は、id_tokenの代わりにAPIにaccess_tokenを送信していたことです。

答えて

1

既にアクセストークンを持っているので、認証トークンを使用して認証を追加する必要はありません。あなたはこれらの行(テストされていない)に沿って何かが必要になります

// Inside Startup.cs, ConfigureServices method 
services 
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) 
    .AddJwtBearer(
     options => 
     { 
      var tokenValidationParameters = new TokenValidationParameters 
      { 
       ValidIssuer = "accounts.google.com", 
       ValidateAudience = false 
      }; 

      options.MetadataAddress = "https://accounts.google.com/.well-known/openid-configuration"; 
      options.TokenValidationParameters = tokenValidationParameters; 
    }); 

// Inside Startup.cs, Configure method 
app.UseAuthentication(); // Before MVC middleware 
app.UseMvc(); 

// And of course, on your controllers: 
[Authorize] 
public class MyApiController : Controller 

This postポール・ロウからいくつかのより多くのを助けるが、ASP.NETコア1.xおよび認証APIは2.0でビットを変更するために、それが書かれていることに注意してください可能性があります。

this questionのように、ここには多くの情報があります。

+0

ありがとうございました。私はコードを試しました(私はそれを2.0に適合させました)が、 "No SecurityTokenValidator available for token"というメッセージでサーバが失敗します。なぜ私がSPAから投稿したトークンはGoogleから直接送られるのか分かりません。 –

+0

元の質問を自分の現在のコードで更新しました。 –

+0

あなたはそれを素晴らしいものにしてくれました。 –

関連する問題