Azure AD で認証すると 'unsupported_response_type' AADSTS700054 エラーが発生する - ASP.NET Core

Azure AD で認証すると 'unsupported_response_type' AADSTS700054 エラーが発生する現象と対処法を紹介します。

現象

作成したASP.NET Coreアプリケーションで、Azure ADのアカウントで認証すると、以下のエラーが発生します。
エラーメッセージ
An unhandled exception occurred while processing the request.
OpenIdConnectProtocolException: Message contains error: 'unsupported_response_type', error_description: 'AADSTS700054: response_type 'id_token' is not enabled for the application.
Trace ID: (トレースID)
Correlation ID: (コレクションID)
Timestamp: YYYY-MM-DD hh:mm:ssZ', error_uri: 'https://login.microsoftonline.com/error?code=700054'.
Unknown location

Exception: An error was encountered while handling the remote login.
Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler<TOptions>.HandleRequestAsync()


対処法

2つ方法があります。

対処法1: 承認エンドポイントでID トークンを発行する

承認エンドポイントでIDトークンを発行する設定に変更します。

Azureポータルで、Azure Active Directory の設定画面を表示します。左側のメニューの[アプリの登録]の項目をクリックします。 下図の画面が表示されます。右側のエリアから、問題が発生しているアプリケーションの項目をクリックします。


アプリケーションの設定画面が表示されます。 右側のエリアの[リダイレクトURI]の[n個のWeb、n個のSPA、n個のパブリッククライアント]のリンクをクリックします。


リダイレクトURIの設定画面が表示されます。


下にスクロールし[暗黙的な許可およびハイブリッド フロー]の項目の[承認エンドポイントによって発行してほしいトークンを選択]の項目の [ID トークン (暗黙的およびハイブリッド フローに使用)]のチェックボックスをクリックします。


[ID トークン (暗黙的およびハイブリッド フローに使用)]のチェックボックスにチェックがついたことを確認し、画面下部の[保存]ボタンをクリックします。


設定が変更され、保存できました。


しばらく時間を空けて、再度アプリケーションを実行し、エラーが解消されるか確認します。

対処法2: シークレットキーを作成しアプリケーションに埋め込む

アプリケーションでシークレットキーを作成し、appsettings.jsonのClientSecretに設定します。
アプリケーションのシークレットキーの作成手順はこちらの記事を 参照してください。
appsettings.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "example.ipentec.com",
    "ClientId": "(クライアントID)",
    "TenantId": "(テナントID)",
    "ClientSecret": "(作成したシークレットキーを設定)",
    "ClientCertificates": [
    ],
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath ": "/signin-oidc"
  },
  "AllowedHosts": "*"
}

しばらく時間を空けて、再度アプリケーションを実行し、エラーが解消されるか確認します。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-08-07
作成日: 2022-08-06
iPentec all rights reserverd.