一部のソーシャルネットワークでは、代わりにユーザー認証を委任することも、自分のシステムに資格情報を要求することもできます。ユーザーがログインすると、外部プラットフォームからユーザーの情報を取得するために使用できるアクセストークンが提供されます。
このデータを使用して、ユーザーを自分のシステムに登録します。提供されているアクセストークンも添付してください。要求した権限に応じて、トークンを使用してソーシャルプラットフォームで追加の操作を実行できます。
次に、ユーザーがログオンしているweb/mobileアプリケーションで認証トークンとして使用するJWTを発行します。このJWTは、認証プロバイダが送信したアクセストークンとは独立している必要があります。 sub
またはexp
のような興味のある主張を含め、秘密鍵で署名してください。あなたがGoogleやFacebookのようないくつかの認証システムを使用する予定がある場合、それは同じユーザごとに異なる可能性があるため、たとえば
{
"sub": "userid", //unique user id assigned in your system
"name": "User name" //Name provided by social
"iss": "issuer", //you are the issuer
"exp": 1300819380, //Expiration date
"login":"facebook" //login method used
}
ために、一意の識別子として電子メールを使用しないでください。ユーザーが異なるネットワークにあるアカウントをリンクするには、追加の登録プロセスが必要です。たとえば、ユーザーが他のシステムで使用している識別子を設定させるか、ユーザーがFacebookによってログに記録されたときにTwitterでログインプロセスを起動させる
ソーシャルログインは認証されたユーザーを確認するだけです。あなたはその特定のユーザーのデータベースにユーザーレコードを残しておくでしょう。だから彼らがログインした後は、あなたがいつもそうしているのと同じ方法でJWTを作成します。メールアドレスを入力しないことを心配しているプラットフォームはどれですか?ちょうどすべてのサービスにもいくつかのタイプのユーザーIDがあるので、あなたのユーザーテーブルには 'facebook_id'' twitter_idなどのフィールドがあります。 – Pitchinnate
ソーシャルプラットフォームのほとんどはあなたにメールアドレスを提供します(Twitterは信じていません)。私は、Webオブジェクトのラウンドトリップが成功した後に、あなたのアプリケーションにリダイレクトすることができると仮定します。 –
@logeeks質問に対する答えを見つけましたか? –