🔓

Azure AD とマブダチになった話①

2022/06/24に公開

こんにちは。地図パズル製作所のアシスタント霧島です。

皆さん、ログイン・サインアップ周りはどうしていますか?
地図パズル製作所のサイトにも、ログイン・サインアップ機能をつけたいということで、こちらの記事を書きました。
FirebaseUI for Webを利用したログイン・サインアップとの比較記事になります。
https://zenn.dev/chizu_puzzle/articles/605e948ba8c0a6

さて、この記事は以下の項目が当てはまる人に読んでほしいものです。

  • ログイン・サインアップ実装は正直面倒くさい。
  • セキュリティは誰かにやってほしい。
  • Azure AD を導入してみようかなぁ。

悩んだあなたに私の親友をご紹介しましょう。
Azure AD です。正式には Azure Active Directory (アジュール・アクティブ・ディレクトリ)ですね。
この子を使って何をしたいのか?認証です。認証といっても色々ある。
今回は、ログイン・サインアップをメインに語っていこうではないか!

ハトでもわかる Azure AD

ハトが仲間に入れてほしそうな目をして近づいてくるとき、どうしましょう。
でもカラスは仲間に入れたくない場合もありますよね。彼らは大体同じ場所にいます。そんな時に大活躍するのが、Azure ADです。
Azure ADはハトなのかカラスなのかをまず判断してくれて、ハトなら仲間に入れる、カラスなら仲間に入れないという警備をしてくれます。

なるほど、う、うん、うん!

ハトのイメージ
いらすとやのハトがかわいそうなんですが...。

では、今回のケースを社内システムに置き換えて考えてみましょう。
社内の人(ハト)は社内システムを見ることができます。
しかし、社外の人(カラス)はアクセスできません。そもそもそのシステムがあること自体知りません。

さて、これをどう実現すればよいのか?手順はこちら。

  1. 「Azure Portal」という管理システムの管理者アカウントを発行する。
  2. 社内システムを「Azure Portal」に登録。
  3. 社内の人だけにAzure ADで発行したアカウント(onmicrosoft)を発行。
  4. 社内システムにアクセスできる人を登録(アプリとアカウントを紐づけ)。

とっても簡単ですよね?
メリットは、1つのアカウントさえ持っていれば、社内システムへのログインも、Officeアプリへのログインも、Teamsへのログインもたったの1回で済むということです。
少し系統が違いますが、OneDriveで社内のデータ共有をすることも簡単にできます。
DXが提唱されるこのご時世、システムの一本化はぜひMicrosoftにお任せくださぁいということです。

んじゃぁ、社外の人もアクセスしたいとなったらどうするの?

カラスも仲間に入れてあげたい・・・!

そういうこともありますよね。
ここからはさらに2つのケースを考えていきましょう。

ゲストとして仲間に入れる

まず1つ目のケースです。ゲストアカウントという種類のアカウントがあります。カラスにゲストアカウントをAzure ADから発行するのです。
ただし、これは残念と言ってよいのか、ありがたいと言ってよいのかわかりませんが、Azure Portalで発行したアカウントには必ずAzure Portalがくっついてきます。つまり、組織用のAzure Portal と個人用の Azure Portal というのが存在するわけです。
そして、個人用のAzure Portalから自分が所属しているグループの他のユーザーを見ることができます。
単にアプリにアクセスしてきてほしいだけなので、ほかの人のユーザー名が見えてしまうってなんか嫌ですよね。プライバシー的にどうでしょうか。知り合いなら見えてもよいということもあると思いますが…。
でもこれ、決して間違っているというわけではないんです。
例えば、Teamsのあるチャネルにゲストアカウントとして入った場合、チャネルのチームメンバーを見ることができます。ですから、使い方次第でこの「ゲスト」という属性は有用になります。
いやいや、やっぱほかの人の名前とかが見えちゃうのはダメでしょ、こちとら規模が100人超えるからポチポチやってられんのよ…と思ったら次をおすすめします。

Azure AD B2Cを利用する

ここで出てきたのが、Azure AD B2C(ビー・ツー・シー)です。Azure ADの親戚というところでしょうか。コンシューマー向けの認証に特化した機能となります。
イメージで構成を考えてみましょう。

前述のAzure ADと違うところの1つ目は、サインアップです。
Azure ADの場合は、アカウントをAzure Portalから管理者が発行する必要がありました。
しかし、B2Cの場合は社外の人やお客様が自分でアカウントを発行する必要があります。
例えば、Amazonも楽天も、ほとんどのショッピングサイトがBtoCサイトですよね。ですから、サインアップもBtoC向けに作る必要があるのです。

アカウントを発行する方法として、例えば以下の方法があります。

  • ID・パスワード認証(メール認証)
  • Googleアカウント連携
  • Microsoftアカウント連携

Azure ADと違うところの2つ目は、ログインです。
Azure AD B2Cの場合は、ログイン画面がきちんと用意されています。ログイン画面を自作することも可能です。
Azure ADから発行されたアカウントにログインされていたからと言って、ログイン画面をパススルーできるわけではありません。それはなぜか次回ご説明します。

ここで注意点があります。

同じMicrosoft社なのにねぇ!それはなぜかしら?!
ここにきてややこしくなってきました。ここからさらにややこしくしていきたいと思います。テナントの登場です。

あ、でもテナントの壁については次回お話しすることとしましょう!
https://zenn.dev/chizu_puzzle/articles/3f0c703f1de609

まとめ

Azure AD は難しそうに見えて単純です。まじめくんなんですよ。
良いところも難しいところも受け止めて仲良くなってくださいね!

最後に、地図パズル製作所についてご紹介します。
地図パズル製作所では地図パズルで遊べるウェブサイトを作っています。

https://chizu-puzzle.com

※地理院地図を加工して利用しています。

レベルごとに難易度が全然違ってきますので、ぜひ挑戦してみてくださいね!
ブラウザを途中で閉じても、やったところまで記憶してくれていますから、最後まであきらめないで地図を完成させるのです。

それと、Twitter とアメブロもやっていますので、チェックお願いします~。
https://twitter.com/chizu_puzzle
https://ameblo.jp/chizu-puzzle/

Discussion