私は他の質問を読みましたが、それらは主にそうすることのセキュリティについて話しています。主に、Web サイトがブラウザベースのゲームであるという理由で、それは完全に私の関心事ではありません。ただし、より大きな問題はユーザーです。すべてのユーザーが OpenID を理解するのに十分な知識を持っているわけではありません。確かに RPX はこれを非常に簡単にします。私はこれを使用しますが、ユーザーが Google や Facebook などにアカウントを持っていない場合、またはシステムが既存のアカウントでログインすることを信頼していない場合はどうでしょうか? 彼らは別のプロバイダーでアカウントを取得する必要があります-私は、ほとんどの人がそれを行う方法を知っていると確信しています。
また、アプリケーションでどのように管理するかという問題もあります。ユーザーは 1 つのアカウントで複数の ID を使用したい場合があるため、ユーザー名 + パスワードを処理するほど単純ではありません。ユーザーの OpenID ID をデータベースに保存するにはどうすればよいですか? OpenID を使用すると、私にも利点があります。RPX は広範なプロファイル情報を提供できるため、プロファイル フォームを事前に入力し、必要に応じて編集するようにユーザーに依頼するだけです。
私は現在これを持っています:
Users:
------
ID Email Etc.
-- --------------- ----
0 bob@yahoo.com ...
1 alice@yahoo.com ...
UserOpenIDs:
------------
ID UserID OpenID
-- ------ ------
0 0 0
1 0 2
2 1 1
OpenIDs:
--------
ID Provider Identifier
-- -------- ----------------
0 Yahoo https:\\me.yahoo.com\bob#d36bd
1 Yahoo https:\\me.yahoo.com\alice#c19fd
2 Yahoo https:\\me.yahoo.com\bigbobby#x75af
これらの外部キーでは:
UserOpenIDs.UserID -> Users.ID
UserOpenIDs.OpenID -> OpenIDs.ID
データベースに OpenID 識別子を格納する正しい方法はありますか? RPX が提供した識別子をデータベース内の識別子と照合して、ユーザーにログインさせるにはどうすればよいでしょうか (識別子がわかっている場合)。
そこで、具体的な質問を以下に示します。
- OpenID を持っていない、または使用したくないユーザーがアクセスできるようにするにはどうすればよいですか? (たとえば、Googleアカウントでログインするなどのセキュリティ上の懸念)
- 識別子をデータベースに保存するにはどうすればよいですか? (上記の表が正しいかどうかはわかりません)
- 誰かが別のユーザーとしてログインし、自分のアカウントで何かを喜んで行うのを防ぐために、どのような措置を講じる必要がありますか? (RPXはHTTP経由で識別子を送信することを理解しているので、誰かがしなければならないことは、どういうわけかそれを取得して「OpenID」フィールドに入力することです)
- OpenID を使用する際に、他に注意する必要があることは何ですか?