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

目次

概要

  • フォーム認証ではなく、OWINの認証用ミドルウェア(Owin.Security)を使用している。
  • 特に、ソーシャルログインを行う場合、OWINで提供されるライブラリを使用する必要がある。
    • Microsoft.Owin.Security.OAuth
    • Microsoft.Owin.Security.Facebook
    • Microsoft.Owin.Security.Twitter
    • Microsoft.Owin.Security.Google
    • Microsoft.Owin.Security.MicrosoftAccount?

特徴

One ASP.NET Identity System

ASP.NET frameworks ( ASP.NET MVC, Web Forms, Web Pages, Web API and SignalR ) で使用可能。

ユーザ属性の拡張

Entity Frameworkのコードファーストを使用し、拡張可能。

UserStore?のストレージ変更

  • 既定では、Entity FrameworkのCodefirstを使用する。
  • UserStore?クラスを実装すれば、UserStore?のストレージを変更可能。

ユニットテスト容易性

シンプルなロールプロバイダ

簡単に、「管理者」等のロールを作成し、ロールにユーザを追加ができる。

外部ログイン

簡単に、マイクロソフトアカウント、FacebookやTwitterやGoogleなどの外部ログインを追加できる。

セキュアトークンサービス(STS)

OAuth2.0のセキュアトークンサービス(STS)をサポート。

機能

基本機能

  • サインアップ
  • サインイン・サインアウト
  • アカウントの編集
    • パスワード
    • 電話番号
    • 二要素認証 (2FA) のON/OFF
    • 外部ログインの一覧と削除
    • ,etc. (任意項目を追加可能)

新機能

  • サインアップの機能強化
    • ユーザ名の重複不可設定
    • パスワード検証
    • 二要素認証 (2FA)
    • アカウント確認(E-mail confirmation)
  • サインアップ・サインインの機能強化
    • 外部ログイン
    • セキュアトークンサービス(STS)
  • 運用系機能強化
    • パスワード・リセット
  • セキュリティ強化
    • アカウント・ロックアウト
    • SecurityStamp?
  • 管理機能
    • アカウント編集・削除
    • ロール編集・削除

資格情報へのアクセス

EntityFramework?

Entity Framework(Microsoft.AspNet?.Identity.EntityFramework?)が使用されており、
Entity Frameworkマイグレーションを使うことで、簡単にユーザー情報に項目を追加できる。

UserStore?

また、任意のストレージを使用するようにカスタマイズできる。
この際に、Entity Frameworkをキャンセルすることもできる。

クロスサイト

同一ドメインのASP.NET Identity

可能。

  • Cookie認証チケットと、データストアを共有する。
  • すると、SecurityStampの連携なども可能になる。

異なるドメインの他テクノロジとの連携

可能。

実装

基本機能

サインアップ

基本のテンプレートに実装されている。

サインイン・サインアウト

基本のテンプレートに実装されている。

アカウントの編集

基本のテンプレートに実装されている。

  • パスワード
  • 電話番号
  • 二要素認証 (2FA) のON/OFF
  • 外部ログインの一覧と削除
  • ,etc. (任意項目を追加可能)

サインアップの機能強化

ユーザ名の重複不可設定

基本のテンプレートに実装されている。

パスワード検証

基本のテンプレートに実装されている。

二要素認証 (2FA)

アカウント確認(E-mail confirmation)

以下を参考にして実装する。

サインアップ・サインインの機能強化

外部ログイン

詳しくは「ASP.NET Identityの外部ログイン」を参照。

セキュアトークンサービス(STS)

詳しくは「ASP.NET IdentityによるSTS実装」を参照。

運用系機能強化

パスワード・リセット

  • 基本のテンプレートに実装されている。
  • アカウント確認(E-mail confirmation)前にリセットできるように変更。

セキュリティ強化

アカウント・ロックアウト

基本のテンプレートに実装されている。

SecurityStamp?

アカウントの編集後(主にパスワード変更を想定)、
他のブラウザでログインしているユーザはサインアウトされる。

基本のテンプレートに実装されている。

E-mail・SMSプロバイダの利用

以下のケースで利用される。

E-mail

  • アカウント確認(E-mail confirmation)の際
  • パスワード・リセットの際

SMS

  • 電話番号編集の際

両方

  • 二要素認証 (2FA)

管理機能

