マイクロソフト系技術情報 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 アカウント

Apple ID

最近、Sign in with Appleがリリースされたが、NuGet上にライブラリは、まだ確認できない。

その他のライブラリ

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との連携具合が不明(多分連携していない)。

ASP.NET Core用ライブラリ

ASP.NET Coreの情報は以下に、纏まっている。

https://docs.microsoft.com/ja-jp/aspnet/core/security/authentication/social/

※ こちらも、Owin.Security同様に、MS製(Microsoft.AspNetCore?.Authentication)。

参考

実装

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

開始

外部ログインは、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);

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

外部ログインが失敗する

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

参考

Tsmatz

ASP.NET Core Identity の 外部ログイン


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


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