web-dev-qa-db-ja.com

JWTでのFacebookログイン

私はgit https://github.com/szerhusenBC/jwt-spring-security-demo でこのプロジェクトを参照するJWTを使用して、トークンベースのスプリングセキュリティを開発しました。次に、アプリケーションでFacebookログインを取得する必要があります。ソーシャルログインの場合、別のWebページを見つけました https://ole.michelsen.dk/blog/social-signin-spa-jwt-server.html ソーシャルログインを実行する方法を説明しています。

通常のログインでは、私のJWTプロジェクトは、ユーザー名、パスワード、有効期限、作成日時に基づいてトークンを作成します。トークンが来るたびに、上記のフィールドからすべての値が取得および比較され、トークンが認証されて提供されます。 2つの質問があります。

  1. ソーシャルログインでは、パスワードは作成されません。トークンがFacebookから受信されます(私のフロントエンドがこれを行います)。トークンが有効かどうかを確認する必要があります。 JWTでそれを行うにはどうすればよいですか?
  2. 記事に従って確認した後、将来の参照用に自分のトークンを作成することになっています。現在、Facebookログインにパスワードはありません。トークンを作成するにはどうすればよいですか?

春のブートアプリケーションでJWTを使用してソーシャルログインに利用できる優れたサイトがあるかどうかをお知らせください。

14
User1230321

私も同じような状況にあり、少し異なるアプローチをとることに決め、FBでの認証の責任をサーバー自体に委任しました。

エントリポイントを提供します:“/auth/facebook” FBにリダイレクトし、認証に進みます。

その後、ログインしたユーザーのAccessTokenを取得し、クライアントに返すJWTトークンを作成します。

以下は、類似のケースでSpring Social FacebookとSpring Securityを使用する方法を説明するブログ投稿です。 Stateless Spring Security Part 3:JWT + Social Authentication

3
amllano

Jwtからパスワードフィールドを削除することを検討してください。 Facebookはメールと名前を提供できるので、それをペイロードに使用します。これが私の例です。

userSchema.methods.generateJwt = function() {
  var expiry = new Date();
  expiry.setDate(expiry.getDate() + 7);

  return jwt.sign(
    {
      _id: this._id,
      email: this.email,
      name: this.name,
      exp: parseInt(expiry.getTime() / 1000)
    },
    jwt_secret
  );
};
1
Tetsuya3850