az blog

UnityやASP.NET Core、それらの周辺技術についてまとめていきます。

【MagicOnion】SwaggerでRequestするときのHeaderに認証情報を追加する

概要

最近、Grpcによる通信が普及し始めています。

Untiy内でGrpcを使用したい!というときにネットで色々検索すると、MagicOnionというライブラリ目にすることがあると思います。

今回は、そのMagicOnionで作成したServiceをテストするときに、MagicOnionが提供しているSwaggerから認証情報付きで関数を実行する方法を備忘録として残していきたいと思います。

方針

まず、簡単にMagicOnion側のSwaggerからServiceへのルーティング部分を説明します。

MagicOnionでは以下の2つのミドルウェアを組み合わせることで、SwaggerからServiceのメソッドを実行しています。

  1. MagicOnionSwaggerMiddleware
  2. MagicOnionHttpGatewayMiddleware

1がSwaggerを立ち上げるためのミドルウェア

2がHttp1からGrpcに変換するためのミドルウェア

になっています。

つまり、2のタイミングでHeaderに認証情報を追加することができれば、目的を達成することができます。

そして、追加する方法としてさっきからちらほら名前が出てきているASP.NET Coreのミドルウェアという仕組みを使います。ミドルウェアについて詳細に知りたい方は公式ドキュメントを読んでください。

実装

MagicOnionHttpGatewayMiddlewareをUseMiddlewareする前にUseを呼び出すことで、Headerに認証情報を追加しています。

例として、key = "x-auth-key", value = "id-token"として追加しています。