🔒

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

2022/07/01に公開

こんにちは。地図パズル製作所のアシスタント霧島です。
前の記事では、Azure AD や Azure AD B2C を使ってログイン・サインアップすることについてご紹介しました。
https://zenn.dev/chizu_puzzle/articles/787a96f6969d13
今回は、テナントの壁の話をしたいと思います。

テナントの壁

テナントとは?店舗…?確かにそうなんだけど、システムの場合のテナントの意味は違いますね。Azure AD のテナントは、“組織がまったく別物”くらいの感覚を持って良いと思います。
つまり、社内と社外をはっきり区別するためにテナントはあるのです。

えっ?聞いてないんだけど!
ここで、考えられるいくつかのケースを見ていきましょう。

【壁①】ログインはB2Cで一本化…できない?!

社内の人のログインも B2C にして、社内も社外も一本化したいと。
つまり、Azure AD は一切使わず、Azure AD B2C だけを使う。
もちろん、社内の人も社外として扱いたいということであればそれでいいんです。

しかし、後々になって社内から、
「毎日見るサイトだから、いちいちログインするの面倒くさいんだけど!」という声が上がったとします。
上司に「ログインの一本化をしてちょ!」と言われます。
挙句の果てに、「社内の人だけは、今使っているシステムとO365連携できん?」と言われます。

結局、社内の人は Azure AD、社外の人は Azure AD B2C と分けます。
さぁ、これで社内から B2C ログインしよう!と思ったあなた、二重管理という問題に巻き込まれてください。
実はここにテナントの壁が立ちはだかります。
同じ会社が持つ Azure AD と Azure AD B2C。Azure AD にユーザーを登録しているからと言って、Azure AD B2C のログイン機能を使ってシステムにアクセスすることはできないのです。

なんでぇぇぇ?!

それがテナントの壁です。なぜなら、Azure AD と Azure AD B2C はテナントが違うからです。
それで、どうしても Azure AD B2C のログイン機能を使ってログインしたいというのならば、Azure AD に登録しているユーザーを B2C 側にもユーザー登録してあげる必要があります。
つまりユーザーの二重管理ということになります。もうお手上げです。

ですから、Azure AD と Azure AD B2C はそれぞれ異なるログインを搭載するか、OpenID Connect という裏技を使うかのどちらかになるでしょう。
ただし、OpenID Connect は二重管理を防げても、おそらく…何かしらの壁がまた出てくるかもしれないですね。B2C のログイン機能を使っているからね!

【壁②】Azure ADとAzure AD B2CでURLが2つできる?!

テナントの壁は越えられないと。OpenID Connect なんてやってられんと。
もうそうなったら、Azure AD と Azure AD B2C はそれぞれ異なるログインを搭載してあげましょう。
社内は Azure AD で発行したアカウントでログインし、社外は Azure AD B2C のログインを使ってアプリにアクセスしてもらいます。
こんなイメージです。さっきよりシンプルでしょ?

と思ったら、今度は別の壁が立ちはだかります。

URL が社内と社外で分かれるぅぅぅ!

Azure AD B2C を使いたいなら、なんと Azure AD B2C にもアプリを登録(エンタープライズ アプリケーション)する必要があります。つまり、社内テナントの Azure AD にアプリを登録し、社外テナントの Azure AD B2C にもアプリを登録するのです。ややこしい!
Azure AD にアプリを登録すると URL が発行されますから、それぞれ別の URL が生成されるということになります。
したがって前出したイメージは正確にはこうなります。

社内と社外でURLが別になってしまうということになります。
発行された URL をシステムに設定することで、URL にアクセスするとシステムに接続されるという流れができます。しかし、1つのシステムには1つの URL しか設定できません。
結局、システムは2つ作成する必要がありそうですね。
なんか美しくないなぁ。

あ、上の図を見て思ったことがあると思います。
どうせなら、システムもテナントを分けちゃえば良いんじゃないの?って。
ここで立ちはだかるのが、3つ目の壁、コストの壁です。

【壁③】請求先も一本化できない…?!

Azure AD B2C のために作ったテナント。
システムにかかったお金の請求先は一緒にしたいと思うんじゃないでしょうか?
テナントが違うと、結局、お支払い情報も二重管理、請求先も別になります。
それはそれで面倒くさいですよね。請求にもテナントの壁が立ちはだかるんですよねぇ。
Azure AD B2C は無料で利用できますから(制限有り)、Azure AD B2C 用のテナントでは、基本的にお金が発生しません。
システムの方は基本的にお金が発生すると思いますので、だったら、サブスクリプションを作った方にシステムも置いておこうと思うわけです。
ね?Azure AD のテナントは、“組織がまったく別物”くらいの感覚を持って!と言った理由がここまで来てよく理解できましたよね?

まとめ

Azure AD と Azure AD B2C の話、いかがでしたか?ハトとカラスの話はどこへ行ってしまったのやら。唯一の解決策かもしれませんが、OpenID Connect を使えば、社内からも社外からも1つの URL でシステムにアクセスできるかもしれません!この件はちょっと持ち帰らせていただきます。
Azure AD は面倒くさいところもあるけどとにかく真面目なんです。友達になれそう?みんなもがんばって!

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

https://chizu-puzzle.com

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

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

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

Discussion