Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

外部ログイン・プロバイダを使用して外部ログインを簡単に実装できるが、
(プロトコルを理解してライブラリを自作するより数段楽ではあるものの)
実際は、そんなに簡単ではなかったりする。

プロバイダのプロトコル

外部ログイン・プロバイダの使用するクレームベース認証は、
現時点では、OAuth(正確には、OAuth2.0)が主流である模様。

その他、OpenID Connectに対応したライブラリも拡充しつつある。

ライブラリ

Owin.Securityライブラリ

Microsoft アカウント

Google アカウント

Facebook アカウント

Twitter アカウント

その他のライブラリ

OAuth用ライブラリ

Microsoft.Web.WebPages?.OAuth.OAuthWebSecurity? クラスには、
各サービスに応じて、アカウント認証を行うためのメソッドが用意されている。

項番メソッド処理内容
RegisterFacebookClient?Facebook アカウントによる認証
RegisterGoogleClient?Google アカウントによる認証
RegisterLinkedInClient?LinkedIn? アカウントによる認証
RegisterMicrosoftClient?Microsoft アカウントによる認証
RegisterTwitterClient?Twitter アカウントによる認証
RegisterYahooClient?Yahoo アカウントによる認証

OpenID Connect用ライブラリ

Microsoft.Owin.Security.OpenIdConnect?では、
Azure Active Directoryとの、OpenID Connect使用した認証連携がサポートされている模様。

Googleへのログインは現時点(2016年)ではサポートされていない模様。

参考

実装

以下の手順に従い、実装できる。

ハマり所

localhost

プロキシ環境

サービス側の変更

サービス側の

トラブる事が多い。

また、過去GoogleのOpenIDの外部ログイン・プロバイダが存在しており、最近OAuthに置き換えられたことを考えると、
将来的には、OAuthが、OpenID Connectに置き換えられる。などと言った可能性はある。

テンプレート実装の課題

ほぼ、AccountController?.ExternalLoginCallback?周辺で完結する。

E-mailアドレス

Claimの保存

既定ではClaimの保存処理は実装されていないので自分で実装する必要がある。

await UserManager.AddClaimAsync(user.Id, claim);

サインアップと外部ログインの競合

外部ログインした後に、E-mailアドレスを使用してユーザ登録すると、
ユーザIDの重複で、サインアップによりパスワード登録ができないため
通常ログインができなくなるという問題(?)もある。

※ 先に、サインアップして、後で外部ログインを追加すればこの問題は起きない。

管理画面の外部ログインの削除の意味

ExternalLoginCallback?の条件分岐で、外部ログインがある時とない時で動きが違う。
別のログイン手段を持たない場合は、外部ログインを削除できない仕様である模様(確認済)。

外部ログインが失敗する

参考情報


Tags: :ASP.NET, :ASP.NET MVC, :ASP.NET SPA, ASP.NET Web API, :ASP.NET Identity


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