Как я могу реализовать OAuth2 с Vaadin - Facebook - PullRequest
1 голос
/ 13 марта 2020

Я хочу реализовать OAuth2 с Vaadin 14 и Spring Boot. Я использую сервис Facebook OAuth2.

Сначала я создаю свой вид входа в систему. Это основной вид.

@Route
@PWA(name = "Vaadin Application",
        shortName = "Vaadin App",
        description = "This is an example Vaadin application.",
        enableInstallPrompt = true)
@CssImport("./styles/shared-styles.css")
@CssImport(value = "./styles/vaadin-text-field-styles.css", themeFor = "vaadin-text-field")
public class MainView extends VerticalLayout {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public MainView() {
        Button login = new Button("login");
        login.addClickListener(e->{
            UI.getCurrent().navigate(LoginView.class);
        });
        add(login);
    }

}

Затем я создаю свой вид для входа в систему.

@Route("Login")
public class LoginView extends VerticalLayout{

    private static final long serialVersionUID = 1L;

    public LoginView() {

        Label loggedIn = new Label("You are logged in");
        add(loggedIn);
    }

}

Хорошо! Теперь я включаю OAuth2 для весенней загрузки.

@EnableOAuth2Sso
@Configuration
public class OAuth2Configuration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .antMatcher("/Login")
                .authorizeRequests()
                .antMatchers("/")
                .permitAll()
                .anyRequest()
                .authenticated();
    }

}

При переходе от www.localhost: 8080 к www.localhost: 8080 / Login. Я не могу перейти на страницу входа в Facebook. Затем, когда Facebook отправил меня обратно. Я хочу отобразить адрес электронной почты пользователя, который только что вошел в систему. Просто чтобы убедиться, что указанные c адреса электронной почты могут быть зарегистрированы на моей странице.

В этом случае логин Facebook не отображается. Появится просто кнопка, сделанная мной. Когда я нажимаю на мою кнопку, то стою, что я вошел в систему.

Вот мой application.yml файл.

security:
  oauth2:
    client:
      clientId: myCliendID
      clientSecret: myClientSecret
      accessTokenUri: https://graph.facebook.com/oauth/access_token
      userAuthorizationUri: https://www.facebook.com/dialog/oauth
      tokenName: oauth_token
      authenticationScheme: query
      clientAuthenticationScheme: form
    resource:
      userInfoUri: https://graph.facebook.com/me
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...