Azure WebAppにはappservice認証機能があり、AzureAD、Google、Facebook、Twitterでの認証を簡単に設定することが可能です。
本記事は、そのうちAzureAD認証を設定した場合に発生したエラーの対応手順となります。
エラー内容
appservice認証機能はポータルで簡単に設定することが可能です。メニューの「認証/承認」からappservice認証をオンにし、Azure Active Directoryを選択します。
Azure Active Directoryの設定は簡易メニューだと名前を入力するだけで設定可能です。本エラーは、ここで「Common Data Servicesに対するアクセス許可を付与する」をオンにした場合に発生します。
設定したWebAppにアクセスしてみると、サブスクリプションとテナントの状況によっては、401エラーになる場合があります。
{"code":401,"message":"An error of type 'access_denied' occurred during the login process: AADSTS650052: The app needs access to a service ('http://rts.powerapps.com') that your organization '53cf3xxx-xxxxxxxx-xxxxxxxx' has not subscribed to or enabled. Contact your IT Admin to review the configuration of your service subscriptions. Trace ID: 57d090xxxxxx-xxxxxxxxxx-xxxxxxxxx Correlation ID: 0935axxxx-xxxxxxxxx-xxxxxxxxxxxxx Timestamp: 2020-10-20 08:47:00Z"}
エラーの意味と対応手順
ぱっと見エラーメッセージが分かりづらいですが、Common Data Serviceへのアクセス権限が無くエラーになっているようです。Common Data Serviceは「PowerAppsアプリケーションで使用されるデータストア」とのことですが(実際にはPowerAppsに限らずデータストアとして利用可能なよう)、ライセンスの概要を見ると別途購入が必要なようで、これを行っていないテナントに紐づくサブスクリプションではエラーが発生します。
対応手順
appservice認証の設定時にCommon Data Servicesに対するアクセス許可を付与しようとしたのが(ライセンスを持たないサブスクリプションでは)不要な処理でした。この設定を外します。
AzureポータルのActive Active Directoryで設定可能です。「アプリの登録」から、作成されたアプリケーションを選択します。
APIのアクセス許可メニューを選択すると、「PowerApps Runtime Service」へのアクセス許可(依頼)が設定されています。これを右の「・・・」メニューから削除します。
確認ダイアログで「はい、削除します」を選択します。
削除後にWebAppにアクセスすると、今度はアクセス許可要求のダイアログが表示されます。
承諾すると、WebAppにアクセスできるようになります。