asp.net coreとazure ad b2cを使ったサクっと認証

29
ASP.NET CoreとAzure AD B2C を使ったサクっと認証 2017/10/21 Fukuoka.NET Conf @tsubakimoto_s

Upload: yuta-matsumura

Post on 22-Jan-2018

520 views

Category:

Technology


13 download

TRANSCRIPT

Page 1: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

2017/10/21 Fukuoka.NET Conf

@tsubakimoto_s

Page 2: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

2

自己紹介

•松村優大 (MLBお兄さん)

•株式会社オルターブース

• Chief Technical Architect

•C# / PHP / Azure / AWS

•Microsoft MVP for VSDT

所属 コミュニティ

Page 3: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

.NET Core

Version Release Date

1.0 2016/06/27

1.1 2016/10/24

2.0 2017/05/10

5https://github.com/dotnet/core/blob/master/release-notes/download-archive.md

Page 4: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

Webアプリケーションの認証

•いわゆるログイン

•メールアドレスとパスワード

•認証方式の多様化(OAuth)

• Twitter

• Facebook

• Google

• Microsoft

• etc...

6

Page 5: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

7

ログイン方法はメールアドレスとパスワードでいいですよね?

FacebookとかTwitterのアカウントでもログインできるようにして。

ぐぬぬ

Page 6: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

例)Facebook認証を作る

8https://developers.facebook.com/docs/facebook-login/web

AppServer

JavaScript

C#

Page 7: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

プロバイダ毎に作るのは大変

9

Page 8: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

ASP.NET Core Identity

• https://github.com/aspnet/Identity

• https://github.com/aspnet/Security

•プロバイダ毎の認証方式の違いを吸収したライブラリ

•ASP.NETにもある

10

Page 9: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

11

作ったぞい。

認証サーバーを管理したくない。

ぐぬぬ

Page 10: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

12

作ったぞい。

認証サーバーを管理したくない。

⇒PaaSの出番

ぐぬぬ

Page 11: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

Amazon Cognitoが定番?

13

• PaaS

• OAuthに対応

• 独自認証(ID/PW)も可能

• データストア付き

• ユーザー属性の拡張可能

https://github.com/aws/aws-sdk-net

Page 12: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

Azure Active Directory B2C

•2016年7月に一般提供(GA)

• ID管理ソリューション

•ソーシャルアカウント

•エンタープライズアカウント

• OpenIDまたはSAML

•ローカルアカウント

• メールアドレスとパスワード

•「AAD B2C」と略す場合もある

14

Page 13: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

保存済ユーザー数 価格/月

~50,000 無料

~950,000 ¥0.12

~9,000,000 ¥0.09578

~40,000,000 ¥0.07977

50,000,000~ ¥0.06426

月間認証回数

15

Azure Active Directory B2C

数 価格/月

~50,000 無料

~950,000 ¥0.29

~9,000,000 ¥0.22

~40,000,000 ¥0.15

50,000,000~ ¥0.0714

https://azure.microsoft.com/ja-jp/pricing/details/active-directory-b2c/

※多要素認証を行うと、認証毎に ¥3.06円が課金される

Page 14: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

ASP.NET Core x AAD B2C

1. AAD B2Cのテナントの作成

2. サブスクリプションにリンク

3. アプリケーションの登録

4. ポリシーの作成

•サインインまたはサインアップ

•パスワードのリセット

5. プロジェクトの作成

• ASP.NET Core 2.0

16https://azure.microsoft.com/ja-jp/resources/samples/active-directory-b2c-dotnetcore-webapp/

Page 15: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

アプリケーションの登録

17

ポート番号とパスを指定

Page 16: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

サインアップまたはサインインのポリシー

• IDプロバイダー

•サインアップ属性

•アプリケーション要求

•多要素認証の有無

•UIのカスタマイズ

18

Page 17: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

パスワードのリセットのポリシー

• IDプロバイダー

•アプリケーション要求

•多要素認証の有無

19

Page 18: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

ASP.NET Coreの作成

20

Page 19: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

ASP.NET Coreの作成

21

Page 20: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

AAD B2C認証のためのクラス

22AAD B2Cの情報

AAD B2C認証のための振る舞いを定義

appsettings.jsonの内容を保持する

Page 21: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

appsettings.json

{

"AzureAdB2C": {

"Instance": "https://login.microsoftonline.com/tfp/",

"ClientId": "(AAD B2CのアプリID)",

"CallbackPath": "/signin-oidc",

"Domain": "fukuten1021b2c.onmicrosoft.com",

"SignUpSignInPolicyId": "B2C_1_SiUpIn",

"ResetPasswordPolicyId": "B2C_1_SSPR",

"EditProfilePolicyId": "B2C_1_SiPe"

}

}

23

Page 22: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

Startup.cs

public void ConfigureServices(IServiceCollection services)

{

services.AddAuthentication(sharedOptions =>

{

// do something

})

.AddAzureAdB2C(options =>

Configuration.Bind("AzureAdB2C", options))

.AddCookie();

services.AddMvc();

}

24

Page 23: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

サインアップ画面

25

Page 24: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

確認メールが届く

26

Page 25: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

AAD B2Cのユーザー一覧

27

Page 26: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

UIのカスタマイズ

•ポリシー毎にUIカスタマイズ可能

•publicな静的コンテンツを用意

28https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-reference-ui-customization-helper-tool

Page 27: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

応用)Facebookでログイン

1. Facebook Developerでアプリ登録

• Facebookログインの機能を利用

•シークレットキーが必要

2. Facebookプロバイダーの追加(B2C)

3. ポリシーの変更(B2C)

•サインアップまたはサインイン

• IDプロバイダーにFacebookを追加

29https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-setup-fb-app

Page 28: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

まとめ

•AAD B2Cは、B2C向けのWebサービスの認証機構に向いている

•独自認証、OAuthをサポート

•ASP.NET CoreにはAAD B2Cのテンプレートがある

•Cognitoより使いやすい (個人の感想)

30

Page 29: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証

ありがとうございました

31