Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

ASP.NET Identity 2.0の新機能
~メール連携機能のためのメール送信処理

ASP.NET Identity入門 第5回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/09/18 14:00

 前回に引き続き、ASP.NET Identity 2.0の新機能を紹介していきます。今回から数回に分けてメールと連携する機能について紹介していきます。まず今回と次回で「アカウントの確認」機能について、その動作イメージと実装方法を説明していきます。今回はメール送信処理および確認メール送信の実装まで説明します。

目次

メール連携機能の概要

 前回から紹介を始めたASP.NET Identity 2.0の新機能には、メールと連携してセキュリティを強化する仕組みがいくつかあります。主なものは次の3つです。

  • アカウントの確認: ユーザーを登録する前に、メールで確認を行います。
  • パスワードのリセット: メールでパスワードのリセットを行うためのページへのリンクを送付します。
  • 二段階認証: 登録したパスワードの他に、メールやSMSで送った一時パスワードを使い、二段階で認証を行います。

 今回と次回は、この中から「アカウントの確認」を取り上げ、どのようにメールと連携するのか詳しく紹介します。「パスワードのリセット」「二段階認証」についても順次紹介する予定ですので、楽しみにお待ちください。

 なお、今回のサンプルは8月4日にリリースされた「Visual Studio 2013 Update 3」で新たに「ConfirmationWebFormApp」プロジェクトを作成していますので、事前にUpdate 3をインストールしておいてください。

ASP.NET Identity 2.1とVisual Studio 2013 Update 3

 8月4日にASP.NET Identityの最新バージョンである2.1.0がリリースされました。その主な新機能は次のとおりです。
 

  • SignInManagerクラスの導入: 二段階認証やアカウントのロックアウト機能を簡単に使用するための、ログイン(サインイン)処理をラップするクラスです。前回の記事で紹介したアカウントのロックアウトに必要な雑多な実装が、このクラスを使用することで不要になります。

 また、同日ASP.NET Identity 2.1.0に対応した新たなテンプレートを取り込んだVS2013 Update 3がリリースされています。新テンプレートの主な変更点は以下の通りです。
 

  • 二段階認証の骨組の追加: 先述のSignInManagerクラスを使用し、パスワード以外にワンタイムパスワード等を必要とする「二段階認証」を行うための骨組が組み込まれました。この機能については、本連載の後の回で取り上げる予定です。
  • アカウントロックアウトの骨組の追加: 二段階認証と同様SignInManagerクラスを用いたアカウントロックアウトの骨組が組み込まれています。こちらについては次回の記事で紹介します。

 詳しくは以下の記事を参考にしてください。
 

アカウントの確認とは

 それではまず「アカウントの確認」機能について、もう少し詳しく紹介していきます。「アカウントの確認」とは、ユーザー登録の際に本当に登録するかどうかメールを送信し、確認を行う機能です。その主な目的はセキュリティの強化で、次のようなものがあります。

  • ユーザーが存在することの確認
  • 正規のEメールアドレスであることの確認
  • スパムなどによる登録申請でないことの確認

 アカウントの確認の処理イメージは以下のようになります。

図1 アカウントの確認の動作イメージ
図1 アカウントの確認の動作イメージ
(1)ユーザー登録

 ユーザー登録ページにアクセスし、メールアドレスを入力してユーザーの登録を行います。

(2)確認メール送信

 ユーザー登録処理後に、入力されたメールアドレス宛に「確認メール」を送ります。この確認メールには、アカウントを確認するための「確認トークン」を含んだ「アカウント確認ページ」へのリンクが含まれています。

 なお、この時点でユーザー情報は登録されますが、「未確認」状態であるためログインはできません。

(3)確認処理

 ユーザーは(2)で送付された確認メールに含まれるリンクから、アカウント確認ページを表示します。

 アカウント確認ページでは「確認トークン」の検証を行い、妥当なものであればユーザーを「確認済」状態に変更します。したがって、メールで送られたリンク以外からアカウント確認ページを表示しても、確認トークンが含まれていない、もしくは妥当でないため、アカウントの確認は失敗します。

(4)ログイン

 アカウントの確認が成功するとユーザー情報が「確認済」状態になり、ログインできるようになります。

 今回は(2)の確認メールを送信するまでを実装していきます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

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

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂き...

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:ASP.NET Identity入門

もっと読む

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5