「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OWIN]]
-戻る
--[[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のコードファーストを使用し、拡張可能。

***UserStoreのストレージ変更 [#qe73efd1]
-既定では、Entity FrameworkのCodefirstを使用する。
-UserStoreクラスを実装すれば、UserStoreのストレージを変更可能。

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

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

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

***[[セキュアトークンサービス(STS)>#xc772def]] [#rf5e3362]
[[OAuth]]2.0の[[セキュアトークンサービス(STS)>#xc772def]]をサポート。

**機能 [#l1b690dc]
***基本機能 [#o62e1016]
-サインアップ
-サインイン・サインアウト

-アカウントの編集
--パスワード
--電話番号
--二要素認証 (2FA) のON/OFF
--外部ログインの一覧と削除
--,etc. (任意項目を追加可能)

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

-サインアップ・サインインの機能強化
--外部ログイン
--セキュアトークンサービス(STS)

-運用系機能強化
--パスワード・リセット

-セキュリティ強化
--アカウント・ロックアウト
--SecurityStamp

-管理機能
--アカウント編集・削除
--ロール編集・削除

**資格情報へのアクセス [#w4a7fdb2]

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

***UserStore [#seecf39c]
また、任意のストレージを使用するようにカスタマイズできる。~
この際に、[[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

**クロスサイト [#ib35606e]
***同一ドメインのASP.NET Identity [#zfbe4749]
可能。
-Cookie認証チケットと、データストアを共有する。
-すると、[[SecurityStamp>#obd1b0ed]]の連携なども可能になる。

***異なるドメインの他テクノロジとの連携 [#i254a9f8]
可能。

-異なるドメインとは、Cookie認証チケットを共通できないので、
-[[セキュアトークンサービス(STS)>#xc772def]]を使用して認証連携する。

*実装 [#h9bcf6f6]

**基本機能 [#w37a8304]

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

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

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

-パスワード
-電話番号
-二要素認証 (2FA) のON/OFF
-外部ログインの一覧と削除
-,etc. (任意項目を追加可能)

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

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

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

***二要素認証 (2FA)  [#z03ea4a7]
初めて利用するブラウザからアクセスする場合に使用される。

-参考
--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

***アカウント確認(E-mail confirmation) [#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]

***[[外部ログイン>ASP.NET Identityの外部ログイン]] [#y9b657cf]
詳しくは「[[ASP.NET Identityの外部ログイン]]」を参照。

***[[セキュアトークンサービス(STS)>ASP.NET IdentityによるSTS実装]] [#xc772def]
詳しくは「[[ASP.NET IdentityによるSTS実装]]」を参照。

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

***パスワード・リセット [#n62fe168]
-基本のテンプレートに実装されている。
-アカウント確認(E-mail confirmation)前にリセットできるように変更。

**セキュリティ強化 [#o010351c]

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

***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
--Cutting Edge - ASP.NET Identity でのユーザー データの保存~
https://msdn.microsoft.com/ja-jp/magazine/dn818488.aspx

**E-mail・SMSプロバイダの利用 [#w7ea77ae]
以下のケースで利用される。

***E-mail [#a6d1b2e5]
-アカウント確認(E-mail confirmation)の際
-パスワード・リセットの際

***SMS [#ea8259e4]
-電話番号編集の際

***両方 [#v53d8ee9]
-二要素認証 (2FA) 

**管理機能 [#ee8e98b4]
下記、[[拡張テンプレート>#gffbd798]]に実装されている。
-アカウント編集・削除
-ロール編集・削除

***拡張テンプレートを取得 [#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する。
--以下を実行する。
---Install-Package SendGrid
---Install-Package -Prerelease Microsoft.AspNet.Identity.Samples

-追加・更新されるモジュール~
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" />

*トピック [#db0c4e66]

**存在しない機能 [#e5251531]

***パスワード有効期限 [#ka0c3a54]
-恐らく、昨今、パスワード有効期限が推奨されていないため。
--マイクロソフトがついにパスワード無期限を推奨事項としてO365の管理画面に出す。~
https://twitter.com/ebi/status/968341704049938439
---Microsoft Password Guidance~
https://www.microsoft.com/en-us/research/publication/password-guidance

-一方で、「クレジットカード情報を取り扱うために必要となるPマークの取得で~
準拠しなければならな PCI DSS の「90日間更新ポリシー」」というものがあるもよう。
--総務省が「パスワードを定期的に変更する」との~
セキュリティ対策を推奨したことが議論に | スラド セキュリティ~
https://security.srad.jp/story/13/12/19/1016205/
--パスワード関連まとめ~もう一度パスワードのセキュリティをチェック | 情シスハック~
http://success.tracpath.com/blog/2014/11/14/%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E9%96%A2%E9%80%A3%E3%81%BE%E3%81%A8%E3%82%81%EF%BD%9E%E3%82%82%E3%81%86%E4%B8%80%E5%BA%A6%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AE%E3%82%BB/

***アカウントの無効化 [#j272b53b]
機能は存在しないが、ロックアウト期限を ≒ 無期限にすることで別途作り込むことは可能。

***二重ログイン防止 [#se0f57e7]
二重ログイン防止機能は、アプリケーション側の機能要件なので~
ASP.NET IdentityのIdP / STS側に二重ログイン防止機能はない。~
作り込むなら、アプリケーション側で実装する必要がある。

**その他 [#p43e9f8e]
***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はそれほど変更されていないため、移植は比較的容易。

*参考 [#g286301f]
**[[ASP.NET Core Identity]] [#vb15bb13]

**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

----
Tags: [[:.NET開発]], [[:OWIN]], [[:ASP.NET]], [[:ASP.NET MVC]], [[:ASP.NET SPA]], [[[[ASP.NET Web API]]]], [[:ASP.NET Identity]], [[:認証基盤]], [[:セキュリティ]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS