🔗
.NET Core MVC における認証認可システム選定の経緯とその戦い(現状、ほぼリンク集)
まだ完成しきってない技術記事って
Tech投稿なのかIdea投稿なのか悩むところなんですが
完成しきってなくても技術的要素を含むならTech記事でいいのかなまぁなんでもいいやのメモ
※実装を載せられていないのでほぼ自分用のリンク集です
.NET Core の認証システム色々ありすぎるぞオルルァン
Ruby on Rails で作るならとりあえず devise でも導入しておけばド安定なのですが
.NET Core だと色々ありすぎてワケわからなくなってきたので
とりあえずまとめながら手を動かして選定しようと思いましたまる
一人で悩みながら手を動かしてたら頭ごちゃごちゃになってきたので
知見のある人はコメントとかくれると嬉しいです
前提
- データベースはMySQL
- Entity Framework Core は使わない。TableMapper(micro-ORM)としてDapperを利用
- ユーザー名+パスワード認証とTwitter認証、AppleID認証を行い1アカウントに紐づけられるようにする
手段1:ASP.NET Core Identity を使用
- Microsoft イチオシの手段
- 認証認可からIDの発行、権限の実装まで幅広く対応している
- パスワードのハッシュ化などセキュリティ的な担保が最初から十分に備わっているので自前で諸々対応する必要がない
- 実装するに当たっての自由度が低い
- Entity Framework Core を利用する場合はテーブル定義まで勝手に作ってくれてローコードで認証認可を実装することができる
- Entity Framework Core 利用のドキュメントしか整備されていないため、Entity Framework Core を利用しない場合は自前実装を行う必要がある
- やりたいことに対して提供されるシステムがデブすぎる
実装チャレンジ:
...実施中...
参考URL:
- IdentityASP.NET Core の概要 | Microsoft
- Setting up ASP Identity with dapper
- Dapper でやるにはここの情報でイケそう
- https://abhinandanaryal.info.np/article/setting-up-asp-identity-with-dapper
- ASP.NET CORE IDENTITY WITHOUT ENTITY FRAMEWORK
- ASP.NET Core Identity でログイン・ログアウトしてみたい 1 | vaguely
- ASP.NET Core Identity でログイン・ログアウトしてみたい | AddAuthentication 1 - vaguely
- ASP.NET Core Identity をテンプレートからカスタマイズ
- third-party package
- NuGet などを覗くと Entity Framework Core を利用しないものがちょこちょこある
- AspNetCore.Identity.Dapper
- Identity.Dapper
- dapper-identity
- Daarto - ASP.NET Core Identity stores by using SQL Server and Dapper
手段2:ASP.NET Core Authentication を利用
- 筆者が以前に使ったことがある
- パスワードのハッシュ化などセキュリティ的な担保は自前で実装する必要がある
- 実装するに当たって自由度が高い
- 認可については Microsoft.AspNetCore.Authorization でいい感じにやってくれる
- 外部プロバイダ(Twitterなど)での認証には
Microsoft.AspNetCore.Authentication.OAuth や Microsoft.AspNetCore.Authentication.OpenIdConnect が使えそう(確認中)
実装チャレンジ:
...実施中...
参考URL:
- Qiita
- ASP.NET Core 2.0 Authentication
- ASP.NET CoreでJWT認証のREST APIを作ってSwaggerから使う
- ASP.NET CoreでJWT認証するそこそこシンプルなサンプル(統合テスト付き)
- Sign In with AppleとのID連携現状のまとめ&Azure AD B2C連携 | Idm実験室
- Implementing Sign In with Apple in ASP.NET Core
- ASP.NET Core Social authentication without Identity
- LINE Loginを利用したWebアプリを ASP.NET Core + OpenID Connectで実装する | pierre3のブログ
- ASP.NET Core を使用した Twitter の外部サインインセットアップ
- .NET Core 2.x でJWT認証実装することでJWT完全に理解した(完全に理解したとは言ってない)
-
ASP.NET Core Authentication Jwt
とかで検索すると自分のメモが第一に引っかかってくる……つらい…… - (Qrunchサービス終了により見えなくなりました)
- https://qrunch.net/@junki555/entries/moW4a06NUKxlqRl9
-
手段3:third-party package を利用
- Nuget あたりを覗くと色々あるが AspNet.Security.OAuth.Providers が使いやすそう
- あくまで外部プロバイダーでの認証ライブラリなので、パスワード認証などは別途手段1や2で用意する必要があるようだ
実装チャレンジ:
...実施中...
参考URL:
- AspNet.Security.OAuth.Providers
- Facebook、Google、ASP.NET Core での外部プロバイダーの認証
手段4:Firebase Authentication を利用
- なんだかんだでこれが一番いい気がしてきている……
実装チャレンジ:
...実施中...
参考URL:
- Qiita
- Firebase Admin SDKで一般的なWebサービスの構成にFirebase Authenticationを使った認証処理を組み込む。
- Cloud Functions で構築したREST APIをFirebase認証で保護する。そして自前RESTサーバのAPIにもFirebase認証を適用する。
- Nuxt.js+Firebaseの認証・認可を実装した雛形プロジェクトを公開しました
- Firebase Authentication を調べてみた
その他のメモ
- .NET Core Authentication の前提技術となった OWIN仕様、Project Katana について
- ASP.NET Core | The Power of Simplicity
Discussion