Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
外部ログイン・プロバイダを使用して外部ログインを簡単に実装できるが、
(プロトコルを理解してライブラリを自作するより数段楽ではあるものの)
実際は、そんなに簡単ではなかったりする。
Microsoftアカウント以外は今の所上手く言っていない。
プロキシを使用しない外部ネットワークから実行してみてダメなら調査が必要。
プロバイダのプロトコル †
外部ログイン・プロバイダの使用するクレームベース認証は、現時点では、OAuth(正確には、OAuth2.0)が主流である模様。
しかし、過去には、GoogleのOpenIDの外部ログイン・プロバイダが存在しており、
最近OAuthに置き換えられたことを考えると、将来的には、OAuthが、
OpenID Connectに置き換えられる。などと言った可能性はある。
実装 †
以下の手順に従い、実装できる。
ライブラリ †
Microsoft アカウント †
Google アカウント †
Facebook アカウント †
Twitter アカウント †
ハマり所 †
localhost †
- Microsoft アカウントでは、localhostも登録できるようになっている。
しかし、Twitterではlocalhostが登録できないことを確認した。
- 従って、localhostを使用できないログイン・プロバイダを使用する場合、
URL, hosts, applicationhost.configの設定が必要になる。
- なお、applicationhost.configの位置が、VS2015から変わっているので注意が必要。
プロキシ環境 †
- また、プロキシ環境下で外部サービスに接続する場合、以下の設定を行う必要がある。
- これだとインターネットにルーティングされるので、localhostへのプロキシ使用をOFFにする。
従って、ローカルのFQDN名はプロキシを利用しないで済むlocalhost設定が可能で無いと難しい。
テンプレートの実装の問題 †
E-mailアドレス †
- 外部ログインをしても、既定でE-mailアドレスは取得できないので
プロジェクト・テンプレートも、既定でE-mailアドレスを自分で手入力するという仕様で実装されている。
- しかし、この状態で、E-mail Confirmationを実装していると矛盾が生じる。
- なので、検証済みのE-mailアドレスを取得できるように、連携先に、E-mailアドレスを要求するように設定する。
- これにより、連携先から、検証済みのE-mailアドレスを取得できるようになるため、
この、E-mailアドレスを使用して、ユーザ登録し、外部ログインを追加れば整合性が取れる。
サインアップと外部ログインの競合 †
外部ログインした後に、E-mailアドレスを使用してユーザ登録すると、
重複で、サインアップによるパスワード登録ができないため
通常ログインができなくなるという問題(?)もある。
管理画面の外部ログインの削除の意味 †
ExternalLoginCallback?の条件分岐で、
外部ログインがある時とない時で動きが違う。
別のログイン手段を持たない場合は、
外部ログインを削除できない仕様である模様(要確認)。
- サインアップしてあれば、外部ログインを削除できる。
- 2つ以上の外部ログインがあれば、外部ログインを削除できる。
外部ログインが失敗する †
参考情報 †