수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 시큐리티
16:50 초 단축키가 어떻게되죠?
Choose Implement of ... 단축키가 어떻게되죠?
- 미해결스프링 시큐리티
OAuth2 / JWT 강의
안녕하세요,OAuth2.0 / JWT 강의가 원래는 7월중순쯤 출시된다고 하셨으나 미뤄져서 8월달 안에 출시된다고 말씀하셨는데 계속 늦어지는 것 같네요.혹시 아직도 많이 기다려야 하나요.?답변 미리 감사드립니다.
- 미해결스프링 시큐리티
Account 엔티티 직렬화 질뭄ㄴ
안녕하세요 4:51초에 보면 Account 엔티티에 직렬화가 되어 있던데 왜 직렬화 시킨지 궁금합니다. 감사합니다.
- 미해결스프링 시큐리티
11:25 http://localhost:8080/api/login
위와 같은 에러가 나는중입니다.해당 강의에 코드를 따라쳤는데이러한 에러가 나는중인데 어떻게 고쳐야하나요?깃헙 레포지토리https://github.com/InSuChoe/corespringsecurity
- 해결됨스프링 시큐리티
AjaxConfig 관련 질문
안녕하세요 정수원 강사님.단순하지만, 질문이 있어서 여쭤보려고 합니다. 설정 클래스를 작성할 때,form 로그인 방식에서는 http.formLogin() 메소드를 사용하셨는데,ajax 로그인 방식에서는 사용하지 않으셨습니다. 혹시 formLogin() 메소드로는 ajax 로그인 방식을 처리할 수 없나요?
- 미해결스프링 시큐리티
23:00 ajax.http 요청시 에러
http://localhost:8080/api/loginorg.apache.http.client.ClientProtocolException라고 뜹니다..이게 무슨 의미죠?
- 미해결스프링 시큐리티
음..당혹스러운 전개상황인거같아요 ㅎ
음 저는 보다가 그냥 플젝 제가 따로 구축해서 진행중인데요.. 이거 양해만 구한다고 될 부분이라기보단 반드시 조취가 취해져야할 부분인거 같습니다. 저도 현업에서 일하고 있지만 비용을 받고 서비스를 제공하는데 이렇게 양해구하는 글만 올리는 것은 상당히 무책임하다고 느껴집니다.물론 공부하는 입장에선 직접 구현해보는게 실력향상에는 훨씬 도움이 되지만 그부분은 고객인 학생들이 선택할 부분이고 제공 되어야할 부분은 반드시 제공되는게 맞다고 생각이 듭니다. 코드를 잃어버리셨다면 분명 강의 소개 페이지에 기재가 되어 있던가 하는게 맞을거 같아요. 아니면 다시 복구 소스를 만드셔서 제공하는게 맞구요. 강의 또한 고객이 정당한 지불한 비용에 대한 서비스를 제공하는 것인데 이런 대처는 정말 아니라고 생각합니다.물론 예전 복구소스를 올렸지만 보시면 해당 소스로는 강의를 진행하는부분에 있어서 에러사항이 많습니다. 그러면 이런 불편이라도 해소될 수 있도록 액션이 필요할 것같아요.현업에서도 플젝하시다 무언가 날아가면 고객한테 "양해 구합니다 하고 이거밖에 없으니 알아서 하세요. 죄송합니다." 라고 대처하진 않을겁니다. 고객은 뭐가 됐든 해결되기를 원하고 이부분은 강의를 결재하는 시점에 충분히 고지가 안되었기도합니다.반드시 어떠한 유의미한 조취가 필요하다고 생각이 듭니다. 고객과의 서비스에대한 신뢰의 문제고 지금 상황은 기만이라는 느낌마저 드네요.
- 미해결스프링 시큐리티
/login_proc 경로는 내부적으로 자동 처리해주는 겁니까?
컨롤러를 별도로 만들어줘서 처리해줘야 합니까?
- 미해결스프링 시큐리티
invalidSessionUrl
현재 부트 5.7버전을 사용하면서 SecurityFilterChain을 빈으로 등록하면서 기본 API들을 구현하고 있는데 sessionManagement() 부분에서 invalidSessionUrl 메소드 자체가 없어진거 같은데 5.7 이후부터는 이 메소드를 활용하지 못하는건가요?
- 미해결스프링 시큐리티
26:46 단축키 뭐죠?
단축키가 궁금합니다.
- 미해결스프링 시큐리티
혹시 토큰에 비밀번호를 null로 넣은 이유가 있을까요?
강의 내에서 UsernamePasswordAuthenticationToken의 password 항목을 null로 주고 있는데 이유를 알 수 있을까요?이렇게 해도 인증/인가에 문제가 없는 건가요..??
- 미해결스프링 시큐리티
스프링 신버전 : 유저 생성 코드 공유합니다
@Bean public UserDetailsManager users() { UserDetails user = User.builder() .username("user") .password("{noop}1111") .roles("USER") .build(); UserDetails sys = User.builder() .username("sys") .password("{noop}1111") .roles("SYS") .build(); UserDetails admin = User.builder() .username("admin") .password("{noop}1111") .roles("ADMIN", "SYS", "USER") .build(); return new InMemoryUserDetailsManager( user, sys, admin ); }
- 미해결스프링 시큐리티
스프링 기초 질문 같아서 조금 부끄럽지만 어떻게 한 유저가 같은 쓰레드를 계속 쓰는지..
++추가적으로 찾아보다가 이제 조금 이해가 된 것 같습니다제 생각대로 매 요청 시마다 쓰레드가 바뀌는 것이 맞고, 그렇기 때문에 SecurityContextHolder를 clear해주는 것이며 요청 시마다 세션을 이용해서 요청을 인가받는 게 맞는 것이죠?SecurityContext를 매번 요청 시마다 불러와야야하는 건 요청에 대한 인가 정보를 불러오기 위함이고, 세션이라는 건 Security Context를 불러올 수 있는 키값으로 브라우저 종료, 혹은 일정 시간마다 만료되기 때문에 다시 로그인을 해줘야하는 것이구요.조금 멍청한 질문이였던 것 같은데 그래도 아직 확신을 못해서 확인받고자 질문을 그대로 두었습니다! 확인만 한 번 해주시면 감사하겠습니다!-안녕하세요 선생님 유익한 강의 너무 잘 듣고 있습니다.오늘 제가 처음으로 Thread Local에 대해 배우고, 공식 문서도 찾아봤지만 제가 기존에 배운 지식과는 상충되는 부분이 있어 도저히 잘 이해가 되지 않아 질문 올리게 되었습니다.다만 이 부분은 스프링 시큐리티 질문이 아니라 스프링 기초와 관계된 부분이라, 답변을 주지 않으셔도 할 말은 없습니다 ㅜㅜ 관련 검색어 혹은 링크라도 알려주실 수 있다면 정말 감사할 것 같습니다.제가 기존에 알기로 HTTP 연결은 매 요청, 응답 단위마다(Three Hand Shake)혹은 Keep-Alive 지속 시간 동안 연결되는 것이고 또한 WAS에서 제공하는 Dispatcher Servlet은 미리 쓰레드풀에 쓰레드를 생성해놨다가 이 요청 단위마다 쓰레드를 주고 반환하는 것을 반복하는 것으로 알고 있었습니다. 그리고 또한 쓰레드로 인해 정보가 원치 않게 공유되는 것을 막기 위해 매번 쓰레드 반환 시 해당 쓰레드를 클리어하는 것으로 알고 있습니다.그런데 어떻게 한 유저가 접속해서 브라우저를 종료하거나 혹은 만료 시간이 될 때까지 같은 쓰레드의 로컬 스토리지에 있는 정보를 이용할 수 있는 것인지가 너무 혼란스럽습니다.. ㅜㅜ;아니면 계속해서 세션을 반복적으로 불러오는 것인가요?제가 디버깅 경험이 부족하여 직접 확인하고 싶어도 어디를 건드려야할지 몰라 실천해보지는 못했습니다. ㅜㅜ
- 미해결스프링 시큐리티
스프링 시큐리티 로그인 문제 질문드려요.
로그인 화면창에 user/1111로 로그인 요청해도 로그인 되지 않습니다.로그인 화면에서 user/user 로그인 요청해도 로그인이 안됩니다..아래는 컨트롤러 화면입니다. 어디서 잘못됬는지 원인조차 모르겠습니다.. 도움이 필요합니다.
- 미해결스프링 시큐리티
해당 정보를 찾은 Spring 공식 사이트 주소를 알고 싶습니다.
해당 정보와 관련된 Spring 공식 사이트 주소를 알고 싶습니다. 혹시 알 수 있을까요? Spring에서 정보를 제공할 거 같아서 궁금해서요!
- 미해결스프링 시큐리티
savedRequest주소가 이상해요!
저는 사실 한다고 따라한거 같은데... 이게 CustomAuthenticationSuccessHandler에서 성공을 하면 이상하게도 savedRequest에서 resource파일 중 하나를 불러옵니다. 왜 그런지 이유를 잘 모르겟네요... 위의 그림의 경우에는 그냥 로그인을 클릭해서 로그인에 성공했을 때 이렇게 나오는건데요, 웃긴건은 로그인 하지 않은 상태에서 인증이 필요한 url들을 클릭 시에, 인증을 하고 redirect할 때도 동일한 일이 일어난다는 것입니다. 그러니까 url이 자꾸 이상하다는 말입니다. 이 엉터리 URL들이 어디서 생긴건지 찾을수 있게 도와주세요ㅠㅠ
- 미해결스프링 시큐리티
savedRequest.getRedirectUrl()가 null이 들어가서 로그인 후 localhost:8080/null이 나옵니다
안녕하세요. localhost:8080/로 들어가서 나오는 시큐리티의 기본 로그인 페이지에서 아무 계정으로 로그인을 하면 localhost:8080/null이 나옵니다. localhost:8080/login로 request를 보냈을떄도 로그인을 하면 localhost:8080/null이 나옵니다 response header를 보면 Location: http://localhost:8080/null 로 나와있고 디버그시에도 savedRequest가 null인게 확인되는데 로그인전에 request로 보낸 url이 httpSessionRequestCache에 저장돼서 로그인 이후 제대로 이동하려면 뭘 수정해야되나요? logout이나 rememberme같은 부차적인 요소들은 가독성을 위해 생략했습니다. 밑에는 코드입니다. // 메모리 방식으로 사용자를 생성하는 configure()는 생략함 @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/login").permitAll() .antMatchers("/user").hasRole("USER") .antMatchers("/admin/pay").hasRole("ADMIN") .antMatchers("/admin/**").access("hasRole('ADMIN') or hasRole('SYS')") .anyRequest().authenticated(); http .formLogin() // .loginPage("/loginPage") .defaultSuccessUrl("/", true) .failureUrl("/login") .usernameParameter("userId") .passwordParameter("passwd") .successHandler(new AuthenticationSuccessHandler() { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { System.out.println("authentication:"+authentication.getName()); // savedRequest가 null로 전달되는게 문제! RequestCache requestCache=new HttpSessionRequestCache(); SavedRequest savedRequest=requestCache.getRequest(request,response); String redirectUrl=savedRequest.getRedirectUrl(); response.sendRedirect(redirectUrl); } }) .permitAll(); // http.logout() 생략 // http.rememberMe() 생략 // http.sessionManagement() 생략 http.exceptionHandling() // .authenticationEntryPoint(new AuthenticationEntryPoint() { // @Override // public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { // response.sendRedirect("/login"); // } // }) .accessDeniedHandler(new AccessDeniedHandler() { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { response.sendRedirect("/denied"); } }); } @RestController @RequestMapping("/") public class SecurityController { @GetMapping public String index() { return "home"; } @GetMapping("loginPage") public String loginPage() { return "loginPage"; } @GetMapping("user") public String user() { return "user"; } @GetMapping("admin/pay") public String adminPay() { return "adminPay"; } @GetMapping("admin/**") public String admin() { return "admin"; } @GetMapping("login") public String login() { return "login"; } @GetMapping("denied") public String denied() { return "denied"; } }
- 미해결스프링 시큐리티
SecurityContextHolder에 대해서 궁금합니다.
안녕하세요. 강의 잘 듣고 있습니다. SecurityContextHolder.clearContext()를 해주는데 SecurityContextHolder는 SecurityContext를 담는 객체인가요? 그러면 SecurityContextHolder에 여러 SecurityContext가 들어갈수도 있는건가요? 그럼 한 사용자의 여러 인증객체를 가지고 있는건가요?? 아니면 서버에 인증한 여러 사용자들의 인증객체를 SecurityContextHolder에 담고 있는건가요?? 만약 여러 사용자의 인증 객체들 SecurityContextHolder에서 가지고 있는데 SecurityContextHolder.clearContext()를 한다면 로그아웃 한 사용자 뿐만 아니라 다른사용자도 로그아웃 될것 같은 느낌의 메서드 이름인데.... 어떤 기준으로 SecurityContextHolder안에 SecurityContext를 가지고 있는지 궁금합니다!
- 미해결스프링 시큐리티
강의 들으면서..
안녕하세요 ! 강의 열심히 듣고 있습니다. 시큐리티가 어려워서 열심히 서칭 하다가 강사님 강의를 듣게 됬습니다. 지금 회사에서 스프링 시큐리티 구현하고 있는데요. 회사에서는 Mybatis 사용해서 구현하라고 하는데 강의를 완강하고 해볼려고 합니다. jpa 부분을 mybatis로 바꿔야 할거 같은데 바꾸는게 어떤지 ... 강사님의 의견을 들어보고 싶습니다.!
- 미해결스프링 시큐리티
AuthenticationManagerBuilder 로 유저 생성 하는법
안녕하세요 ! WebSecurityConfigurerAdapter 가 deprecated 되서 @Bean 생성 해서 만들고 있습니다. HttpSecurity 로 인증 인가 하는 건 https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter 여기서 보고 했는데 AuthenticationManagerBuilder 로 유저 생성 하는 방법을 찾아봐도 잘안나와있어서 질문드립니다.!