[[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.Google --Microsoft.Owin.Security.Twitter --Microsoft.Owin.Security.MicrosoftAccount **機能 [#l1b690dc] ***機能 [#o62e1016] -サインアップ~ Register画面 -(Create)-> UserManagerExtension -(CreateAsync)-> UserManager(UserManager<TUser> (ApplicationUserContext))-(SQL)->DB -ログイン -ログオフ -アカウントの編集 ***2.0での新機能 [#w2109450] -サインアップ --2段階認証 --アカウント確認 --パスワード検証のパワーアップ --ユーザー名の重複不可設定 -運用 --アカウントロックアウト --パスワードリセット --アカウント削除 **資格情報へのアクセス [#w4a7fdb2] Entity Frameworkが使用されており、[[Entity Framework]]マイグレーションを使うことで、簡単にユーザー情報に項目を追加できる。 *[[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 *クラス [#vba116e2] テンプレートに実装されているクラス。 **ユーザ管理 [#f748a66c] ***ApplicationUser [#l766f02f] ユーザー情報を定義。IdentityUserクラスを継承。 -IdentityUser クラス (Microsoft.AspNet.Identity.EntityFramework)~ https://msdn.microsoft.com/ja-jp/library/microsoft.aspnet.identity.entityframework.identityuser.aspx -項目追加は、 --自動実装プロパティを追加 --任意入力項目はnull許容型 --テーブル定義を[[EFのマイグレーション機能>Entity Framework#heee7759]]で変更する。 --プロファイルの変更をパスワード変更画面に実装する。 ---manager.FindByIdでユーザー情報を取得 ---UserManager.Updateでユーザー情報を更新 ***ApplicationDbContext [#d6cfb1d8] ユーザー情報をEntity Frameworkで扱うための定義。IdentityDbContextクラスを継承。 -IdentityDbContext クラス (Microsoft.AspNet.Identity.EntityFramework)~ https://msdn.microsoft.com/ja-jp/library/microsoft.aspnet.identity.entityframework.identitydbcontext.aspx ***UserManager<ApplicationUser> [#ac8ca8e3] ApplicationUserを管理するための定義。UserManager<TUser>クラスを継承。 -UserManager(TUser) クラス (Microsoft.AspNet.Identity)~ https://msdn.microsoft.com/ja-jp/library/dn468199.aspx -UserManagerExtensions クラス (Microsoft.AspNet.Identity)~ https://msdn.microsoft.com/ja-jp/library/microsoft.aspnet.identity.usermanagerextensions.aspx ***UserStore<ApplicationUser> [#v867f36c] 情報の保管処理を抽象化するためのインターフェースを実装するクラス 各インターフェースを独自に実装すれば、データソースを変更できる。 -UserStore(TUser) クラス (Microsoft.AspNet.Identity.EntityFramework)~ https://msdn.microsoft.com/ja-jp/library/dn315446.aspx --ユーザー情報用のIUserLoginStore<TUser>インターフェース ---IUserLoginStore(TUser) インターフェイス (Microsoft.AspNet.Identity)~ https://msdn.microsoft.com/ja-jp/library/dn468186.aspx --パスワード情報用のIUserPasswordStore<TUser>インターフェース ---IUserPasswordStore(TUser) インターフェイス (Microsoft.AspNet.Identity)~ https://msdn.microsoft.com/ja-jp/library/dn468187.aspx **サインイン [#qad51d7f] **画面 [#m63dec42] *参考 [#g286301f] **The ASP.NET Site [#p859f936] ASP.NET Identity~ http://www.asp.net/identity -Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#) | The ASP.NET Site~ 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 **その他 [#s4489e6a] -新しい認証の仕組み ー 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 ***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 ***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/ ***かずきの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