There are several questions I have about the pricing for accounts and authentication with Azure AD B2C, and they revolve around the concern for scripted DOS attacks.
Pricing Page: https://azure.microsoft.com/en-us/pricing/details/active-directory-b2c/
Azure provides both email and multifactor authentication via text message or phone call when creating accounts.
The email verification is included in the base price for authentication attempts. The first 50k authentications per month are free. I believe this includes sign-in authentication, account/password recovery, and signup. Multifactor authentication (text message or phone call) is optional, and has a flat rate of $0.03 per authentication (no freebies).
What I'm not 100% clear on, is what counts as an authentication. Does the charge occur for each attempt, or only for a successful authentication where a token is issued? I think it may be the latter (successful and token issued), considering the definition given:
Authentications: Tokens issued either in response to a sign-in request initiated by a user, or initiated by an application on behalf of a user (e.g. token refresh, where the refresh interval is configurable).
So if an attacker attempts to authenticate, and fails, will we get charge for each attempt? Is it the same for multifactor as well?
If the attacker is motivated enough, she could conceivably setup her own email and SMS system for receiving and parsing verification codes, and using them to create a large number of fraudulent accounts. If an attacker were to get around the authentication and create millions of accounts, would we still end up getting charged for those accounts and authentications?
Would it matter whether or not we had a scheduled task that would periodically delete incomplete or inactive accounts?
Scenarios:
- 1,000,000 fraudulent accounts are created on July 4th, but we find and delete them through the graph API by 1:00am on July 5th.
- We are billed on the first of the month. An attacker creates 1,000,000 accounts on the last day of our billing cycle, and we don't catch it in time.