このページは、ASP.NET Core 2.0 アプリケーションを JWT でセキュアする (Auth0) の記事をベースに、ASP.NET Core 3.0 で JWT を使用する例を示すページです。
注意
- ASP.NET Core 3.0 の API アプリケーションを新規作成したときに追加されているサンプルコントローラ (WeatherForecastController) を JWT を使って認証付きにするものです。
- API へのアクセスを認証する までの流れを試しています。
例
Startup.cs
appsettings.json
"Jwt"
の設定を追加しています。
- Key は短すぎるとトークン生成処理の時 (後述の TokenController BuildToken() 時) にエラーになります。16文字以上あるとエラーにならないようです。
- Issuer は稼働するサービスの URL にするとよいですが、特に制約はありません。 (
"Issuer": "Issuer"
でもいい)
Controller/WeatherForecastController.cs
(サンプルとして最初から追加されているコントローラ)
- もともとのこのコントローラのルート設定は
[Route("[controller]")]
ですが、変えたほうがわかりやすい気がします。(下記の理由)
- コントロールの追加 (Controllers フォルダを右クリック > 追加 > コントローラ) で追加したコントローラの初期のルート設定は
[Route("api/[controller]")]
- この後追加するトークン発行用のコントローラ (Auth0の記事に記載) のルート設定も
[Route("api/[controller]")]
実行したときに最初に表示されるURLは、Properties/launchSettings.json
の「launchUrl
」の設定を変更することで変更できます。
Controller/TokenController.cs
(トークン発行用のコントローラ。新規追加)
Auth0の記事に記載のある、トークン発行用のコントローラです。
確認
下記を確認して、問題なければ OK です。
- 実行してみて /api/weatherforecast にアクセスした時、ブラウザに 401 エラーが表示される
- API へのアクセスを認証する のように Postman や cURL などで /api/token にアクセスしてみてトークンが取得できる
- 取得したトークンをもとに Postman や cURL などで /api/weatherforecast にアクセスしてみて JSON の応答がある