Использование фрагмента кода для перенаправления на контроллер (/ bootstrap / v1) в настройках, инициированных IdP:
public SavedRequestAwareAuthenticationSuccessHandler successRedirectHandler() {
SavedRequestAwareAuthenticationSuccessHandler successRedirectHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successRedirectHandler.setDefaultTargetUrl("/bootstrap/v1");
return successRedirectHandler;
}
Фрагмент кода контроллера:
public class BootstrapController extends ParentController {
@RequestMapping(value = "/v1", method = RequestMethod.POST)
public ResponseEntity<BootstrapResponseDto> bootstrap(@RequestBody BootstrapRequestDto bootstrapRequestDto, @RequestHeader(value = "MAC-ADDRESS", required = false) String macAddress) {
myAppUserDetails userDetails = SecurityContextUtils.getUserDetails();
BootstrapResponseDto bootstrapResponseDto = new BootstrapResponseDto();
// some app specific logic goes here...
return new ResponseEntity<>(bootstrapResponseDto, HttpStatus.OK);
}
}
Журнал уровня отладкифрагмент:
29-29-2018 13:33:53 e7a5edb2-4051-4132-bad0-856d58af1c7d ZDJhMWExYWUtZTAxNy00NDQwLWJmOTctNzcyNTJlOWUyNmQ2 INFO http-nug-80 * 1-я весна-2010*
Запрос получен для POST '/ saml / SSO':
org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper@28cc5b21
servletPath: / saml / SSO путьпустые заголовки: host: localhost: 8080 пользовательский агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10.13; rv: 63.0) Gecko / 20100101 Firefox / 63.0 принимает: текст / html, application / xhtml + xml, application / xml;q = 0,9, / ; q = 0,8 принимающий язык: en-US, en; q = 0,5 принимаемый кодировка: gzip, тип содержимого deflate: application / x-www-form-urlencoded content-длина: 11320 dnt: 1 соединение: keep-alive cookie: JSESSIONID = ZDJhMWExYWUtZTAxNy00NDQwLWJmOTctNzcyNTJlOWUyNmQ2 обновить-небезопасные-запросов: 1
Security фильтр цепи: [MetadataGeneratorFilter
WebAsyncManagerIntegrationFilter SecurityContextPersistenceFilter
CustomLogFilter HeaderWriterFilter LogoutFilter
UsernamePasswordAuthenticationFilter BasicAuthenticationFilter
FilterChainProxy RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
AnonymousAuthenticationFilter SessionManagementFilter
ExceptionTranslationFilter FilterSecurityInterceptor]
29-29-2018 13:33:53 e7a5edb2-4051-4132-bad0-856d58af1c7d INFO http-nio-8080-exec-6 oocbsSAMLPПротокол протокола сообщенияXMLПрименениеПодпискаПодписьПодписьПодпискаПодпискаПодтверждениеПодтверждениеПодтверждениеПодтверждениеSignatureSignuподпись выполнена успешно, тип сообщения: {urn: oasis: names: tc: SAML: 2.0: протокол} Ответ 11-29-2018 13:33:53 e7a5edb2-4051-4132-bad0-856d58af1c7d ZDJhMWExYWUtZTAxNy00NDQwLWJmOTctNzcyNTQ0-INFO-80-INFO-7 Spring Security Debugger:
Запрос получен для GET'/ bootstrap / v1':
org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper@5f9e2aff
servletPath: / bootstrap / v1 pathInfo: null заголовки: хост: хостпользовательский агент: Mozilla / 5.0 (Macintosh;Intel Mac OS X 10.13;rv: 63.0) Gecko / 20100101 Firefox / 63.0 принимает: текст / html, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8 принимающий язык: en-US, en; q = 0.5 accept-encoding: gzip, deflate dnt: 1 соединение: cookie-файл keep-alive: JSESSIONID = ZDJhMWExYWUtZTAxNy00NDQwLWJmOTctNzcyNTJlOWUyNmQ2 запросы на обновление-небезопасные запросы: 1
Filters2FilterFainter_Filter* CustomLogFilter HeaderWriterFilter LogoutFilter * * 1 044 UsernamePasswordAuthenticationFilter BasicAuthenticationFilter
FilterChainProxy RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter * * AnonymousAuthenticationFilter тысяча сорок семь SessionManagementFilter
ExceptionTranslationFilter FilterSecurityInterceptor]
11-29-2018 13:33:53 e7a5edb2-4051-4132-bad0-856d58af1c7d ПРЕДУПРЕЖДЕНИЕ http-nio-8080-exec-7 oswsPageNotFound: Метод запроса 'GET' не поддерживается
ExpiringUsernameAuthenticationToken установлен на retuрН:
org.springframework.security.providers.ExpiringUsernameAuthenticationToken@fee70636: Руководитель: ком.. .Security.authentication @ 325fcf8b;Полномочия: [ЗАЩИЩЕНО];Аутентифицировано: правда;Детали: ноль;Предоставленные полномочия: полномочия_1, полномочия_2, полномочия_3, полномочия_4
Итак, я предполагаю, что моя проверка подлинности SAML и проверка подлинности и авторизации пользователей - это хорошо.
Кажется, проблема в том, что HTTP GET не работает.
Как вместо этого настроить и отправить HTTP POST?или я должен реорганизовать свой контроллер для обработки поведения (которое может нарушить вход в систему на основе форм, что также является частью аутентификации приложения)?
HTTP-статус 405 - метод не разрешен Ошибка