マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

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

プロバイダのプロトコル

外部ログイン・プロバイダとして使用可能なクレームベース認証のプロトコルには、以下のようなものがある。

OAuth

OpenID Connect

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

OpenID

Microsoft.Owin.Security.Googleでは、過去にOpenIDを使用していた。

WS-Federation, SAML

WIF (Windows Identity Foundation) によってサポート可能と思われる。

ライブラリ

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年)ではサポートされていない模様。

WS-Federation, SAML用ライブラリ

WIFの名前空間は、Microsoft.IdentityModel?.Claimsと、
OWINミドルウェア(Microsoft.Owin)と異なるため、ASP.NET Identityとの連携度が不明。

参考

実装

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

開始

外部ログインは、HttpUnauthorizedResultActionResult?を返すことで開始する。通常、redirect_uriは指定しない。

ハマり所

localhost

企業プロキシ環境

サービス側の仕様

サービス側の

トラブる事が多い。

不明確

プロトコルも不定で、例えばOAuth 2.0の場合、詳しい仕様は記載されていないので必要に応じて分析が必要になる

変更

以下のように、インターフェイスの変更が多数あったことが報告されている。

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

テンプレート実装の課題

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

E-mailアドレス

Claimの保存

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

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

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

外部ログインが失敗する

外部ログインが失敗することがあるらしい。

参考情報


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


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