묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트 시큐리티 & JWT 강의
커스텀 필터 적용 안됨
강의를 다 수강하고 깃허브 코드 참조하여 작성했습니다.현재 SecurityConfig 코드는 다음과 같습니다.@Configuration @EnableWebSecurity @RequiredArgsConstructor public class SecurityConfig{ private final UserRepository userRepository; private final CorsConfig corsConfig; @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { return http .csrf(AbstractHttpConfigurer::disable) .sessionManagement((sessionManagement) -> sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS) ) .formLogin(withDefaults()) .httpBasic(withDefaults()) .apply(new MyCustomDsl()) .and() .authorizeRequests(requests -> requests .requestMatchers("/user/**").authenticated() .requestMatchers("/admin/**").access("hasAuthority('ADMIN')") .anyRequest().permitAll() ) .build(); } public class MyCustomDsl extends AbstractHttpConfigurer<MyCustomDsl, HttpSecurity> { @Override public void configure(HttpSecurity http) throws Exception { AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class); http .addFilter(corsConfig.corsFilter()) .addFilter(new JwtAuthenticationFilter(authenticationManager)) .addFilter(new JwtAuthorizationFilter(authenticationManager, userRepository)); } } } filterchain에서 and()에 오류가 발생합니다.'and()' is deprecated and marked for removal 로 나오는데 and가 deprecated된 거 같지는 않고 커스텀 필터를 적용하는 것에서 뭔가 문제가 있지 않을까 싶습니다만 이틀째 해결을 못하고 있어 문의남깁니다ㅠㅠ
-
미해결스프링부트 시큐리티 & JWT 강의
스프링에서도 JWT 구현가능한가요? (스프링 부트X)
안녕하세요 강사님.스프링 환경에서 작업 진행 중에 JWT를 구현하고자 하는데, 강사님 수업도 마찬가지이며 구글링해봐도 정보들 대부분이 스프링 부트 환경에서 JWT 구현하는 내용들이라 궁금합니다.스프링 부트가 아닌 스프링 환경에서도 JWT 구현이 가능한가요?가능하다면 스프링 부트에서 구현하는 방식을 따라도 될까요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
컨택스트패스 경로 질문이 있습니다.
경로를 지정해주지 않아도 잘 모든게 잘 동작하는데 혹시 사용하시는 이유가 있을까요??
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
pom.xml의 dependencies 관련 질문
안녕하세요 해당 프로젝트를 이클립스가 아닌 인텔리제이로 만들고 싶어 글을 올리게 되었습니다.SpringMVC12 프로젝트(이게 7강에서 11강까지 다 모여있는 거겠죠...?)의 pom.xml에 사용한 것들을 스프링 이니셜라이저의 gradle(build.gradle)로 하고 싶은데 dependencies에 각각 어떠한 것들이 들어가 있는지 알 수 있을까요?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
E..dito...r에 대한 질문...
난독증이 있는건지 내용은 그대론데 읽을 때마다 내용이 달라지는 것 같아 질문을 남깁니다...다른 분들이 작성하고, 호돌맨님께서 남기신 답글들을 보고 나서 제가 이해한 것이 맞는지 확인 부탁드립니다... 1. 자판기 비유에 대한 내용1.1. request(edit), domain(editor)를 작성하셨는데, 말씀하시는 부분이 (결국 같은 내용이겠지만...) request(edit)에는 edit.title, edit.content(100원, 500원)(동전)뿐만 아니라 추후에 예를 들어 edit.name, edit.gender(1000원, 10000원)(지폐)가 넘어 올 수도 있는 상황이 발생할 수도 있는데, 지폐(name, gender)는 받고 싶지 않은 상황에서 domain(editor)(금액 투입구)를 사용하지 않으면, 지폐가 들어오는 것을 막을 수 없고, 추후에 불필요한 지폐를 걸러내는 작업이 발생하기 때문에 애초에 입구 자체를 동전만 넣을 수 있는 domain(editor) 금액 투입구를 만들게 되면, 들어온 모든 동전은 사용에 필요한 값이기 때문에 불필요하게 걸러내는 작업이 없어진다고 생각하는 것이 맞을까요...? (같은 말인 것 같은데... 예를 더 어렵게 만든 것 같아 죄송합니다...) 호돌맨님이 if를 통해 기존 값을 사용하는 방식2.1 이 말은 즉, 위 예를 연속해서 사용하자면 [사람 1]이 edit.title(100원)을 넣은 상태에서 [사람 2]가 edit.content(500원)짜리를 넣어도 [사람 2] 때문에 [사람 1]이 넣은 edit.title(100원)이 사라지면 안되기 때문에 사용한다는 말씀이 맞으실까요? (물론 위의 예는 [사람 2]가 edit.title(100원)을 넣게되면 금액이 추가되는 것이 아니라 동전이 변경되야 한다는 오류가 있긴 하지만... 그냥 사용하겠습니다...) 뭔가 작성하면서 또 이해가 된 것 같긴하지만... 틀린 부분이 있다면 지적 부탁드립니다... 또 예를 추가하고 글을 복잡하게 만들어 죄송합니다...
-
미해결스프링 시큐리티
SecurityConfig질문
안녕하세요 강의잘듣고 있습니다!. 해당 강의부터 엑셀에 작성해주신대로 05-01브랜치를 참고하여 강의를 진행하고 있습니다. SecurityConfig.java를 보면, ajax LOGIN방식을 DSL로 구현한게 Form방식과 합쳐져 있는데 이 설정하나로 form / ajax로그인 두 방식모두 지원하는건가요?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
혹시 마프는 언제 오픈 되나요?
선생님 강의 정말 감사하게 잘 듣고 있는 학생입니다~선생님께서는 코딩 멍충이도 술술 이해 시키는 놀라운 마력을 가지고 계시는 거 같아요항상 감사하는 마음 가지고 수업에 임하고 있습니다. 많이 바쁘시겠지만 혹시 언제 마프가 오픈되는지 알 수 있을까요? 이번 강의 마무리하고 곧 마프로 선생님 강의 듣고 싶은 학생입니다. 존경합니다~ 박매일 선생님!!
-
미해결스프링 시큐리티
메소드방식 인가처리와 URL 방식 인가처리를 중첩으로 설정할 경우 메소드방식 인가처리가 적용되는 이유
메소드방식 인가처리와 URL 방식 인가처리를 중첩으로 설정할 경우 메소드방식 인가처리가 적용되더라고요추측이지만 메소드방식 인가처리가 URL인가처리 이후 실행되기 때문이라고 생각이 드는데 맞을까요?
-
해결됨스프링부트 시큐리티 & JWT 강의
시큐리티 2강 SecurityConfig 설정시 로그아웃 -로그인 납치증상
SecurityConfig 작성후 계속하여 로그아웃 시도시 로그인 화면으로 납치되어 정상적인 학습이 불가능합니다. --> 로그아웃 시도할경우 로그인 string 리턴
-
해결됨스프링 시큐리티
setSharedObject 메소드 질문있습니다!.
안녕하세요 강사님 강의 잘듣고 있습니다. 아래 코드가 필요한가요? 공유해야하는 이유를 잘모르겠구 주석해도 정상작동하는거 같아서 질문드립니다! 감사합니다!.http.setSharedObject(AjaxLoginProcessingFilter.class, getAuthenticationFilter());
-
미해결스프링부트 시큐리티 & JWT 강의
사용자 정보 변경 시 jwt 재발급
안녕하세요. jwt를 사용하다가 jwt의 subject는 email, 그 외에 사용자의 닉네임과 같은 정보를 claims 에 넣었습니다. 그런데 이렇게 사용자의 정보가 변경될 때 특히 email이 변경될 때는 토큰을 재발급 받아줘야 사용 가능한 토큰이 되는데 만약 claims에 없는 비밀번호와 같은 보안과 관련된 정보를 변경했을 때는 새 토큰을 발급 받아도 사용자가 이전에 발급 받은 토큰으로 서비스에 접근할 때 어떻게 불가능한 토큰이라고 알 수 있는지 모르겠습니다. 토큰의 유효성을 검사하는 코드에서 db에서 사용자의 정보 수정일 이전 발행된 토큰이면 유효하지 않은 토큰이라고 하는 편이 나을지 고민입니다. 만약 이렇게 한다면 사용자의 정보를 수정할 때마다 새로운 토큰을 발급해줘야 된다는 점이 신경쓰입니다.Date date = Date.from(user.getModifiedDate().atZone(ZoneId.systemDefault()).toInstant()); // 토큰 발행일이 유저 데이터 수정일 이전이면 유효하지 않은 토큰임 if(claims.getBody().getIssuedAt().before(date)) { throw new CustomException(ErrorCode.VALIDATION_ERROR, "유효하지 않은 토큰입니다."); }매번 새로운 토큰을 발급받게 하는 게 좋은 방법일까요?
-
미해결스프링부트 시큐리티 & JWT 강의
안녕하세요 강사님 핸들러 질문있습니다
현재 제 상황은 이러합니다Oauth2Service에서 검증을 하고여기서 회원 생성을 할 수 있습니다. (현재는 빼놓은 상태)그리고 successhandler까지 구현했습니다.이 상태입니다.근데 저는 로그인을 성공했을 경우,핸들러를 타지 않고 8080:/ 주소로 이동합니다. 이러한 경우에 어떻게 토큰을 발급하고 적용할 수 있는지 모르겠습니다.apply로 정의한 함수때문에 핸들러를 거치지 않는 걸까요?apply로 정의한 함수는 강사님 JWT 강의랑 똑같습니다.
-
미해결스프링 시큐리티
child_name,parent_name
계층권한에서 저 둘의 관계는 왜@ManyToOne로 설정 되어 있을까요 ??현재 프로젝트는 1:1로 해도 문제가 없지 않나요 ?!
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
WebSecurityCustomizer 와 SecurityFilterChain 차이점에 대해 여쭙고싶어요
@Configuration @EnableWebSecurity(debug = true) // 운용환경에서는 꼭 꺼야한다. public class SecurityConfig { @Bean // Spring Security 무시시키기 public WebSecurityCustomizer webSecurityCustomizer() { return new WebSecurityCustomizer() { @Override public void customize(WebSecurity web) { // /error -> spring에서 기본제공하는 것 web.ignoring().requestMatchers("/favicon.ico", "/error") // .requestMatchers(new AntPathRequestMatcher("/h2-console/**")); // 멍청한 우리들을 위해 스프링이 제공해주신 위으 코드를 대신하는 메서드 .requestMatchers(toH2Console()); } }; } @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // and() 메서드가 deprecated되어 람다식으로 사용하라고 한다. return http.authorizeHttpRequests(authorizeHttpRequests -> { authorizeHttpRequests .requestMatchers("/auth/login").permitAll() .anyRequest().authenticated(); }).csrf(AbstractHttpConfigurer::disable).build(); } }안녕하세요 호돌맨님 위의 WebSecurityCustomizer에서 하는 일을 밑의 SecurityFilterChain에서도 할 수 있을것 같은데요 둘을 어떻게 사용방법을 구분해야할지 여쭙고 싶어요 30년차사수(ChatGPT) 에 물어보니 차이점:WebSecurityCustomizer는 주로 보안 구성을 조정하고 보안 설정을 사용자 정의하는 데 사용됩니다. 이를 통해 더 세부적인 보안 요구 사항을 처리할 수 있습니다.SecurityFilterChain은 주로 실제 보안 필터 체인을 구성하는 데 사용됩니다. 여러 보안 필터가 어떤 순서로 실행될지를 결정하며, 보안 관련한 요청 처리를 담당합니다.둘 다 Spring Security의 핵심 요소이며 보안 구성과 필터 체인의 다른 측면을 다룹니다. 일반적으로 SecurityFilterChain을 사용하여 필터 체인을 정의하고, 필요에 따라 WebSecurityCustomizer를 사용하여 더 많은 세부 설정을 적용할 수 있습니다.라는데.. 처음 Security를 접하다보니 감이 안잡히네용..
-
미해결스프링 시큐리티
SecurityContext 의 clear시점이 궁금합니다.
강의를 듣다가 궁금한점이 생겨 이렇게 질문 드립니다.SecurityContextPersistenceFilter에서 클라이언트의 최종 요청이 끝나면 SecurityContext를 클리어한다고 알고 있습니다.거기서 클라이언트의 최종요청 이라는것이 SecurityContext는 세션에 저장되어 있으니 세션만료 될때까지는 존재 하는것인지 아니면 요청이다보니 하나의 컨트롤러에서 하나의 작업을 수행 후 리턴해주고 끝났을때 마다 SecurityContext 를 클리어해주고 새로운 요청이오면 다시 만드는 것인지 궁금합니다.
-
미해결스프링 시큐리티
CustomAuthenticationProvider 질문
CustomAuthenticationProvider를 작성한 이후, SecurityConfig를 등록할 때 Adapter를 쓰지 않았을 경우 어떻게 등록하는지 알고 싶습니다.Adapter를 찾아보니 deprecated되어서 사용하지 않고 filterChain을 사용했을 때 어떻게 등록해야한다 이런 정보가 없어서요.
-
미해결스프링 시큐리티
강의소스 및 필독사항 엑셀이 어디있나요?
https://github.com/onjsdnjs/corespringsecurity엑셀로 올려드린 상단의 수업자료를 다운받아 반드시 필독해 주십시오이렇게 github주소만 있는데 엑셀이 어디있는지 모르겠습니다또한 섹션3 프로젝트생성 강의를 듣는 중 resource쪽 파일은 깃에있는 파일 그대로 다운받아 사용하려 했는데 이미 완성되어있는 프로젝트라 그런지 강의에서 보이는 내용과는 다른 부분이 있는거 같네요WebSecurityConfigurerAdapter Deprecated 부분에 대한 추가 설명은 따로 없는건가요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
나프2탄 스프1탄
나프2탄 후반에 스프링에관한 내용이던데 스프1탄을 들을예정이라면 그부분 건너띄고 바로 스프 1들으면 될까요?
-
미해결스프링 시큐리티
스프링 시큐리티 6.0 이상에서 securityfilterchain의 requestMatcher
강의 2-2 필터 초기화와 다중 보안 설정을 시큐리티 6.0 버전 이상으로 따라 하던 중에 다른 결과가 나와서 질문 드립니다configuration은 위와 같이 설정하였고 처음에는 영상에서 처럼 Order(0)과 Order(1)을 지정 하여 실행하였습니다.제 생각으로는 6.0이상 버전에서는 사용할 수 없는 antMacher대신 requestMatchers를 사용하여 requestMatcher가 1번첫번째 필터체인은 "admin/**" 두번 째 체인은 any request가 될 것이라고 생각했지만 디버깅 해보니 둘 다 any request가 나와 루트로 접속했을 때 첫번째 필터체인이 생성되어 루트로 가는 것이 아닌 basic login form이 나왔습니다.그래서 디버깅 중 위와 같이 뜨는 것이 보여 애초에 등록이 잘못 된 건가 싶기도 했는데 영상에서처럼 filters를 확인해보면 첫번 째는 httpbasic와 같이 등록된 12개의 필터, 두번 째는 formlogin과 같이 등록된 14개의 필터로 각각 알맞게 등록되어 있었습니다.어째서 두 개 모두 다 위 필터들은 정상적으로 등록이 되었는데 requestMatcher는 둘 다 any request 인걸까요? 6.0 이후 버전에서는 requestMatcher를 바꾸려면 다른 방법을 써야 하는 것일까요? 도움 주시면 감사하겠습니다 ㅠㅠ
-
미해결스프링부트 시큐리티 & JWT 강의
스프링부트 시큐리티 3강 - 시큐리티 회원가입에서 USER출력
안녕하세요 강사님 객체 전달관련해서 질문이 있습니다. 강의에서 USER 객체를 출력했을 시,아래와 같이 객체 내부값이 출력되었는데,저는 `com.want.project.domain.user.domain.Users@6bfd8b8c`이런식으로 출력이 되네요..혹시 tostring을 오버라이딩하신걸까요??그리고 제 객체를 getter로 찍어보면 내부에 값이 아닌 null이 저장되어 있는데 이유가 무엇일까요?