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

Spring Security JDBC

VPS Starter Arubacloud
0 głosów
134 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 174 wizyt
0 głosów
3 odpowiedzi 259 wizyt
0 głosów
1 odpowiedź 1,038 wizyt
pytanie zadane 14 marca 2018 w Java przez Tomek Reda Obywatel (1,110 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...