我有一个网站可以称为AutoLoginSite(http://mainsite.dev) 另一个需要基本身份验证才能浏览其他页面的网站称为MainSite(我无法触摸)
因此,当用户从AutoLoginSite打开url时,它将重定向到具有身份验证状态的MainSite。
所以我想做的是,我使用Spring Boot在AutoLoginSite应用程序中创建自动登录控制器,这是该控制器:
@RequestMapping("/login")
public void login(HttpServletResponse servletResponse) {
String loginUri = "http://mainsite.dev/authenticate";
String redirectUri = "http://mainsite.dev/my-account/cards";
String username = "customer";
String password = "c123";
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
String encoding = Base64.getEncoder().encodeToString((username + ":" + password).getBytes());
HttpPost httppost = new HttpPost(loginUri);
httppost.setHeader("Authorization", "Basic " + encoding);
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
System.out.println("Status : " + response.getStatusLine().getStatusCode());
} catch(Exception ex) {
ex.printStackTrace();
}
servletResponse.setHeader("Location", redirectUri);
servletResponse.setStatus(302);
}
我知道我做错了,因为经过身份验证的用户是AutoLoginSite服务器,而不是AutoLoginSite客户端。 如何自动将客户端登录到其他网站,以便他们可以访问所有MainSite安全页面?
答案 0 :(得分:0)
对于您的用例,您应该实现OAuth 2.0。这样,您的 AutoLoginSite 将用作资源服务器 MainSite 的身份验证服务器。 第一个用户将必须登录到您的身份验证服务器,成功身份验证后,您的AutoLoginSite将发出授权代码,然后该代码可用于对资源服务器上的用户进行授权。 OAuth 2针对不同的用例提供了几种“授权类型”。您需要确定需求并相应地使用。
访问本文可以帮助您获得有关该主题的更多信息。 https://medium.com/@akourtim.ahmed/oauth-2-centralized-authorization-with-spring-boot-2-0-2-and-spring-security-5-and-jdbc-token-store-8dbc063bd5d4
Spring OAuth 2.0: https://projects.spring.io/spring-security-oauth/docs/oauth2.html