web-dev-qa-db-ja.com

シングルサインオンシステムを備えたサイトがログイン画面にリダイレクトするのはなぜですか?

Google/Youtubeなどのサイトにシングルサインオンシステムのログイン画面へのリダイレクトがあるのはなぜですか。これは業界慣行ですか?

6
brakes

これは主に技術的な理由で行われます。同じ理由で、ASP.NET Webサイトのデフォルトのメカニズムは、ログオンが成功した後、ユーザーがいた場所にリダイレクトされる、スタンドアロンのログオンページを持つことです。

すべてのページにリダイレクトメカニズムなしでログオンフォームを埋め込むと、いくつかの問題があります。

  • すべてのページのログオンフォームを送信し、(HTMLデータの送信バイト数に関して)すべてのページを長くしている。ログオンページへのリンクははるかに短いです。

  • クリックでログオンフォームを表示または非表示にするにはJavaScriptが必要であり、JavaScriptが無効になっているユーザー向けに特定のバージョンを作成する必要があります。 (エラーを表示するために)ログオン失敗時にもフォームを表示する必要があります。

  • ログオンフォームがページの右上隅に「切り替え可能な」小さな四角形として表示される場合は、ログオンに失敗したときに説明的なエラーメッセージを表示するための十分な場所がありません。

  • ページ自体に他の形式がある場合、ユーザー名とパスワードフィールドに使用されているものと同じフィールド名を使用することはできません。

UXに関しては、スタンドアロンログオンページと各ページの隅にあるログオンフォームの違いはそれほど大きくありません。さらに、スタンドアロンのログオンページを使用すると、追加情報を表示したり、より詳細なエラーメッセージを表示したりできます。

4

良い質問!リダイレクトには非常に大きな理由があります。

シングルサインオンは、実際の認証を行う認証プロバイダーにユーザーを転送することで機能します。このログインページはプロバイダーでホストされています。認証された場合、プロバイダーはユーザーを認証トークン/チケットと共にコンシューマーに送り返します。

このようにする必要があるのは、ユーザーを認証するために必要な基盤となるシステムにコンシューマーがアクセスできず、ユーザーの資格情報を受け取ることも許可されていないためです。

12
kroehre

これはユーザビリティの問題ではなく、セキュリティのためです。

UXの観点から見ると、より良い解決策は、サードパーティから提供された埋め込みHTML(つまり、HTMLモーダル)のダイアログを使用することでしょう。これが不可能な唯一の理由はセキュリティです。要求元のサイトで認証ダイアログが実行されている場合、そのページの悪意のあるスクリプトがパスワードを盗んだり、自分のアプリを隠された方法で認証したりする可能性があります。

認証プロバイダー(google、facebookなど)は、サイトでiframeを使用する可能性があります。これにより、(少なくともそれほど古くないブラウザーでは)ホストページのコードがiframeにアクセスする(たとえば、パスワードを盗む)ことができなくなりますが、ホストページがiframeの上部に視覚要素をオーバーレイして別のものに偽装する可能性があるという脆弱性があります(たとえば、アプリによって要求されたアクセス許可を非表示にして、その上に白い四角を置くなど)。

したがって、リクエストしているサイトがGoogle/Facebook/etcアカウントで悪意のある行為を行えないようにする唯一の方法は、(残念ながら)リダイレクト(またはポップアップで、これは悪いことです)です。

3
Benja