asp.net coreとazure ad b2cを使ったサクっと認証
TRANSCRIPT
![Page 1: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/1.jpg)
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
2017/10/21 Fukuoka.NET Conf
@tsubakimoto_s
![Page 2: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/2.jpg)
2
自己紹介
•松村優大 (MLBお兄さん)
•株式会社オルターブース
• Chief Technical Architect
•C# / PHP / Azure / AWS
•Microsoft MVP for VSDT
所属 コミュニティ
![Page 3: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/3.jpg)
.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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/4.jpg)
Webアプリケーションの認証
•いわゆるログイン
•メールアドレスとパスワード
•認証方式の多様化(OAuth)
• Microsoft
• etc...
6
![Page 5: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/5.jpg)
7
ログイン方法はメールアドレスとパスワードでいいですよね?
FacebookとかTwitterのアカウントでもログインできるようにして。
ぐぬぬ
![Page 6: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/6.jpg)
例)Facebook認証を作る
8https://developers.facebook.com/docs/facebook-login/web
AppServer
JavaScript
C#
![Page 7: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/7.jpg)
プロバイダ毎に作るのは大変
9
![Page 8: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/8.jpg)
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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/9.jpg)
11
作ったぞい。
認証サーバーを管理したくない。
ぐぬぬ
![Page 10: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/10.jpg)
12
作ったぞい。
認証サーバーを管理したくない。
⇒PaaSの出番
ぐぬぬ
![Page 11: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/11.jpg)
Amazon Cognitoが定番?
13
• PaaS
• OAuthに対応
• 独自認証(ID/PW)も可能
• データストア付き
• ユーザー属性の拡張可能
https://github.com/aws/aws-sdk-net
![Page 12: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/12.jpg)
Azure Active Directory B2C
•2016年7月に一般提供(GA)
• ID管理ソリューション
•ソーシャルアカウント
•エンタープライズアカウント
• OpenIDまたはSAML
•ローカルアカウント
• メールアドレスとパスワード
•「AAD B2C」と略す場合もある
14
![Page 13: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/13.jpg)
保存済ユーザー数 価格/月
~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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/14.jpg)
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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/15.jpg)
アプリケーションの登録
17
ポート番号とパスを指定
![Page 16: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/16.jpg)
サインアップまたはサインインのポリシー
• IDプロバイダー
•サインアップ属性
•アプリケーション要求
•多要素認証の有無
•UIのカスタマイズ
18
![Page 17: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/17.jpg)
パスワードのリセットのポリシー
• IDプロバイダー
•アプリケーション要求
•多要素認証の有無
19
![Page 18: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/18.jpg)
ASP.NET Coreの作成
20
![Page 19: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/19.jpg)
ASP.NET Coreの作成
21
![Page 20: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/20.jpg)
AAD B2C認証のためのクラス
22AAD B2Cの情報
AAD B2C認証のための振る舞いを定義
appsettings.jsonの内容を保持する
![Page 21: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/21.jpg)
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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/22.jpg)
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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/23.jpg)
サインアップ画面
25
![Page 24: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/24.jpg)
確認メールが届く
26
![Page 25: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/25.jpg)
AAD B2Cのユーザー一覧
27
![Page 26: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/26.jpg)
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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/27.jpg)
応用)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を使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/28.jpg)
まとめ
•AAD B2Cは、B2C向けのWebサービスの認証機構に向いている
•独自認証、OAuthをサポート
•ASP.NET CoreにはAAD B2Cのテンプレートがある
•Cognitoより使いやすい (個人の感想)
30
![Page 29: ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://reader034.vdocuments.mx/reader034/viewer/2022052200/5a6501267f8b9aa2548b5a67/html5/thumbnails/29.jpg)
ありがとうございました
31