4

「LinkedInでサインイン」を理解しようとしています。写真の一部しか把握していないようです。

私が理解しているように、ユーザーは私のWebサイトでLinkedInを使用してサインインし、LinkedInは一意のユーザーIDを私のWebサイトに返します。

どういうわけか、私は自分のWebサイトでその識別子を使用してユーザーを識別します。

しかし、私にはわかりません。エンドユーザーが識別子を確認したら、それ以降は直接使用せず、LinkedIn経由で再度ログインしないようにするにはどうすればよいですか。返されたユーザーIDは秘密にしておく必要がありますか、それともURLなどで公開して表示できますか?

また、誰かが他の誰かのユーザーIDを見つけて、それを使用して私のサイトにアクセスするのを防ぐにはどうすればよいですか?

LinkedInから返されたユーザーIDがどのように使用されるのか、そしてセキュリティに関連してどのような問題があるのか​​を理解するためのスラブ全体が欠けているようです。

誰か説明してもらえますか?

ありがとう

4

3 に答える 3

3

自分で答えます。オプションで、LinkedIn APIに、署名を含むCookieを返すように要求できることがわかりました。このCookieをHTTPS接続を介してバックエンドサーバーに返すと、独自のAPIキーに対して署名を検証できます。出来上がり-あなたはこれが有効なユーザーであることを証明し、ユーザーのログインが実際になりすましではなくLinkedInから来たことを証明しました。

于 2012-06-02T07:08:52.063 に答える
1

ユーザーがLinkedIn経由でログインすると、APIからユーザーIDが返されます。これは本当に秘密ではありません。サイトのユーザーがその一意の識別子を使用してユーザーとしてログインしたことを通知するためにリンクされているだけです。LinkedIn IDを知っているだけでは、別のユーザーとしてログインすることはできません。LinkedInのAPIがそのIDを返すには、サイトのユーザーがユーザー名とパスワードを使用してLinkedInにログインしている必要があります。

アクセスしているAPIが実際にLinkedInであり、応答が傍受/変更/偽造されていないことを確認できる限り、APIによって返されるIDがサイト上のユーザーの正しいIDであると信頼できます。そして、彼らがログインし、そのユーザーとして認証されていること。

基本的に、LinkedInのAPIを使用してLinkedInユーザーを認証していて、「認証するLinkedIn IDを入力してください」というプロンプトが表示されるフォームがサイトにない場合は、安全です。ユーザーが別のユーザーのIDを知っている場合でも、APIがそのIDを返すには、LinkedInのユーザー名/パスワードが必要です。

ユーザーの好み/アクションを追跡するために、返されたIDを自由に保存してください。データベースにすでに存在するユーザーに関連付けて、データベースに保存されているユーザー名とパスワードの組み合わせ(できれば塩漬け/ハッシュ)またはoauthオプションのいずれかを使用してログインするオプションをユーザーに提供することもできます。

うまくいけば、それは物事を片付けるのに役立ちます!

コメントに基づいて編集

APIリクエスト後の処理方法に関するもう1つの重要なポイント。LinkedInから返されたIDが正しいことは信頼できますが、それ以降は、サイトに保存されているIDがLinkedInから取得したものと同じであることも信頼できる必要があります。ユーザーが編集できないサーバー側のものを使用して、このIDを保存します(PHPセッションなど-URL引数ではありません)。

于 2012-05-25T22:40:25.620 に答える
0

ユーザーがLinkedInで正常に認証した後 、ページhttp://www.xyz.com/redirect.php
にリダイレクトするとします。

これで、redirect.phpに、URLからoauthパラメーターを取得してユーザーIDを呼び出すコードがあります。

function getUserID (){
   // code which takes oauth params and calls linked in api with access token 
   //and returns userId of user
   return userID;
}

$userID = getUserID();

持っているので、と$userIDのセッションを作成し、$userIDユーザーを自分のホームページにリダイレクトします。ホームページでセッションを確認します。セッション$userIDが設定されている場合は、ユーザーにページを開かせます。セッションが利用できない場合は、ページを表示せず、最初にログインするように指示します。

さて、あなたの質問ですが、このアプローチでは、ユーザーは自分でどのように入力できると思いますuserIDか?

于 2012-05-26T06:16:20.830 に答える