🔗

.NET Core MVC における認証認可システム選定の経緯とその戦い(現状、ほぼリンク集)

2020/11/08に公開

まだ完成しきってない技術記事って
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:

手段2:ASP.NET Core Authentication を利用

  • 筆者が以前に使ったことがある
  • パスワードのハッシュ化などセキュリティ的な担保は自前で実装する必要がある
  • 実装するに当たって自由度が高い
  • 認可については Microsoft.AspNetCore.Authorization でいい感じにやってくれる
  • 外部プロバイダ(Twitterなど)での認証には
    Microsoft.AspNetCore.Authentication.OAuth や Microsoft.AspNetCore.Authentication.OpenIdConnect が使えそう(確認中)

実装チャレンジ:
...実施中...

参考URL:

手段3:third-party package を利用

  • Nuget あたりを覗くと色々あるが AspNet.Security.OAuth.Providers が使いやすそう
  • あくまで外部プロバイダーでの認証ライブラリなので、パスワード認証などは別途手段1や2で用意する必要があるようだ

実装チャレンジ:
...実施中...

参考URL:

手段4:Firebase Authentication を利用

  • なんだかんだでこれが一番いい気がしてきている……

実装チャレンジ:
...実施中...

参考URL:

その他のメモ

Discussion