下記、拡張テンプレートに実装されている。

  • アカウント編集・削除
  • ロール編集・削除

拡張テンプレートを取得

  • PMからInstall-Packageする。
    • 以下を実行する。
      • Install-Package SendGrid?
      • Install-Package -Prerelease Microsoft.AspNet?.Identity.Samples
  • 追加・更新されるモジュール
    Microsoft.AspNet?.Identity.Samplesで、
    以下のモジュールが適用される(変更量が多いモノ)。
  • 追加されるモジュール
    • \App_Start\
      • IdentityConfig?.cs
    • \Controllers\
      • ManageController?.cs
    • \Views\Home\
      • Index.cshtml
      • AccountController?.cs
    • \Views\Manage\
      • Index.cshtml
      • ManageLogins?.cshtml
    • \Content\Site.css
  • 追加されるモジュール。
    <Compile Include="Controllers\RolesAdminController.cs" />
    <Compile Include="Controllers\UserAdminController.cs" />
    ・・・
    <Compile Include="Models\AdminViewModel.cs" />
    ・・・
    <Content Include="Views\UsersAdmin\Index.cshtml" />
    <Content Include="Views\UsersAdmin\Edit.cshtml" />
    <Content Include="Views\UsersAdmin\Details.cshtml" />
    <Content Include="Views\UsersAdmin\Delete.cshtml" />
    <Content Include="Views\UsersAdmin\Create.cshtml" />
    <Content Include="Views\RolesAdmin\Index.cshtml" />
    <Content Include="Views\RolesAdmin\Edit.cshtml" />
    <Content Include="Views\RolesAdmin\Details.cshtml" />
    <Content Include="Views\RolesAdmin\Delete.cshtml" />
    <Content Include="Views\RolesAdmin\Create.cshtml" />
    <Content Include="Views\Account\DisplayEmail.cshtml" />

トピック

Code値

  • 各種、confirmation、2FA、Password Resetなどで使用されるCode値は、Machine Keys + Security Stampで生成される。
  • 従って、このCode値に有効期限は無く、ユーザのSecurity Stamp値が変更になるまで有効であり続ける。

存在しない機能

パスワード有効期限

アカウントの無効化

二重ログイン防止

二重ログイン防止機能は、アプリケーション側の機能要件なので
ASP.NET IdentityのIdP / STS側に二重ログイン防止機能はない。
作り込むなら、アプリケーション側で実装する必要がある。

その他

ASP.NET Core対応バージョン

  • ASP.NET 5 (ASP.NET Core) ではバージョン3.0になり、新たに実装しなおされた。
    • バージョン2.xまでのOWINのパイプライン処理をベースとした実装ではなく、
      ASP.NET 5 (ASP.NET Core) のパイプライン処理をベースに実装されている。
    • この結果、バージョン2.x向けに独自に実装したコードとの互換性が無くなった。
  • ASP.NET 5 (ASP.NET Core) でも既存コードを利用したい場合、
    • バージョン3.0向けに再実装する必要がある。
    • ただ、主要なAPIはそれほど変更されていないため、移植は比較的容易。

参考

汎用認証サイト

ASP.NET Core Identity

The ASP.NET Site

ASP.NET Identity
http://www.asp.net/identity

msdn.microsoft.com

.NET Web Development and Tools Blog

Introducing ASP.NET Identity – A membership system for ASP.NET applications
https://blogs.msdn.microsoft.com/webdev/2013/06/27/introducing-asp-net-identity-a-membership-system-for-asp-net-applications/

Cutting Edge

Tsmatz

ASP.NET Identity

THE TRUTH IS OUT THERE

その他

Qiita

CodeProject?

かずきのBlog@hatena

ASP.NET Identity入門連載一覧:CodeZine?(コードジン)

https://codezine.jp/article/corner/511

ASP.NET Identity カテゴリーの記事一覧 - kendik.net

http://kendik.hatenablog.com/archive/category/ASP.NET%20Identity

Series: Owin Authentication « Passion for Coding

https://coding.abel.nu/series/owin-authentication/

  • What’s this Owin Stuff About?
  • ASP.NET Identity and Owin Overview
  • Understanding the Owin External Authentication Pipeline
  • Writing an Owin Authentication Middleware
  • Using Owin External Login without ASP.NET Identity

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-09-18 (金) 19:47:40 (1309d)