はじめに
以下の記事で、Angular な SPA で Google の OAuth 認証を行いました。
実際には、この時取得したアクセストークンをサーバーサイドに送信して、検証を行わないといけません。
ネットで調べた限りでは、セキュリティに配慮しているサイトほど、「必ず」アクセストークンの検証をすべきとなっていました。
この記事では、Google の OAuth 認証で取得したアクセストークンを検証する方法をご紹介します。
なお、環境は以下のようになります。
- Windows 10
- Visual Studio Community 2017
- .NET Core 2.1
- コンソールアプリケーション
Visual Studio の設定
Visual Studio で、.NET Core のコンソールアプリケーションテンプレートより、コンソールアプリケーションのプロジェクトを作成します。
そして、アクセストークンの検証をするためにGoogle.Apis.Auth
というライブラリを NuGet よりインストールします。
これで準備完了です。
サンプルソース
アクセストークンの検証はかなり複雑なのですが、Google.Apis.Auth
を使用すると簡単に検証を行うことができます。
ソースコードを確認しましたが、検証エラー時は例外が発生するようなのでそのような実装にする必要があります。
using System; using System.Threading.Tasks; using Google.Apis.Auth; using Google.Apis.Auth.OAuth2; namespace ConsoleApp2 { class Program { static void Main(string[] args) { string id_token = "Set Access Token"; Task task = ValidateTokenAsync(id_token); task.Wait(); Console.ReadKey(); } static private async Task ValidateTokenAsync(string id_token) { try { var validPayload = await GoogleJsonWebSignature.ValidateAsync(id_token); Console.WriteLine("Token is valid !!"); return; } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine("Token is invalid !!"); } } }