• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spring Security JDBC

Object Storage Arubacloud
0 głosów
136 wizyt
pytanie zadane 29 maja 2019 w Java przez JuniorPL Użytkownik (770 p.)

Cześć, zanlazłem fragment kodu odpowiedzialny za logowanie. Wszystko działa poprawnie ale nie mogę zrozumieć do końca jak to działa. Nie rozumiem na jakiej podstawie wiadomo jak wygląda schemat bazy danych ponieważ nigdzie w kodzie się do tego nie odnosimy.

Tutaj tworzę bean potrzebny do autoryzacji.

public class AppConfig implements WebMvcConfigurer {
 
	@Autowired
	private Environment env;
	
	@Bean
	public DataSource securityDataSource()
	{
				
		ComboPooledDataSource securityDataSource = new ComboPooledDataSource();
					
		try
		{
			securityDataSource.setDriverClass(env.getProperty("jdbc.driver"));
		}
		catch (PropertyVetoException exc)
		{
			throw new RuntimeException(exc);
		}
		
		
		securityDataSource.setJdbcUrl(env.getProperty("jdbc.url"));
		securityDataSource.setUser(env.getProperty("jdbc.user"));
		securityDataSource.setPassword(env.getProperty("jdbc.password"));
		

		securityDataSource.setInitialPoolSize(
				getIntProperty("connection.pool.initialPoolSize"));
 
		securityDataSource.setMinPoolSize(
				getIntProperty("connection.pool.minPoolSize"));
 
		securityDataSource.setMaxPoolSize(
				getIntProperty("connection.pool.maxPoolSize"));
 
		securityDataSource.setMaxIdleTime(
				getIntProperty("connection.pool.maxIdleTime"));
		
		return securityDataSource;
	}
	
private int getIntProperty(String propName) {
		
		String propVal = env.getProperty(propName);
		
	
		int intPropVal = Integer.parseInt(propVal);
		
		return intPropVal;
	}
}

A tu fragment odpowiadający za autoryzację.

@Override
	protected void configure(AuthenticationManagerBuilder auth) throws Exception
 {
 
		auth.jdbcAuthentication().dataSource(securityDataSource);
		
	}

Ten przykład jest popularny ale nie mogę zrozumieć na jakiej podstawie z kod wie jak wygląda baza danych i gdzie dokonuje odpytania odpowiednich tabel. Może ktoś coś podpowie.

1 odpowiedź

+1 głos
odpowiedź 30 maja 2019 przez mbabane Szeryf (79,280 p.)
wybrane 30 maja 2019 przez JuniorPL
 
Najlepsza

Domyślnie Security w najnowszych wersjach oczekuje takich tabel:

https://docs.spring.io/spring-security/site/docs/5.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#appendix-schema

więc jeśli w bazie sam przez przypadek dałeś odpowiednie nazwy to Spring sobie poradził. Być może należy też szukać odpowiedzi w implementacji ComboPooledDataSource. Może tam są tworzone odpowiednie tabele.

Więcej info tutaj:
https://docs.spring.io/spring-security/site/docs/5.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#overall-architecture

 

W książce Spring w Akcji IV, jest podane, że pod spodem domyślnie wykonywane są takie zapytania:

 public static final String DEF_USERS_BY_USERNAME_QUERY =
                    "select username,password,enabled " +
                    "from users " +
                    "where username = ?";
public static final String DEF_AUTHORITIES_BY_USERNAME_QUERY =
                    "select username,authority " +
                    "from authorities " +
                    "where username = ?";
public static final String DEF_GROUP_AUTHORITIES_BY_USERNAME_QUERY =
                    "select g.id, g.group_name, ga.authority " + 
                    "from groups g, group_members gm, group_authorities ga " +
                    "where gm.username = ? " +
                    "and g.id = ga.group_id " +

 

komentarz 30 maja 2019 przez JuniorPL Użytkownik (770 p.)
Wielkie dzięki naprawdę mi rozjaśmiłeś temat. Mam tą książkę ale jeszcze tam nie dotarłem chciałbym pędzić do przodu a czasem potykam się o własne nogi.

Podobne pytania

0 głosów
0 odpowiedzi 179 wizyt
0 głosów
3 odpowiedzi 269 wizyt
0 głosów
1 odpowiedź 1,043 wizyt
pytanie zadane 14 marca 2018 w Java przez Tomek Reda Obywatel (1,110 p.)

92,568 zapytań

141,422 odpowiedzi

319,641 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...