Webアプリの利用にあたり、認証にIDとパスワードを直接入力する認証方式は安全じゃないのか?どうすればいいのか?

<前提>
本記事は、Office製品などのユーザー向けアプリではなく、Azure Web Appsでデプロイされたアプリなど、システム側・バックエンド側のアプリが他のサービスやAPIとやり取りする場面を対象にしています。
また、Microsoft製品(Microsoft Entra ID など)を例に説明します。

<回答>
アプリにユーザーのIDとパスワードを直接入力して認証(アクセストークンを取得)する方式は「ROPCフロー」と呼ばれますが、現在はセキュリティリスクが高いため推奨されていません。

主な理由は次のとおりです。
・ユーザーID/パスワードが入力・保管・送信の過程で漏えいすると、第三者による不正アクセスにつながる
・多要素認証(MFA)や条件付きアクセスなどの保護機能と両立しない/制約が多く、脆弱性が高い(Microsoft Entra IDのROPCはMFAをサポートしていません)

推奨される代替策を以下に例示します
1. Client Credentials を使い、ユーザーではなく「アプリ自身の身分証(クライアントシークレットや証明書)」でトークンを取得し、通信先へのアクセス許可を得る
2. マネージドIDを有効化し、Azureがそのアプリ専用の身分証を自動管理する仕組みを使う

なお、上記1と2を比較すると、2(マネージドID)のほうが安全で運用負荷も低くなります。

いいね (←参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルクロステクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください