Как получить роли или группы из приложения Azure SAML 2.0 в Spring Boot - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть приложение с загрузочной пружиной, где мне нужно ограничить доступ для определенных конечных точек.Пока что я могу проходить аутентификацию на Azure с использованием SAML 2.0.

Это основная конфигурация аутентификации в Spring

@Override
	protected void configure(HttpSecurity http) throws Exception {

		http
				.exceptionHandling()
				.authenticationEntryPoint(samlEntryPoint());

		http
				.csrf()
				.disable();


		http
				.addFilterBefore(metadataGeneratorFilter(), ChannelProcessingFilter.class)
				.addFilterAfter(samlFilter(), BasicAuthenticationFilter.class);

		http
				.authorizeRequests()
				.antMatchers("/error").permitAll()
				.antMatchers("/saml/**").permitAll()
				.anyRequest().authenticated();

		http
				.logout()
				.logoutSuccessUrl("/");

	}

в Azure Я добавил роли к значениям заявки, как показано на рисунке ниже

Заявки Azure

Моя цель - иметь возможность сделать что-то вроде следующего:

@GetMapping("/")
	@PreAuthorize("hasRole('User')")
	public String getSample(Principal principal) {
		log.info("Get Request");
		return "Hello";
	}

1 Ответ

0 голосов
/ 06 марта 2019

Следующим шагом будет реализация собственного SAMLUserDetailsService, который будет возвращать соответствующий экземпляр UserDetail с правами Authorities, предоставленными пользователю.

Вам потребуется получить список ролей Azure.из SAMLCredential (что-то вроде credential.getAtttributeAsString(<your_attribute_name>), тогда вам придется сопоставлять значения тезисов со списком полномочий, определенных в вашем приложении.

...