Azure Active Directory B2Cを使いこなそう 第1回「Azure Active Directory B2Cの特徴と使いどころ」

# 連載予定

1. [Azure Active Directory B2Cの特徴と使いどころ](https://qiita.com/yyukawa/items/78a52275b9dc9c37cd9e) ★
1. [基本的な使い方（標準ユーザーフロー）を知る](https://qiita.com/yyukawa/items/5996fd6558a9f5fa8631) 
1. [基本的な概念（テナント、アプリケーション、ユーザー）を理解する](https://qiita.com/yyukawa/items/da96b4666ace678db167)
1. [ユーザーフローの日本語化](https://qiita.com/yyukawa/items/f5a6960f5e457b5cc262) 
1. [パスワードレス認証](https://qiita.com/yyukawa/items/7c96f9599630420f37c3)
1. 条件付きアクセスを使って環境に応じた認証を要求する
1. 柔軟な認証フローを実現する：カスタムポリシー


# はじめに

ほんの少し前まで、認証といえばユーザー名とパスワードを使うもので、それをサービスごとに自作するというのは当たり前のことでした。でもいまは違います。SMSなどのサービスと連携できることは当たり前だと思われていますし、相次ぐパスワード流出事件で従来のユーザー名とパスワードだけを使って認証するのは危険なことだと考えられるようになりました。

- パスワードという厄介な代物を自分で作ったシステムで管理しないたくない。
- パスワードリストアタックからユーザーを守るためにSMSなどを使った多要素認証を提供したい。
- GoogleやFacebook、Appleなどのサービスと連携したい。

これらの要件を満たした認証を手軽に安全に費用をかけずに提供できるサービスが、Azure Active Directory B2Cです。

Azure Active Directory B2Cは文字通りBtoC向けに認証を提供するサービス（IDaaS：IDentity as a Service）です。
類似するその他のサービスと比べて、圧倒的に安価であるということが一番の特徴です。
実質的に法人ユーザを管理するために利用することが前提になっているAzure Active Directoryとは異なり、個人ユーザーを対象にしています[^1]。
非常に癖があって慣れるまで苦労はしますが、カスタムポリシーを使うことで柔軟な認証フローを構築できることも魅力の一つです。

[^1]: 法人のユーザーを管理するのにB2Cを使ってはいけないという意味を含んでいるので注意が必要です。


## 課金体系
https://azure.microsoft.com/ja-jp/pricing/details/active-directory/external-identities/

P1とP2については条件付きアクセスと一緒に取り上げますが、50000月間アクティブユーザーまでは無料であるという点が目をひく部分です。小規模なサービスだと実質的にかかる費用は多要素認証の時のコストくらいだと思います。
個人でも試しに軽い気持ちで使うことができるサービスです。
課金体系は過去に何度か改訂されていて、その都度より魅力的なものに変わっているので、最新の情報は公式サイトを確認してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16609/cf005566-48c4-23b7-0cd1-9d161c92b94e.png)

## 主な情報源

- [Azure Active Directory B2C のドキュメント \| Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/)
- [azure\-ad\-b2c/vscode\-extension: Azure AD B2C VS code extension](https://github.com/azure-ad-b2c/vscode-extension)
- [azure\-ad\-b2c/samples: Azure AD B2C Identity Experience Framework sample User Journeys\.](https://github.com/azure-ad-b2c/samples)
- [Newest 'azure\-ad\-b2c\+identity\-experience\-framework' Questions \- Stack Overflow](https://stackoverflow.com/questions/tagged/azure-ad-b2c+identity-experience-framework)
- [カスタム ポリシーの概要](https://download.microsoft.com/download/3/6/1/36187D50-A693-4547-848A-176F17AE1213/Deep%20Dive%20on%20Azure%20AD%20B2C%20Custom%20Policies/Azure%20AD%20B2C%20Custom%20Policies%20-%20Introduction.pdf)
- [テナント内でカスタム ポリシーを活用する](https://download.microsoft.com/download/3/6/1/36187D50-A693-4547-848A-176F17AE1213/Deep%20Dive%20on%20Azure%20AD%20B2C%20Custom%20Policies/Azure%20AD%20B2C%20Custom%20Policies%20-%20Leveraging%20Custom%20Policies%20for%20your%20Tenant.pdf)
- [ポリシーの構築とキーの管理](https://download.microsoft.com/download/3/6/1/36187D50-A693-4547-848A-176F17AE1213/Deep%20Dive%20on%20Azure%20AD%20B2C%20Custom%20Policies/Azure%20AD%20B2C%20Custom%20Policies%20-%20Structuring%20Policies%20and%20Managing%20Keys.pdf)
- [独自の ID を持ち込んでユーザーを移行する](https://download.microsoft.com/download/3/6/1/36187D50-A693-4547-848A-176F17AE1213/Deep%20Dive%20on%20Azure%20AD%20B2C%20Custom%20Policies/Azure%20AD%20B2C%20Custom%20Policies%20-%20Bring-your-own-identity%20and%20Migrating%20Users.pdf)
- [ポリシーのトラブルシューティングとアクセスの監査](https://download.microsoft.com/download/3/6/1/36187D50-A693-4547-848A-176F17AE1213/Deep%20Dive%20on%20Azure%20AD%20B2C%20Custom%20Policies/Azure%20AD%20B2C%20Custom%20Policies%20-%20Troubleshooting%20Policies%20and%20Auditing.pdf)
- [カスタム ポリシー スキーマの詳細](https://download.microsoft.com/download/3/6/1/36187D50-A693-4547-848A-176F17AE1213/Deep%20Dive%20on%20Azure%20AD%20B2C%20Custom%20Policies/Azure%20AD%20B2C%20Custom%20Policies%20-%20Deep%20Dive%20on%20Custom%20Policy%20Schema.pdf)