Azure AD B2C(OIDC)でアクセストークンが取得できない【Msal.js】

Azure AD B2C(OIDC)でアクセストークンが取得できない【Msal.js】
◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

今回は、ドキュメントをちゃんと読まなかった自戒を込めてブログの作成を行いました。公式ドキュメントは舐めるように読む必要があります。だって公式のドキュメントには大体記載があるんですもん。認証・認可をフロントで実装した場合は、フロントからアクセストークンを付与して上げねばならない!!

ご挨拶

ども!最近はフロントだけでなく、バックエンドの勉強もやっている龍ちゃんです。今年はフロントエンドの年でした。来年はうまくいっていればバックエンドの年になる予定です。

ちなみに今回は、「Azure AD B2C 」を用いてReact(SPA)で認証・認可を実装したいときに起きた問題なので、がっつりフロントエンドの話題になります。それでは本題に入っていきます。

msal-react」を利用してアクセストークンを取得した際に、アクセストークンで空文字が返答されるときの対処法について話していきます。Azure AD B2C を利用してOpen ID Connectによるサインインをすると仮定します。

アクセストークン発行結果

対応としては、以下の二点になります。

  • 認証・認可の際にスコープとして「クライアントID」を渡す
  • 「アプリケーションの登録」で「APIの公開」と「APIのアクセス許可」でスコープを作成する

それでは対応について書いていきます。

認証・認可の際にスコープとして「クライアントID」を渡す

こちらは、すぐ効果を確認することができます。設定方法としては、コードレベルでの修正であるためすぐ動きます。ちゃんと公式のリファレンスに書いてありました。Open ID Connectの場合は、クライアントIDをスコープとして渡すことでアクセストークンの取得を行うことができます。

自前のスコープを作成する

こちらは、設定の反映まで若干の時間を要します。設定方法としては、「Azure Portal」側での設定後、コードレベルでの修正が必要になります。設定したがアクセストークンが取得できない場合は、設定が間違っているか反映中なので落ち着いて対処しましょう。公式ページにもしっかりと記載があります。それでは、解説を始めていきましょう。

まずはアプリの登録画面から「APIの公開」をクリックしましょう。

スコープの追加というボタンをクリックしましょう。

適当に埋めたら「スコープの追加」です。ここで付けたスコープ名は後で検索に用いるので、わかりやすい名前が良いと思います。テキトーに埋めたら恥ずかしいので、適当にお願いします。

次に「APIのアクセス許可」という部分に飛びましょう。ここで「アクセス許可の追加」という部分をクリックしてください。

先ほど追加したスコープを検索して追加しましょう。「所属する組織で使用しているAPI」から検索すると大変楽です。

追加したら、下記の部分の「管理者の同意を与えます」をクリックします。右側の状態にチェックマークがついていれば成功です。

実際には、プロジェクトの要件によってスコープを正しくとる必要があります。この辺はご注意ください。これでスコープの設定は終了になります。

追加したスコープをクリックすると、スコープのURLが発行されています。こちらを認証・認可時に送信すると、アクセストークンが払い出されていると思います。

以降は、僕がミスした点です。

設定直後は、アクセストークンが発行されていませんでした。キャッシュが悪さをしていたのか、反映に時間がかかるのかはわかりませんが、設定後もうまく取れない場合は一度アプリを落としたりしてみると良いかもしれません。

あとは思い切って待機ですね。

終わりに

今回は、ドキュメントをちゃんと読んでいなかったせいで起きた問題なので、全面的に僕が悪い問題となっています。

というか認証としては使っていたのですが、認可として使用するとなって初めてアクセストークンを欲した話になります。その辺は、「フロントとバックエンドの接続時にアクセストークンを使用してセキュアに運用する」こちらで触れています。

ミスを発見して、勉強して、新しいミスを見つけるの繰り返しです。

頑張りましょう….. ではまた~

アバター画像
About 龍:Ryu 107 Articles
2022年入社で主にフロントエンドの業務でTailwindと遊ぶ日々。お酒とうまいご飯が好きで、運動がちょっと嫌いなエンジニアです。しゃべれるエンジニアを目指しておしゃべりとブログ執筆に注力中(業務もね)//
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる