2017-01-01 39 views
6

Mam opracowane zabezpieczenie oparte na tokenach wiosennych za pomocą JWT, odnosząc ten projekt do git https://github.com/szerhusenBC/jwt-spring-security-demo. Teraz muszę uzyskać dostęp do Facebooka w mojej aplikacji. W przypadku logowania do usługi społecznościowej znalazłem inną stronę internetową, która wyjaśnia, w jaki sposób należy przeprowadzić logowanie społecznościowe.Facebook login w JWT

Podczas normalnego logowania mój projekt JWT tworzy token na podstawie nazwy użytkownika, hasła, daty wygaśnięcia i godziny utworzenia. Za każdym razem, gdy przychodzi token, wszystkie wartości z powyższych pól są pobierane i porównywane w celu uwierzytelnienia tokena, a następnie podania. Mam dwa pytania:

  1. W logowaniu społecznościowym nie zostanie utworzone hasło. Token zostanie odebrany z Facebooka (mój frontend to robi). Muszę sprawdzić, czy token jest ważny, czy nie. Jak mam to zrobić w JWT?
  2. Po sprawdzeniu, jak w tym artykule, mam utworzyć własny token do wykorzystania w przyszłości. Teraz nie ma hasła do logowania na Facebooku. Jak utworzyć token?

Daj mi znać, jeśli w serwisie wiosennej wersji butów dostępna jest jakaś dobra strona do logowania w serwisie społecznościowym przy użyciu JWT.

+0

znalazłeś rozwiązanie? – Stuck

Odpowiedz

0

Znalazłem się w podobnej sytuacji i postanowiłem zastosować nieco inne podejście, przekazując odpowiedzialność za uwierzytelnienie się z FB na serwerze.

Udostępnia punkt dostępu: “/auth/facebook”, który przekierowuje do FB i przechodzi do uwierzytelniania.

Następnie otrzymuje znacznik Access dla zalogowanego użytkownika i tworzy token JWT, który powraca do klienta.

Oto blogu wyjaśniając, jak użyć Wiosna Facebooka Społecznego i wiosna Security for podobnej sprawie: Stateless Spring Security Part 3: JWT + Social Authentication

1

Rozważ usunięcie pole hasła z JWT. Facebook może podać ci adres e-mail i nazwę, więc użyj tego dla ładunku. Oto mój przykład.

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 
); 
}; 
+0

Zazwyczaj wolimy mieć kod napisany bezpośrednio w odpowiedzi, a nie zewnętrznie. – Litty

+2

Witam, dziękuję za informację zwrotną! Teraz ucz się społeczności. Poprawię to. – Tetsuya3850

+0

Trzeba się jeszcze wiele nauczyć :) Witamy. – Litty

Powiązane problemy