こんにちは、サイオステクノロジーの佐藤 陽です。
今回は少しニッチなところで、EntraIDのアプリケーションマニフェストの概要をご紹介したいと思います。
本当に記事にしたいのはこのマニフェスト部分関連でハマったポイントの解決方法なのですが
その解決方法を理解するにはマニフェストの概要を知っておく必要があるため、まずはこちらを紹介していきたいと思います。
はじめに
Azureを利用したアプリケーションにおいて認証認可の仕組みを実現する際、EntraIDを使うことも多いかと思います。
そのEntraIDには「マニフェスト」と呼ばれる設定項目があります。
今回そのマニフェストに関してどういったものかをご紹介したいと思います。
EntraIDのアプリケーションマニフェストとは
認証認可の仕組みを実現する際には、EntraID上でアプリケーションを作成し、Microsoft Authentication Library (MSAL) などを利用することが多いかと思います。
MSALを利用することで、ClientIDなどを与えるだけで簡単にログイン画面などの実装が可能となります。
今回触れる「アプリケーションマニフェスト」は、そのEntraID上に作成したアプリケーションの要素になります。
実際、アプリケーションのページを表示すると、管理のブレードの一番下にマニフェストというブレードが存在します。
そしてこの項目を選択すると、何やらjson形式のテキストデータが表示されることがわかるかと思います。
これが今回ご紹介するマニフェストの内容になります。
どういった内容が記載されているのか
マニフェストのテキストを確認すると、何かの設定パラメータのようにも見えます。
実は、このマニフェストにはアプリケーションの設定にかかわる全てのことが記載されています。
つまり、Azure Portal上において認証の設定や、トークン構成などを行うことが多いかと思いますが、
それらの設定内容がすべてこのマニフェストにテキストとして反映されます。
(逆に、マニフェストを修正することでしか設定できない項目もいくつか存在します。)
例えば以下のようなものが含まれます。
Property | 内容 |
---|---|
appId | アプリケーションのクライアントID |
groupMembershipClaims | ユーザーが所属するグループ情報をクレームに含めるか、およびそのグループの種別の設定 |
signInAudience | サインインできるユーザーのテナント(単一テナントorマルチテナントなど) |
設定を変更する際には、AzurePortal上から設定してもらえればこのマニフェストの値も書き換わりますし、一方でマニフェストを直接書き換えることでもPortal上の設定を変更することが可能です。
修正方法
マニフェストの情報を直接Azure Portalから修正することはできません。
修正するためには、一度ダウンロードし、ローカルで修正したのちにアップロードします。
試しに一度ダウンロードし、空欄であった”identifierUris”の値を以下のように設定します。
"identifierUris": [
"api://058cae36-9e85-4e29-b9e1-658943948f40"
],
そしてアップロード後にAPIの公開のブレードを確認すると
新規にアプリケーションID URIが発行されていることが確認できました。
では試しに、変更してはいけなさそうな値を変えてみたいと思います。
アプリケーション作成時に自動で割り当てられるappId
の値を修正し、アップロードします。
するとさすがに以下のように怒られてしまいました。
確かにドキュメントを読んでも、appIdに関しては
It’s a not nullable and read-only attribute.
との記載があるので修正はできないようです。
マニフェストの使われ方
このマニフェストがアプリケーション設定そのものだということは理解いただけたかと思います。
MSALなどでこのアプリケーションに対してアクセスする際は、このマニフェストの内容に基づいて処理が行われます。
例えば、クライアントに返されるアクセストークンのクレームの項目などがそれに該当します。
そのため、認証認可の仕組みを実現する際には「どこのアプリケーションマニフェストに基づいて処理が行われているか」という意識を持つことが大切です。
まとめ
今回はEntraIDのアプリケーションにおけるマニフェストという概念をご紹介しました。
一言でいえば、EntraIDのすべての設定項目をjson形式のオブジェクトであらわしたものになります。
そしてこのマニフェストに沿って認証認可の処理が実現されます。
なぜこのマニフェストについてご紹介したか、ですが
最近EntraID周りの実装でハマったポイントがあり、それを解消するためにこのマニフェストの概念の理解が必要でした。
そのため次回はそのハマりポイントの解消方法についてご紹介します。
ではまた!
参考ページ
https://learn.microsoft.com/en-us/entra/identity-platform/reference-microsoft-graph-app-manifest