OAuth は代理認証を可能にする優れたフレームワークであるため、ユーザーはサイトを使用するために新しいユーザー名とパスワードを必要としません。ただし、OAuth によって認証されたユーザーを格納して、そのユーザーに対してアプリケーション レベルのアクセス許可を実行できるようにする方法については、少し曖昧です。
OAuth は、要求された識別子や電子メールなど、ユーザーに関するいくつかの要求を返します。これまで、OAuth によって認証されたユーザーの一意の識別子としてクレームされた識別子を使用してきましたが、これを行うにはいくつかの問題があります。
- Google は、ログインに使用する URL ごとに異なる要求 ID を提供します。
- 各プロバイダーは、同じ人物に対して異なる ID を提供します (たとえば、同じメール アドレスで Yahoo と Google のアカウントを持っている場合、それぞれ異なる ID を持つことになります)。
これらはどちらも完全に理にかなっていますが、特に前者は対処するのが少し面倒です。
この主要な識別子を電子メール アドレスに移動するということは、同じ電子メール アドレスを持っている限り、使用する URL とプロバイダーに関係なく、同じユーザーを簡潔にすることを意味します。
私の質問は、電子メール クレームを、アクセス許可の基にするユーザーの一意の識別子として使用することに切り替えた場合、これは安全になるのでしょうか?
懸念
- メールアドレスを OAuth ユーザーとして許可する前に、プロバイダーがメールアドレスを検証することに依存している
- プロバイダーはメールアドレスを検証する必要がありますか (主要なものはすべて検証していると思います)?