/.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 Found
、303 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
に移動すると、保存されているパスワードとパスワードのチェックを実行し、更新が推奨されるパスワードのリストを確認できます。
更新が推奨されるパスワードの横にある [パスワードを変更] ボタンをクリックすると、ブラウザは次のことを行います。
/.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 Brodeur(Unsplash)