[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]

-[[戻る>OWIN]]

* 目次 [#oa9565ec]
#contents

*概要 [#wf88fe34]
-フォーム認証ではなく、OWINの認証用ミドルウェア(Owin.Security)を使用している。
-特に、ソーシャルログインを行う場合、OWINで提供されるライブラリを使用する必要がある。
--Microsoft.Owin.Security.OAuth
--Microsoft.Owin.Security.Facebook
--Microsoft.Owin.Security.Twitter
--Microsoft.Owin.Security.Google
--Microsoft.Owin.Security.MicrosoftAccount

**特徴 [#e0ffc016]
***One ASP.NET Identity System [#ab6e465b]
ASP.NET frameworks ( ASP.NET MVC, Web Forms, Web Pages, Web API and SignalR ) で使用可能。

***ユーザーに関するプロファイルデータを容易にプラグイン可能 [#b648e135]
Entity Frameworkのコードファーストを使用し、POCOクラスを拡張することが可能。

***永続化の制御 [#qe73efd1]
-すべてのユーザー情報をデータベース内に格納
-Entity FrameworkのCodefirstを使用
-別のストレージ・プロバイダーにプラグイン可能。

***ユニットテスト容易性 [#wc0e4c35]

***シンプルなロールプロバイダ [#w1380d26]
簡単に、「管理者」等のロールを作成し、ロールにユーザを追加ができる。

***クレームベース認証 [#rf5e3362]
クレームベース認証をサポート

***外部ログイン [#j8540631]
簡単に、マイクロソフトアカウント、FacebookやTwitterやGoogleなどの外部ログインを追加できる。

**機能 [#l1b690dc]
***基本機能 [#o62e1016]
-サインアップ
-サインイン・サインアウト
-アカウントの編集
--パスワード
--電話番号
--2要素認証のON/OFF
--外部ログインの一覧と削除

***新機能 [#w2109450]
-サインアップの機能強化
--ユーザ名の重複不可設定
--パスワード検証
--2要素認証
--アカウント確認

-サインインの機能強化
--SecurityStamp
--外部ログイン

-運用の機能強化
--アカウント・ロックアウト
--パスワード・リセット
--管理機能
---アカウント編集・削除
---ロール編集・削除

***[[ASP.NET Forms認証]]との違い [#vbee03ec]
-.NET Web Development and Tools Blog~
Understanding OWIN Forms authentication in MVC 5~
https://blogs.msdn.microsoft.com/webdev/2013/07/03/understanding-owin-forms-authentication-in-mvc-5/

|No.|Features|Asp.Net Forms Authentication|OWIN Forms Authentication|h
|1|Cookie Authentication&br;クッキー認証|Yes|Yes|
|2|Cookieless Authentication&br;Cookieなしの認証|Yes|BGCOLOR(red):No|
|3|Expiration&br;有効期限|Yes|Yes|
|4|Sliding Expiration&br;スライディング有効期限|Yes|Yes|
|5|Token Protection&br;トークンの保護|Yes|Yes|
|6|Claims Support&br;クレームのサポート|BGCOLOR(red):No|Yes|
|7|Web Farm Support&br;Webファームのサポート|Yes|Yes|
|8|Unauthorized Redirection&br;無断リダイレクト|Yes|Yes|

**資格情報へのアクセス [#w4a7fdb2]
[[Entity Framework]](Microsoft.AspNet?.Identity.EntityFramework)が使用されており、~
[[Entity Framework]]マイグレーションを使うことで、簡単にユーザー情報に項目を追加できる。

また、任意のストレージを使用するようにカスタマイズできる。~
この際に、[[Entity Framework]]をキャンセルすることもできる。

-ASP.NET IdentityのUserStoreを自分で作る - Qiita~
http://qiita.com/mocha/items/a56f66660f5b39d8f1fc
-ASP.NET Identityで独自データストアからデータを取得する(ログインからロールまで)~
http://blog.okazuki.jp/entry/2015/08/20/214212
-Exorcising Entity Framework from ASP.NET Identity – Mark Johnson's Blog~
http://blog.markjohnson.io/exorcising-entity-framework-from-asp-net-identity/
-ASP.NET Identity: Custom stores - Stack Overflow~
http://stackoverflow.com/questions/28193680/asp-net-identity-custom-stores

*実装 [#h9bcf6f6]
**拡張テンプレートを取得 [#gffbd798]
-Account Confirmation and Password Recovery with ASP.NET Identity (C#)~
http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity

***PMからInstall-Packageする。 [#md38039f]
-以下を実行する。
 Install-Package SendGrid
 Install-Package -Prerelease Microsoft.AspNet.Identity.Samples

***追加・更新されるモジュール [#pe6b052d]
Microsoft.AspNet.Identity.Samplesで、以下のモジュールが適用される。

-更新が大きいモジュール。

--\App_Start\
---IdentityConfig.cs

--\Controllers\
---ManageController.cs

--\Views\Home\
---Index.cshtml
---AccountController.cs

--\Views\Manage\
---Index.cshtml
---ManageLogins.cshtml

--\Content\Site.css

-追加されるモジュール。

 <Compile Include="Controllers\RolesAdminController.cs" />
 <Compile Include="Controllers\UserAdminController.cs" />
 ・・・
 <Compile Include="Models\AdminViewModel.cs" />
 ・・・
 <Content Include="Views\UsersAdmin\Index.cshtml" />
 <Content Include="Views\UsersAdmin\Edit.cshtml" />
 <Content Include="Views\UsersAdmin\Details.cshtml" />
 <Content Include="Views\UsersAdmin\Delete.cshtml" />
 <Content Include="Views\UsersAdmin\Create.cshtml" />
 <Content Include="Views\RolesAdmin\Index.cshtml" />
 <Content Include="Views\RolesAdmin\Edit.cshtml" />
 <Content Include="Views\RolesAdmin\Details.cshtml" />
 <Content Include="Views\RolesAdmin\Delete.cshtml" />
 <Content Include="Views\RolesAdmin\Create.cshtml" />
 <Content Include="Views\Account\DisplayEmail.cshtml" />

**基本機能 [#w37a8304]
***サインアップ [#wee4d73c]
基本のテンプレートに実装されている。

***サインイン・サインアウト [#ref05246]
基本のテンプレートに実装されている。

***アカウントの編集 [#p7eb3ef0]
基本のテンプレートに実装されている。

-パスワード
-電話番号
-2要素認証のON/OFF
-外部ログインの一覧と削除

**サインアップの機能強化 [#q361d57e]

***ユーザ名の重複不可設定 [#d1e95ffc]
基本のテンプレートに実装されている。

***パスワード検証 [#k87590d7]
基本のテンプレートに実装されている。

***2要素認証 [#z03ea4a7]
以下で使用される。
-アカウント確認(E-mail)
-アカウント編集(電話番号、SMS)
-パスワード・リセット(E-mail)

-参考
--ASP.NET Identity : 二要素認証 (2FA) の実装 – Tsmatz~
https://blogs.msdn.microsoft.com/tsmatsuz/2014/09/02/asp-net-identity-2fa/
---ASP.NET Identity で二要素認証を使う - SMS 編 - kendik.net~
http://kendik.hatenablog.com/entry/2014/08/21/033441
---ASP.NET Identity で二要素認証を使う - E-mail 編 - kendik.net~
http://kendik.hatenablog.com/entry/2014/08/22/013330

***アカウント確認 [#ddd90dce]
以下を参考にして実装する。

-参考
--E-Mail Confirmation の実装~
https://blogs.msdn.microsoft.com/tsmatsuz/2014/07/13/asp-net-identity-e-mail-confirmation/
--Account Confirmation and Password Recovery with ASP.NET Identity (C#)~
http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity

**サインインの機能強化 [#vbc9690a]

***SecurityStamp [#obd1b0ed]
基本のテンプレートに実装されている。~
アカウントの編集後、他のブラウザはサインアウトされる。

-参考

--ASP.NET Identity のセキュリティスタンプ機能を使う - kendik.net~
http://kendik.hatenablog.com/entry/2014/08/17/212645

--What is ASP.NET Identity's IUserSecurityStampStore<TUser> interface? - Stack Overflow~
http://stackoverflow.com/questions/19487322/what-is-asp-net-identitys-iusersecuritystampstoretuser-interface

***外部ログイン [#ue73f193]
以下の手順に従い、実装できる。

-Microsoft アカウント
--ASP.NET Identity を使って Microsoft アカウントで認証する~
http://kendik.hatenablog.com/entry/2014/08/25/020152
---IIS Express で仮想サイトに複数のホスト名を割り当てる - しばやん雑記~
http://blog.shibayan.jp/entry/20130306/1362572283

今は、Microsoft アカウントで、~
localhostも登録できるようになっている。
-従って、URL, hosts, applicationhost.configの設定は不要。
-余談:
--applicationhost.configの位置が、VS2015から変わっている。
--また、プロキシ環境で使用している場合、~
インターネットにルーティングされるので、プロキシ設定をOFFにする。

プロキシ環境下で外部サービスに接続する場合、以下の設定を行う。~
プロキシ環境下の開発環境では、外部ログインは必ずプロキシ経由になる。~
従って、ローカルのFQDN名はプロキシを利用しないlocalhost設定で無いと難しい。

-ASP.NET Identity - プロキシ環境下で外部サービスによるユーザ認証を行う~
http://ichiroku11.hatenablog.jp/entry/2014/04/09/224050

-参考
--ASP.NET IdentityのSNS対応ではまったポイント | 眠るシーラカンスと水底のプログラマー~
http://coelacanth.jp.net/asp-net-identity%E3%81%AEsns%E5%AF%BE%E5%BF%9C%E3%81%A7%E3%81%AF%E3%81%BE%E3%81%A3%E3%81%9F%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88/

---ASP.NET Identity : External Login カスタマイズ (claim, scope, access token などの活用) – Tsmatz~
https://blogs.msdn.microsoft.com/tsmatsuz/2014/06/15/asp-net-identity-external-login-claim-scope-access-token/

**運用の機能強化 [#q46c248b]

***アカウント・ロックアウト [#i8de4e90]
基本のテンプレートに実装されている。

***パスワード・リセット [#n62fe168]
基本のテンプレートに実装されている。

***管理機能 [#ee8e98b4]
追加のサンプル(Microsoft.AspNet.Identity.Samples)に実装されている。

-アカウント編集・削除
-ロール編集・削除

-参考
--ASP.NET Identity 2.0: Implementing Group-Based Permissions Management - CodeProject~
http://www.codeproject.com/Articles/808903/ASP-NET-Identity-Implementing-Group-Based-Permissi

*[[OWIN is dead ?>OWIN#o8448c24]] [#id9d200a]

**ASP.NET Core [#c1faad1c]
-ASP.NET 5 ([[ASP.NET Core]]) ではバージョン3.0になり、新たに実装しなおされた。
--バージョン2.xまでの[[OWIN]]のパイプライン処理をベースとした実装ではなく、~
ASP.NET 5 ([[ASP.NET Core]]) のパイプライン処理をベースに実装されている。
--この結果、バージョン2.x向けに独自に実装したコードとの互換性が無くなった。

-ASP.NET 5([[ASP.NET Core]])でも既存コードを利用したい場合、
--バージョン3.0向けに再実装する必要がある。
--ただ、主要なAPIはそれほど変更されていないため、移植は比較的容易。

**素組 [#n763c477]
OWIN が微妙ということであれば、下記のように、素組で実装できる~
(ただし、プロトコルを理解して実装を行う必要がある。下記はOAuth。)。

-Facebook Login with ASP.NET Web Forms – Nick Pinheiro~
https://blogs.msdn.microsoft.com/nickpinheiro/2015/02/28/facebook-login-with-asp-net-web-forms/
--nickpinheiro/FacebookLoginASPnetWebForms: Facebook Login with ASP.NET Web Forms~
https://github.com/nickpinheiro/FacebookLoginASPnetWebForms

*参考 [#g286301f]
**The ASP.NET Site [#p859f936]
ASP.NET Identity~
http://www.asp.net/identity

-Adding ASP.NET Identity to an Empty or Existing Web Forms Project~
http://www.asp.net/identity/overview/getting-started/adding-aspnet-identity-to-an-empty-or-existing-web-forms-project

-Account Confirmation and Password Recovery with ASP.NET Identity (C#)~
http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity

-ASP.NET MVC 5 app with SMS and email Two-Factor Authentication~
https://www.asp.net/mvc/overview/security/aspnet-mvc-5-app-with-sms-and-email-two-factor-authentication

-Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#)~
http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

**msdn.microsoft.com [#i8349da4]
***.NET Web Development and Tools Blog [#yc30addc]
Introducing ASP.NET Identity – A membership system for ASP.NET applications~
https://blogs.msdn.microsoft.com/webdev/2013/06/27/introducing-asp-net-identity-a-membership-system-for-asp-net-applications/

-Customizing profile information in ASP.NET Identity in VS 2013 templates~
https://blogs.msdn.microsoft.com/webdev/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates/

***Cutting Edge [#uf633eed]
-ASP.NET Identity の概要~
https://msdn.microsoft.com/ja-jp/magazine/dn605872.aspx
-ASP.NET Identity による外部認証~
https://msdn.microsoft.com/ja-jp/magazine/dn745860.aspx
-Cutting Edge - ASP.NET Identity でのユーザー データの保存~
https://msdn.microsoft.com/ja-jp/magazine/dn818488.aspx

***Tsmatz [#s06c46f7]
ASP.NET Identity
-E-Mail Confirmation の実装~
https://blogs.msdn.microsoft.com/tsmatsuz/2014/07/13/asp-net-identity-e-mail-confirmation/

-二要素認証 (2FA) の実装~
https://blogs.msdn.microsoft.com/tsmatsuz/2014/09/02/asp-net-identity-2fa/

-External Login カスタマイズ (claim, scope, access token などの活用)~
https://blogs.msdn.microsoft.com/tsmatsuz/2014/06/15/asp-net-identity-external-login-claim-scope-access-token/

-ASP.NET SPA (JavaScript) の Web API 認証~
https://blogs.msdn.microsoft.com/tsmatsuz/2014/05/20/asp-net-spa-javascript-web-api-asp-net-identity-html5biz/

***THE TRUTH IS OUT THERE [#l321de1c]
-ASP.NET MVC で OAuth/OpenID (Facebook, Twitter, Google, Microsoft) を使う~
https://blogs.msdn.microsoft.com/chack/2012/11/19/asp-net-mvc-oauthopenid-facebook-twitter-google-microsoft/

-Visual Studio 2012 と ASP.NET で Facebook アプリを作る~
https://blogs.msdn.microsoft.com/chack/2012/12/24/visual-studio-2012-asp-net-facebook/

**その他 [#s4489e6a]
-.NET最新技術「ASP.NET Identity」とは? - Build Insider~
http://www.buildinsider.net/enterprise/sansanreport/0501
--2014-08-30_aspnet-identity~
http://www.slideshare.net/kenjikumaie/gloopsgranisansannet20140830aspnetidentity

-新しい認証の仕組み ー ASP.NET Identity  どっとねっとふぁん~
https://blogonos.wordpress.com/2013/11/29/%E6%96%B0%E3%81%97%E3%81%84%E8%AA%8D%E8%A8%BC%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF-%E3%83%BC-asp-net-identity/

***ASP.NET Identity入門連載一覧:CodeZine(コードジン) [#q41eac45]
https://codezine.jp/article/corner/511
-「ASP.NET Identity」の登場背景と実際の使い方~
https://codezine.jp/article/detail/7709
-ASP.NET Identityによるユーザー登録/ログインの仕組み~
https://codezine.jp/article/detail/7763
-ASP.NET Identityのプロファイル情報のカスタマイズ~
https://codezine.jp/article/detail/7845
-ASP.NET Identity 2.0の新機能 ~ログインに関する検証強化とアカウントロックアウト~
https://codezine.jp/article/detail/7921
-ASP.NET Identity 2.0の新機能 ~メール連携機能のためのメール送信処理~
https://codezine.jp/article/detail/8047
-ASP.NET Identity 2.0の新機能 ~メールを使ったアカウントの確認~
https://codezine.jp/article/detail/8181
-ASP.NET Identity 2.0の新機能 ~パスワードのリセット~
https://codezine.jp/article/detail/8254
-ASP.NET Identity 2.0の新機能 ~二要素認証~
https://codezine.jp/article/detail/8328
-外部アカウントを使ったログインをASP.NET Identityで実現する~
https://codezine.jp/article/detail/8463
-ASP.NET Identityでユーザーを管理する~
https://codezine.jp/article/detail/8555
-ASP.NET Identityでユーザーに役割(ロール)を持たせる~
https://codezine.jp/article/detail/8625
-ASP.NET Identityで独自の認証処理を行う~
https://codezine.jp/article/detail/8868
-ASP.NET Identityで任意のデータストアを使う~
https://codezine.jp/article/detail/8905
-ASP.NET 5に向けて知っておきたい、最新のASP.NET Identityのポイント~
https://codezine.jp/article/detail/8966

***ASP.NET Identity カテゴリーの記事一覧 - kendik.net [#n42a3261]
http://kendik.hatenablog.com/archive/category/ASP.NET%20Identity
-ASP.NET Identity のセキュリティスタンプ機能を使う~
http://kendik.hatenablog.com/entry/2014/08/17/212645
-ASP.NET Identity で二要素認証を使う - SMS 編~
http://kendik.hatenablog.com/entry/2014/08/21/033441
-ASP.NET Identity で二要素認証を使う - E-mail 編~
http://kendik.hatenablog.com/entry/2014/08/22/013330
-ASP.NET Identity を使って Microsoft アカウントで認証する~
http://kendik.hatenablog.com/entry/2014/08/25/020152
-.NET 勉強会で ASP.NET Identity の話をしてきました~
http://kendik.hatenablog.com/entry/2014/09/14/224258
-ASP.NET Identity のユーザー名、パスワードの検証機能を整理する~
http://kendik.hatenablog.com/entry/2014/09/15/223823
-Visual Studio 14 CTP 4 がリリースされたらしいですが~
http://kendik.hatenablog.com/entry/2014/10/08/022223
-ASP.NET Identity 2.2.0 (の alpha-1) が出たようです~
http://kendik.hatenablog.com/entry/2014/10/27/232558
-ASP.NET Identity beta1 が来ました~
http://kendik.hatenablog.com/entry/2014/11/13/005616

***かずきのBlog@hatena [#d042c341]
-ASP.NET Identityカスタマイズに挑戦~
http://blog.okazuki.jp/entry/2013/11/10/190811
-ASP.NET Identityで独自データストアからデータを取得する(ログインからロールまで)~
http://blog.okazuki.jp/entry/2015/08/20/214212

***Qiita [#n25a744b]
-ASP.NET IdentityのUserStoreを自分で作る~
http://qiita.com/mocha/items/a56f66660f5b39d8f1fc
-ASP.NET Identityを利用してTwitter認証を実装する最低限のコード~
http://qiita.com/potimarimo/items/66dc89eaba07a612de1b
-ASP.NET Identityで独自認証する~
http://qiita.com/ken200/items/899762b0fd530587886d

***Series: Owin Authentication « Passion for Coding [#x78e5995]
https://coding.abel.nu/series/owin-authentication/
-What’s this Owin Stuff About?
-ASP.NET Identity and Owin Overview
-Understanding the Owin External Authentication Pipeline
-Writing an Owin Authentication Middleware
-Using Owin External Login without ASP.NET Identity

***CodeProject [#z209251d]
-ASP.NET MVC and Identity 2.0: Understanding the Basics~
http://www.codeproject.com/Articles/762428/ASP-NET-MVC-and-Identity-Understanding-the-Basics

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS