パスワードを変更するための既知の URL を追加することで、ユーザーがパスワードを簡単に変更できるようにします

/.well-known/change-password へのリクエストをパスワード変更 URL にリダイレクトする

/.well-known/change-password からウェブサイトのパスワード変更ページへのリダイレクトを設定します。これにより、パスワード マネージャーはユーザーをそのページに直接移動できます。

はじめに

ご存じのように、パスワードはアカウントを管理する最善の方法ではありません。幸い、WebAuthn などの新しいテクノロジーやワンタイム パスワードなどの手法により、パスワードのない世界に近づくことができます。ただし、これらのテクノロジーはまだ開発中のため、すぐには変化しません。多くのデベロッパーは、少なくとも今後数年はパスワードに対処する必要があります。Google は、新しいテクノロジーや手法が一般的になるのを待つ一方で、少なくともパスワードを使いやすくすることができます。

そのためには、パスワード マネージャーに対する適切なサポートを提供することをおすすめします。

パスワード マネージャーの役割

パスワード マネージャーは、ブラウザに組み込めるだけでなく、サードパーティ製アプリとして提供することもできます。次のようなさまざまな形でお客様をサポートできます。

正しい入力フィールドにパスワードを自動入力する: 一部のブラウザでは、ウェブサイトがこの目的のために最適化されていなくても、ヒューリスティックで正しい入力を見つけることができます。ウェブ デベロッパーは、正しい HTML 入力タグにアノテーションを付けることで、パスワード マネージャーを支援できます。

フィッシングを防止する: パスワード マネージャーはパスワードが記録された場所を記憶しているため、パスワードは適切な URL でのみ自動入力でき、フィッシング サイトでは入力できません。

安全な一意のパスワードを生成する: 安全な一意のパスワードはパスワード マネージャーによって直接生成され、保存されるため、ユーザーはパスワードの 1 文字を覚える必要はありません。

パスワード マネージャーを使用したパスワードの生成と自動入力はウェブですでに十分に機能しますが、それらのライフサイクルを考慮すると、パスワードを必要に応じて更新することは、生成と自動入力と同じくらい重要です。これを適切に活用するために、パスワード マネージャーに次の新機能が追加されています。

脆弱なパスワードを検出して更新を提案する: パスワード マネージャーは、再利用されたパスワードを検出し、エントロピーと脆弱性を分析できます。さらに、漏洩した可能性のあるパスワードや、パスワードを保存したなどのソースから安全でないことがわかっているパスワードを検出することもできます。

パスワード マネージャーは、問題のあるパスワードについてユーザーに警告できますが、パスワード変更の実際のプロセス(サイトによって異なります)を実行するだけでなく、ホームページからパスワード変更ページへの移動をユーザーに求めるには多くの摩擦があります。パスワード マネージャーで、パスワード変更用 URL にユーザーを直接移動できれば、はるかに簡単です。このような場合は、パスワードを変更するための既知の URL が役に立ちます。

ユーザーをパスワード変更ページにリダイレクトする既知の URL パスを予約することで、ウェブサイトでユーザーは、パスワードを変更するための適切な場所に簡単にリダイレクトできます。

「パスワードを変更するための既知の URL」を設定する

.well-known/change-password は、パスワードを変更するためのよく知られた URL として提案されています。必要な作業は、.well-known/change-password のリクエストをウェブサイトのパスワード変更 URL にリダイレクトするようにサーバーを設定することだけです。

たとえば、ウェブサイトが https://example.com で、パスワード変更 URL が https://example.com/settings/password であるとします。https://example.com/.well-known/change-password のリクエストを https://example.com/settings/password にリダイレクトするようにサーバーを設定するだけです。これで完了です。リダイレクトには、HTTP ステータス コード 302 Found303 See Other、または 307 Temporary Redirect を使用します。

または、http-equiv="refresh" を使用して <meta> タグで .well-known/change-password URL で HTML を配信することもできます。

<meta http-equiv="refresh" content="0;url=https://example.com/settings/password">

パスワード変更ページの HTML に再アクセスする

この機能は、ユーザーのパスワード ライフサイクルをより柔軟にすることを目的としています。ユーザーがパスワードを簡単に更新できるようにするには、次の 2 つの方法があります。

  • パスワード変更フォームに現在のパスワードが必要な場合は、<input> タグに autocomplete="current-password" を追加して、パスワード マネージャーによる自動入力ができるようにします。
  • 新しいパスワード フィールド(多くの場合、ユーザーが新しいパスワードを正しく入力したことを確認するために 2 つのフィールドです)で、<input> タグに autocomplete="new-password" を追加して、パスワード マネージャーが生成されたパスワードを提案できるようにします。

詳しくは、ログイン フォームに関するおすすめの方法をご覧ください。

現実世界での使用方法

Apple Safari の実装により、/.well-known/change-password はいくつかの主要なウェブサイトですでにしばらく前から利用可能になっています。

ご自身でも試してみてください。

ブラウザの互換性

パスワード変更用のよく知られた URL は、2019 年以降 Safari でサポートされています。Chrome のパスワード マネージャーはバージョン 86 以降(2020 年 10 月下旬に Stable リリースを予定)からサポートを開始し、他の Chromium ベースのブラウザでも今後サポートされる可能性があります。Firefox ではこの機能を実装する価値があると判断していますが、2020 年 8 月時点で導入する予定という発表はありません。

Chrome のパスワード マネージャーの動作

Chrome のパスワード マネージャーで脆弱なパスワードがどのように扱われるかを見てみましょう。

Chrome のパスワード マネージャーでは、パスワードの漏洩をチェックできます。about://settings/passwords に移動すると、保存されているパスワードとパスワードのチェックを実行し、更新が推奨されるパスワードのリストを確認できます。

Chrome のパスワードの確認機能

更新が推奨されるパスワードの横にある [パスワードを変更] ボタンをクリックすると、ブラウザは次のことを行います。

  • /.well-known/change-password が正しく設定されている場合は、ウェブサイトのパスワード変更ページを開きます。
  • /.well-known/change-password が設定されておらず、Google がフォールバックを認識していない場合は、ウェブサイトのホームページを開きます。
/.well-known/change-password が存在しないのにサーバーが 200 OK を返す場合はどうなりますか?

パスワード マネージャーは、実際にユーザーをこの URL に転送する前に、/.well-known/change-password にリクエストを送信して、ウェブサイトがパスワードを変更するための既知の URL をサポートしているかどうかを判断します。リクエストが 404 Not Found を返した場合、URL が利用できないことは明らかですが、200 OK レスポンスは必ずしも URL が利用可能であることを意味するわけではありません。これは、いくつかのエッジケースがあるためです。

  • コンテンツがないものの 200 OK が設定されている場合、サーバーサイド レンダリングを行うウェブサイトで「Not found」と表示されます。
  • サーバーサイド レンダリングを行うウェブサイトは、「見つかりませんでした」ページにリダイレクトした後、コンテンツがない場合に 200 OK を返します。
  • 単一ページアプリは 200 OK でシェルで応答し、コンテンツがない場合はクライアント側に「Not found」のページをレンダリングします。

このようなエッジケースでは、ユーザーは「Not Found」ページに転送されるため、混乱を招くことになります。

そのため、純粋にコンテンツがないときにランダムなページをリクエストすることで、サーバーが 404 Not Found で応答するように設定されているかどうかを判断する標準メカニズムが提案されています。実際には、URL /.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200 も予約されています。たとえば Chrome では、この URL パスを使用して、/.well-known/change-password から適切なパスワード変更 URL を事前に予測できるかどうかを判断します。

/.well-known/change-password をデプロイするときは、存在しないコンテンツに対してサーバーが 404 Not Found を返すようにしてください。

フィードバック

仕様についてフィードバックがある場合は、仕様リポジトリに問題を提出してください。

リソース

写真撮影: Matthew BrodeurUnsplash