SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET Identity入門

「ASP.NET Identity」の登場背景と実際の使い方

ASP.NET Identity入門 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 昨年10月にリリースされたVisual Studio 2013の登場とともに、ASP.NETにもさまざまな機能が追加されました。その中の一つが新しい認証、資格管理システムである「ASP.NET Identity」です。本連載ではこの「ASP.NET Identity」を取り上げ、どんなものであるか、どのように使うのか、どんな仕組みで動いているのかを紹介していきます。連載初回の今回は、ASP.NET Identityとは何かについてお話します。その後、Visual Studio 2013に組み込まれたテンプレートを用いてプログラムを作成し、実際に動作を確かめてみましょう。

  • X ポスト
  • このエントリーをはてなブックマークに追加

ASP.NET Identityとは何か

 Visual Studio 2013(以降、VS2013)のリリース時、「One ASP.NET(*1)」のもとにASP.NETにも数多くの新機能が追加されました。今回紹介する「ASP.NET Identity」もその一つで、これまでのものとは別に一から設計された新たな認証、資格管理システムです。

 でも、どうして新しいものを作る必要があったのでしょうか。この疑問に答えるために、これまでのASP.NETでの認証、資格管理システムについて、順に振り返っていきましょう。

*1)One ASP.NET

 ASP.NETに含まれるWebフォーム、MVC、Web API、SignalRといったさまざまなフレームワークを、柔軟に組み合わせてWebアプリケーションを作成できるよう、ライブラリやテンプレートを見直そうというビジョンのことです。詳しくは次のblogエントリを参照してください。
 

ASP.NET誕生(ASP.NET 1.0~)

 2002年にASP.NETが誕生したときはASP.NETの認証、資格管理システムには、フォーム認証をベースとしたAPIが用意されました。しかし、資格情報を入力する画面や、認証、承認処理の多くを自前で実装する必要がありました。また、ユーザーの資格情報を保管するには、独自にSQL Serverなどのデータベースやテキストファイル、XMLファイルを用意して管理する必要がありました(図1)。

図1:ASP.NET 1.0のサポート範囲
図1:ASP.NET 1.0のサポート範囲

ASP.NETメンバーシップ登場(ASP.NET 2.0~)

 そこで、2005年にリリースされたASP.NET 2.0では、資格情報を入力し、認証、承認を行うための各種ログインコントロールに加え、資格情報データストアを自動生成し、そのアクセスを行うためのAPIを提供する「ASP.NETメンバーシップ」が登場しました(図2)。ログインコントロールとASP.NETメンバーシップを使うことで、ユーザーの作成、削除などの管理を行う専用ページ、および管理情報を保管するデータベース、さらに認証、資格情報の取得まで、ほとんどコードを書くことなく実現できるようになりました。

図2:ログインコントロール、ASP.NETメンバーシップのサポート範囲
図2:ログインコントロール、ASP.NETメンバーシップのサポート範囲

 しかし、大きな力には代償が伴うものです。ASP.NETメンバーシップは確かに手軽なのですが、次のような問題がありました。

資格情報のデータベーススキーマはSQL Server限定

 SQL Server以外のデータベースを使用するには、サードパーティ製の「メンバーシッププロバイダー」を使うか、自作する必要があります。

資格情報をカスタマイズすると、管理が大変になる

 資格情報に「誕生日」といった独自の情報を追加することは可能です。しかし、基本となるユーザー名などの資格情報とは別のテーブルに追加されてしまうため、メンテナンスが難しくなってしまいます。

リレーショナルデータベースを前提としている

 ASP.NETメンバーシップの各機能を提供する「メンバーシッププロバイダー」を自作すれば、SQL Server以外に資格情報を保管することはできます。しかし、あくまでその仕組みはリレーショナルデータベースを前提としています。そのため、キーバリューストア(KVS)のようないわゆる"NoSQL"を相手に実装すると、明示的に「未実装」としてNotSupportExceptionをスローするように実装しなければならないメンバーが大量にあり、直観的とはいえません。

ユニットテストが難しい

 近年の開発では、ユニットテストを始めとしたコードによる自動化テストが当たり前となってきています。しかし、ASP.NETメンバーシップが生まれた時代はそうではありませんでした。そのため、ASP.NETメンバーシップはスタブ、モックなどを利用したユニットテストがしやすい構造にはなっていません。

ソーシャルログイン未対応

 近年のSNSの隆盛により、Facebook、Google、Twitterといった外部のソーシャルアカウントを認証に使いたいというケースも増えています。しかし、ASP.NETメンバーシップでは、これを実現するのは容易ではありません。

次のページ
ASP.NET Identity登場(VS2013)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ASP.NET Identity入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高野 将(タカノ ショウ)

<個人紹介>新潟県長岡市在住の在宅リモートワークプログラマー。家事や育児、仕事の合間に長岡IT開発者勉強会(NDS)、Niigata.NET、TDDBCなどのコミュニティに関わったり、Web記事や書籍などの執筆を行ったりしている。著書に『アプリを作ろう! Visual C#入門 Visual C# 2017対応』(日経BP社、2017)など。<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7709 2014/04/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング