- 追加された行はこの色です。
- 削除された行はこの色です。
[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]
-[[戻る>ASP.NET Identity]]
* 目次 [#fb080ecc]
#contents
*概要 [#ma4a5581]
外部ログイン・プロバイダを使用して外部ログインを簡単に実装できるが、~
(プロトコルを理解してライブラリを自作するより数段楽ではあるものの)~
実際は、そんなに簡単ではなかったりする。
Microsoftアカウント以外は今の所上手く言っていない。~
プロキシを使用しない外部ネットワークから実行してみてダメなら調査が必要。
**プロバイダのプロトコル [#ff43edeb]
外部ログイン・プロバイダの使用する[[クレームベース認証]]は、現時点では、[[OAuth]](正確には、OAuth2.0)が主流である模様。
しかし、過去には、Googleの[[OpenID]]の外部ログイン・プロバイダが存在しており、~
最近[[OAuth]]に置き換えられたことを考えると、将来的には、[[OAuth]]が、~
[[OpenID Connect]]に置き換えられる。などと言った可能性はある。
-ASP.NET MVC 5 で OpenID を使用して Google 認証を行う方法: ある SE のつぶやき~
http://fnya.cocolog-nifty.com/blog/2014/03/aspnet-mvc-5-op.html
--サイトにパスワードを保存する必要なし ― Microsoft、Google等がユーザー認証の新規格、OpenID Connectをサポート | TechCrunch Japan~
http://jp.techcrunch.com/2014/02/27/20140226openid-foundation-launches-openid-connect-identity-protocol-with-support-from-google-microsoft-others/
*実装 [#n710287b]
以下の手順に従い、実装できる。
-Code! MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on (C#) | The ASP.NET Site~
https://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on
**Microsoft アカウント [#j12cae65]
**ライブラリ [#j7ec63cb]
***Microsoft アカウント [#j12cae65]
-NuGet Gallery | Microsoft.Owin.Security.MicrosoftAccount 3.0.1~
https://www.nuget.org/packages/Microsoft.Owin.Security.MicrosoftAccount/
>Microsoftは、「support the Microsoft Account authentication workflow」とプロトコルを明言していない。
-ASP.NET Identity を使って Microsoft アカウントで認証する~
http://kendik.hatenablog.com/entry/2014/08/25/020152
**Google アカウント [#n8dd8918]
***Google アカウント [#n8dd8918]
-NuGet Gallery | Microsoft.Owin.Security.Google 3.0.1~
https://www.nuget.org/packages/Microsoft.Owin.Security.Google/
>今の所、OAuth 2.0を使用しているもよう。
-[[ASP.NET MVC]] 5 で [[OAuth]] 2.0 を使用して Google 認証を行う方法: ある SE のつぶやき~
http://fnya.cocolog-nifty.com/blog/2014/03/aspnet-mvc-5-oa.html
--プロジェクトを作成(ちょうどGCPを使っていたのでそのプロジェクトを流用)
--認証情報タブ→OAuth クライアント ID を作成する。
--認証情報タブ→OAuth 同意画面を入力して保存
--ライブラリ・タブ→Social API→Google+ APIを有効にする。
**Facebook アカウント [#lce246f9]
***Facebook アカウント [#lce246f9]
-NuGet Gallery | Microsoft.Owin.Security.Facebook 3.0.1~
https://www.nuget.org/packages/Microsoft.Owin.Security.Facebook/
>今の所、OAuth 2.0を使用しているもよう。
**Twitter アカウント [#t22d3c15]
***Twitter アカウント [#t22d3c15]
-NuGet Gallery | Microsoft.Owin.Security.Twitter 3.0.1~
https://www.nuget.org/packages/Microsoft.Owin.Security.Twitter/
>今の所、OAuth 2.0を使用しているもよう。
-ASP.NET MVC 5 で Twitter 認証を行う方法: ある SE のつぶやき~
http://fnya.cocolog-nifty.com/blog/2014/03/aspnet-mvc-5-tw.html
*ハマり所 [#j015e60f]
**localhost [#m958ce47]
**ハマり所 [#j015e60f]
***localhost [#m958ce47]
-Microsoft アカウントでは、localhostも登録できるようになっている。~
しかし、Twitterではlocalhostが登録できないことを確認した。
-従って、localhostを使用できない場合、~
-従って、localhostを使用できないログイン・プロバイダを使用する場合、~
URL, hosts, applicationhost.configの設定が必要になる。
--IIS Express で仮想サイトに複数のホスト名を割り当てる - しばやん雑記~
http://blog.shibayan.jp/entry/20130306/1362572283
--なお、applicationhost.configの位置が、VS2015から変わっているので注意。
--なお、applicationhost.configの位置が、VS2015から変わっているので注意が必要。
---IIS Expressでlocalhost以外のアドレスでアクセスする方法 - なか日記~
http://blog.nakajix.jp/entry/2014/09/19/022536
-余談:
***プロキシ環境 [#rd84d228]
-また、プロキシ環境下で外部サービスに接続する場合、以下の設定を行う必要がある。
--また、プロキシ環境で使用している場合、
--ASP.NET Identity - プロキシ環境下で外部サービスによるユーザ認証を行う~
http://ichiroku11.hatenablog.jp/entry/2014/04/09/224050
--プロキシ環境下で外部サービスに接続する場合、以下の設定を行う。~
-これだとインターネットにルーティングされるので、localhostへのプロキシ使用をOFFにする。~
従って、ローカルのFQDN名はプロキシを利用しないで済むlocalhost設定が可能で無いと難しい。
---ASP.NET Identity - プロキシ環境下で外部サービスによるユーザ認証を行う~
http://ichiroku11.hatenablog.jp/entry/2014/04/09/224050
**テンプレートの実装の問題 [#n62c8e4f]
--これだとインターネットにルーティングされるので、localhostへのプロキシ使用をOFFにする。
---ローカルのFQDN名はプロキシを利用しないで済むlocalhost設定が可能で無いと難しい。
***E-mailアドレス [#f50ba421]
-外部ログインをしても、既定でE-mailアドレスは取得できないので~
プロジェクト・テンプレートも、既定でE-mailアドレスを自分で手入力するという仕様で実装されている。
-しかし、この状態で、E-mail Confirmationを実装していると矛盾が生じる。
**参考 [#i1247215]
-なので、検証済みのE-mailアドレスを取得できるように、連携先に、E-mailアドレスを要求するように設定する。
--c# - Get E-mail of User Authenticated with Microsoft Account in ASP.NET Identity - Stack Overflow~
http://stackoverflow.com/questions/22229593/get-e-mail-of-user-authenticated-with-microsoft-account-in-asp-net-identity
--twitterのoauthを使ってみる(emailも取得) - Qiita~
http://qiita.com/kite_999/items/e0ab8c52f918bbb02cfd
-これにより、連携先から、検証済みのE-mailアドレスを取得できるようになるため、~
この、E-mailアドレスを使用して、ユーザ登録し、外部ログインを追加れば整合性が取れる。
***サインアップと外部ログインの競合 [#idd3eb14]
外部ログインした後に、E-mailアドレスを使用してユーザ登録すると、~
重複で、サインアップによるパスワード登録ができないため~
通常ログインができなくなるという問題(?)もある。
***管理画面の外部ログインの削除の意味 [#l73abe1e]
ExternalLoginCallbackの条件分岐で、~
外部ログインがある時とない時で動きが違う。
別のログイン手段を持たない場合は、~
外部ログインを削除できない仕様である模様(要確認)。
-サインアップしてあれば、外部ログインを削除できる。
-2つ以上の外部ログインがあれば、外部ログインを削除できる。
***外部ログインが失敗する [#i1247215]
-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/
*参考情報 [#p6743d35]
-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/