Azure Active Directoryを使ってみた

# 概要

Azure Active Directoryを使ってみます。

# Azure ADの設定
そもそもAzure ADの設定は、以下の順に行わなければならないみたいです。

1. 既定のディレクトリ（無料試用版サブスクリプションのあるアカウント）でB2Cディレクトリを **新規作成** 
2. 既定のディレクトリで、(1)で作ったディレクトリをサブスクリプションにリンク
3. (1)で作ったディレクトリに移動して、アプリケーションを登録

(2)を設定する際に、(1)で作ったディレクトリに移動してしまったために、色々挫折しかけました。以下を参考にしました（というか、そのまんま :p）。

1. [Azure Portal で Azure Active Directory B2C テナントを作成する](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-get-started#link-your-tenant-to-your-subscription)
2. [Azure サブスクリプションを Azure AD B2C テナントにリンクする](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-how-to-enable-billing#feedback)
3. [Azure Active Directory B2C: アプリケーションを登録する](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-app-registration)

**アプリケーションの登録** では、ポリシーの作成まで行いました。プロバイダ、属性、要求は適当に設定しました。

# サンプルアプリケーション

[Azure Active Directory B2C: .NET Web API を構築する](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-devquickstarts-api-dotnet) を参考にしました。

## SSLで立ち上がらない
**マルチ スタートアップ** 以外に設定は書かれていないのですが、なぜかSSLで立ち上がりません。プロパティを見ても、「SSL有効：True」なのです。偉大なるGoogle先生に聞いても、「動的ポートをFalseにせよ」って出てくるんですが、Visual Studio 2017だとどこにあるんですかね？

というわけで、対症療法としてプロパティページ（プロジェクト右クリック→ **プロパティ** ）から、**Web** タブ→ **プロジェクトのURL** に値を入れました。やったらダメだったらごめんなさい。

設定値は以下のようにしました。設定後に **仮想ディレクトリの作成** ボタンを押さないと怒られます。**アプリケーションのルートURLをオーバーライドする** でhttpsのURLを入れたら上手くいくのかと思いきや、なぜかうまくいきませんでした。なぜだ。

| ProjectName      | Value                  |
|:-----------------|:-----------------------|
| TaskService      |https://localhost:44332/|
| TaskWebApp       |https://localhost:44316/|

とりあえず、Azureと連携させずに動作することを確認！

ようやく[Web アプリ コードの更新](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-tutorials-web-app#update-web-app-code)を参考に、ソースコードを書き換えます。

- `ida:Tenant` xxx.onmicrosoft.com
- `ida:ClientId` アプリケーションID
- `ida:ClientSecret` [クライアント パスワードの作成](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-tutorials-web-app#create-a-client-password)

以下、**b2c_1_** を忘れないこと。

- `ida:SignUpSignInPolicyId` [サインアップまたはサインイン ポリシーを作成する](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-tutorials-web-app#create-a-sign-up-or-sign-in-policy)
- `ida:EditProfilePolicyId` [プロファイル編集ポリシーを作成する](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-tutorials-web-app#create-a-profile-editing-policy)
- `ida:ResetPasswordPolicyId` [パスワードのリセット ポリシーを作成する](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-tutorials-web-app#create-a-profile-editing-policy)

# 今後使いそうな資料

Azure AD関連

- [Azure AD B2C: Azure AD Graph API を使用する](https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet)

Azure IoT関連

- [大量リクエストをノンプログラミング（ほぼ）で捌くEvent Hubs、Stream Analyticsの勘所](https://qiita.com/yoshiro_ma/items/161d9688698871390823)
- [ストリーミング ユニットの理解と調整](https://docs.microsoft.com/ja-jp/azure/stream-analytics/stream-analytics-streaming-unit-consumption#how-many-sus-are-required-for-a-job)

一般的な説明

- [Azure Web App のユーザー認証を Azure AD B2C で行うために](https://blogs.msdn.microsoft.com/ainaba-csa/2018/01/05/azure-web-app-authn-by-aadb2c/)
- [SlideShare:ASP.NET CoreとAzure AD B2Cを使ったサクっと認証](https://www.slideshare.net/YutaMatsumura/aspnet-coreazure-ad-b2c)
- [SlideShare:大学等におけるAzure AD B2Cを使用したSNS認証の活用](https://www.slideshare.net/naohiro.fujie/azure-ad-b2csns)
- [SlideShare:クラウドにおける Windows Azure Active Directory の役割](https://www.slideshare.net/junichia/windows-azure-active-directory-16942909)
- [SlideShare:Microsoft Azure & Active DirectoryDesign Patterns～認証基盤の展開に関するエッセンス～](https://www.slideshare.net/ryukiyoshimatsu/microsoft-azure-active-directorydesign-patterns)
-