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
に設定します。
アプリケーションのシークレットキーの作成手順は
こちらの記事を
参照してください。
{
"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