Ich arbeite Spring-Boot, Spring Sicherheit mit grundlegende Authentifizierung. Ich werde die Login-URL von meiner in AngularJS geschriebenen Client-Anwendung per REST-API-Aufruf senden.Wie kann ich neu angemeldeten Benutzer in der Spring Boot Security Config hinzufügen?
Alles funktioniert wie erwartet. Alle Benutzer in der DB konfiguriert in der SecurityConfiguration.java wie unten.
@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
List<User> users = userService.getUsers();
for (User user : users) {
auth.inMemoryAuthentication().withUser(user.getUserName()).password(user.getPassword())
.roles(user.getRole().getName());
}
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().antMatchers("/server/rest/secure/**")
.hasRole("ADMIN").and()
.httpBasic().realmName(REALM).authenticationEntryPoint(getBasicAuthEntryPoint());
}
@Bean
public CustomBasicAuthenticationEntryPoint getBasicAuthEntryPoint() {
return new CustomBasicAuthenticationEntryPoint();
}
CustomBasicAuthenticationEntryPoint.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint;
public class CustomBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {
@Override
public void commence(final HttpServletRequest request,
final HttpServletResponse response,
final AuthenticationException authException) throws IOException, ServletException {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.addHeader("WWW-Authenticate", "Basic realm=" + getRealmName() + "");
PrintWriter writer = response.getWriter();
writer.println("HTTP Status 401 : " + authException.getMessage());
response.setHeader("WWW-Authenticate", "FormBased");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
}
@Override
public void afterPropertiesSet() throws Exception {
setRealmName("MY_TEST_REALM");
super.afterPropertiesSet();
}
}
Also, wenn ich einen neuen Benutzer registrieren, die in der DB eingesetzt werden, aber nicht in der obigen Umsetzung hinzugefügt. Die Authentifizierung schlägt fehl.
Wie kann die obige Implementierung aktualisieren, wann immer ich bin und tun die Registrierung eines neuen Benutzers
Können Sie den Referenzlink dafür geben? – Prince
was meinst du mit Referenzlink? – ArslanAnjum
Ich meine jede Website-Referenz dafür. Es wird mir helfen, meinen Code bei Bedarf zu aktualisieren – Prince