Я пытаюсь реализовать реализацию Oauth2 для Facebook в Spring Security, следуя примеру, упомянутому в https://spring.io/guides/tutorials/spring-boot-oauth2/
Поскольку теперь Facebook разрешает только защищенное приложение в качестве клиента Oauth2, я сделал то же самое, внедрив SSL-сертификат локально.
Класс приложений My Spring:
package com.example.demo;
import java.security.Principal;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@EnableOAuth2Sso
@SpringBootApplication
@RestController
public class SimpleApplication extends WebSecurityConfigurerAdapter {
@RequestMapping("/user")
public Principal user(Principal principal) {
return principal;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.antMatcher("/**")
.authorizeRequests().antMatchers("/", "/login**", "/webjars/**").permitAll()
.anyRequest().authenticated();
}
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
}
Application.yml:
server:
port: 8648
ssl:
key-store: classpath:mycert.p12
key-store-password: password
key-store-type: PKCS12
key-alias: myCertX
security:
oauth2:
client:
clientId: 169343663729045
clientSecret: ea31bd0eb13e9856097ed9d186a1276a
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
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Demo</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width" />
<base href="/" />
<link rel="stylesheet" type="text/css"
href="/webjars/bootstrap/css/bootstrap.min.css" />
<script type="text/javascript" src="/webjars/jquery/jquery.min.js"></script>
<script type="text/javascript"
src="/webjars/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<h1>Demo</h1>
<div class="container"></div>
<div class="container unauthenticated">
With Facebook: <a href="/secure">click here</a>
</div>
<div class="container authenticated" style="display: none">
Logged in as: <span id="user"></span>
</div>
<script type="text/javascript">
$.get("/user", function(data) {
$("#user").html(data.userAuthentication.details.name);
$(".unauthenticated").hide()
$(".authenticated").show()
});
</script>
</body>
</html>
Когда я загружаю приложение, открывается страница index.html и после нажатия на ссылку для входа в Facebook открывается страница facebook, я ввожу учетные данные, затем после перенаправления facebook я получаю эту ошибку: www.facebook.com также перенаправил вас много раз.
Я попытался изменить URL-адрес, но ответ остался прежним.
В моем приложении на Facebook Действительные URI перенаправления OAuth установлен на https://localhost:8648/login