私の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を送信していたことです。
ありがとうございました。私はコードを試しました(私はそれを2.0に適合させました)が、 "No SecurityTokenValidator available for token"というメッセージでサーバが失敗します。なぜ私がSPAから投稿したトークンはGoogleから直接送られるのか分かりません。 –
元の質問を自分の現在のコードで更新しました。 –
あなたはそれを素晴らしいものにしてくれました。 –