무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링부트 시큐리티 & JWT 강의
logout 기능 오류
강사님이 작성한 코드대로 진행을 하여 로그인 기능과 jwt발급, 검증 하는 부분까지 전부 정상작동 하는것 까지 확인했습니다.다만 postman 으로 Header에 jwt토큰 값을 넣고 post방식으로 /logout 메서드를 호출하였으나 404 에러가 뜨고 path는 logout이 아닌 login으로 응답이 내려옵니다.디폴드 로그아웃 url이 /logout 으로 알고 있어서 별도의 로그아웃 기능을 구현하지 않는 상태인데 제가 잘못 알고 있는 것이 있을까요 ???
- 미해결스프링부트 시큐리티 & JWT 강의
자바 버전이 안맞는 이슈가 있습니다.
자바버전을 16으로 해도 안되네요... Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/SpringApplication has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0at java.base/java.lang.ClassLoader.defineClass1(Native Method)at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855)at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753)at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676)at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)at com.cos.security1.Security11Application.main(Security11Application.java:10)
- 미해결스프링부트 시큐리티 & JWT 강의
jwt 토큰 만료시간에 대해서
안녕하세요 강의 잘 들었습니다 !!다름이 아니라 토큰 만료 시간을 엄청 길게(100000초) 했는데도자꾸 몇 분 만에 토큰이 만기(TokenExpiredException) 되었다고 해서 .....(프론트는Android studio랑 연동)뭔가 이상해서 혹시 이런 증상에 대해 해결책은 없는지 궁금합니다.
- 미해결스프링부트 시큐리티 & JWT 강의
intelliJ jdk11 oauth로그인 에러 문제입니다.
안녕하세요 훌륭한 강의를 잘 듣고있는 학생입니다.다름이 아니라 제가 oauth로그인을 하면 오류가 발생하여 문의드립니다.우선 저는 jdk11과 Gradle을 사용하고있습니다.위와 같이 잘 작동하다가 아래와 같이 oauth로그인을 사용하면 에러가 발생합니다.Parameter 0 of method setFilterChains in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' that could not be found.에러의 총 내용은 위와 같습니다.그래서 다른 질문들의 답변을 보니 라이브러리의 충돌 및 다운로드의 문제인거 같아 intelliJ에서 제공하는 invalidate cache기능을 사용하여 다시 재빌드를 하였지만 같은 에러가 발생하고 .\gradlew --refresh-dependencies를 사용하여 재빌드 또한 진행하였지만 같은 결과가 나왔습니다. 마지막으로 toolbox 및 인텔리제이를 다시 실행해도 같은 현상이 발생합니다. 혹시 방법을 알 수 있을까요??
- 미해결스프링부트 시큐리티 & JWT 강의
세션에 저장된 로그인 된 정보 가져올 시 코드 질문입니다.
@GetMapping("/loginForm") public String loginForm(HttpSession session, @AuthenticationPrincipal PrincipalDetails userDetails) { //로그인 되어있을 때, 로그인 폼으로 이동하는 경우 메인 페이지로 이동 if(userDetails != null) { System.out.println("현재 사용자: " + userDetails.getUser()); return "redirect:/"; } return "loginForm"; }위와 같이 사용자 정보를 가져오는 것이 맞을까요? User가 잘 출력되긴하나 정확하게 짚고 넘어가고 싶어서 질문 드립니다. 아 그리고 로그인 성공을 했을 시 세션에 로그인 정보가 저장될텐데 개발자 도구로 봤을 시 위와 같이 세션에 아무 정보도 없던데 원래 보이지 않는 것 인가요? 세션에 로그인 한 정보가 저장되는데 "내 정보 보기" 같은 기능처럼 로그인 사용자의 User엔티티가 필요할 때마다 세션에 있는 해당 로그인 정보로 DB를 조회하여 원하는 엔티티를 꺼내와서 사용하는 것이 맞을까요? 제가 이렇게 생각한 이유는 세션의 로그인 정보는 로그아웃 후 다시 로그인을 하기 전까진 변하지 않기 때문에 세션의 User와 DB의 User가 일치하지 않을 수도 있기 때문입니다. 미리 감사드립니다 ㅠㅠ
- 미해결스프링부트 시큐리티 & JWT 강의
시큐리티 페이스북 작동이 안되는 것 같아요
깃허브에 올려주신 파일에서 client-id,client-secret 정도만 제가 동일하게 생성해서 실행해봤는데 위와 같은 에러가 발생하네요..
- 미해결스프링부트 시큐리티 & JWT 강의
질문 있습니다.
안녕하세요, 선생님.강의 너무 잘 들었습니다. 다름이 아니라 강의 참고하면서 진행했던 소스를 제 깃허브에 올린 후 관리하고 싶은데, 출처를 남기고 소스 올려도 될까요?
- 미해결스프링부트 시큐리티 & JWT 강의
jsonwebtoken 라이브러리 오류 문의
TokenProvider에서 저는 왜 jsonwebtoken라이브러리가 없을까요..ㅠㅠimport io.jsonwebtoken.io.Decoders;import io.jsonwebtoken.security.Keys;jsonwebtoken일부가 없어서 참조할 수가 없다네요.maven에 io.jsonwebtoken 0.91버전 있는데도 그러네요.원인 알 수 있을까요
- 미해결스프링부트 시큐리티 & JWT 강의
JWT Token 구현에서 Session 을 사용한다?
안녕하세요 강사님. 이번 수업 너무 잘 들은 학생입니다.다름이 아니라 JWT Token 을 필터단에서 Security에게 인가처리를 맡기기 위해 Security Context 에 Authentication을 저장한다고 하셨습니다.이는 스프링 내 세션에 인증 객체를 저장해 두는 것으로 이해를 하였습니다. 1.수업중에도 설명해주셨듯이, 토큰을 사용하는 것은 세션에 인증 객체를 저장하지 않도록 해서 서버적으로 부하가 걸리는 상황을 방지하는 점이 큰 장점으로 이해하였으나, 결국 시큐리티에 인가를 맡기려면 세션에 저장하는 방법 밖에 없는지 궁금합니다. 필터들 사이에서 Authentication 정보를 주고 받아야 하니 스프링 시큐리티를 사용하려면 세션 저장 말고는 방법이 없는걸까요?2.계속 생각하다보니 또 궁금해진 사항인데, [SecurityContextHolder 에 세션 정보를 저장해두는 것이 SpringSecurity 가 일반적으로 채택하고 있는 formLogin 방식에서 사용하는 세션 저장 방식]인 것으로 이해를 했습니다. 이 때, 왜 이 부분이 계속 세션을 저장해서 서버적으로 부하가 걸리게 하는 건지 잘 이해를 못한 것 같습니다. Authentication 과정을 살펴보면 그 때 인증을 하기 위해 형성한 Authentication 객체는 그 요청을 처리하기 위해 Thread Local 에 있는 SecurityContextHodler 에 저장을 해두고 인가를 처리하게 됩니다. 하지만 그 과정을 끝내고 나면 Holder를 비워주고, THread도 종료되기 때문에 서버 자체에는 딱히 저장되는 것은 없지 않나요? 보안적인 측면 외의 SESSION 방식의 단점을 잘 이해하지 못한 것 같습니다. 간략하게 라도 도움주시면 감사할 것 같습니다. 2번을 먼저 이해해보는게 1번을 이해하는데 도움이 될 것 같긴 하네요. 강의도 너무 잘들었습니다. 미리 감사드립니다.
- 해결됨스프링부트 시큐리티 & JWT 강의
OAuth 로그인 비밀번호
PrincipalOauth2UserService 클래스에서 BCryptPasswordEncoder를 사용하다보니 순환참조오류가 발생하는 것인데 어차피 OAuth를 통해 회원가입 로그인이 진행된다면 비밀번호는 굳이 BCryptPasswordEncoder를 사용하지 않고 그냥 string값으로 "소셜 로그인" 이런식으로 진행해줘도 문제없지 않나요?이렇게 사용하면 순환참조도 발생하지 않긴해서요이렇게 사용하면 문제가 생기는 부분이 있을까요?
- 해결됨스프링부트 시큐리티 & JWT 강의
security 문제
JWT토큰 만드는 강의를 따라서 토큰을 만들었고 포스트맨에서 정상작동하는 것은 확인했습니다.근데 프론트랑 연결해서 해보려고 하니 문제가 생겨서 질문 남깁니다.ㅠㅠ 회원이 로그인을 하고,로그인 정보를 받아서 db에 있는 회원이면 로그인 시키면서 토큰을 발행하고,회원이 인증이 필요한 페이지에 접근하면 header에 저장된 Authorization 를 get으로 가져온다음request.getHeader("Authorization"); 토큰이 유효한지 확인하고 페이지에 접속하게 해주는 것이라고 이해했는데 header에 저장된 Authorization정보를 읽기도 전에 403에러가 납니다. 제가 생각한 문제는 cors쪽 문제라고 생각 돼 검색해보고 있지만 뚜렷한 해결책이 보이고 있지 않아 너무 답답합니다. ㅠㅠ 보신다면 꼭 댓글 부탁드릴게요!감사합니다. git 주소도 남깁니다 https://github.com/ttyj77/finalProject/tree/main/jwtFinal
- 미해결스프링부트 시큐리티 & JWT 강의
jwt를 헤더에 담는 이유
바디에 데이터를 넣는 것보다 header에 넣는 것이 더 안전한건가요?? 만약 그렇다면 이유도 궁금합니다.
- 미해결스프링부트 시큐리티 & JWT 강의
httpBasic방식
httpBasic방식은 authorization에 id와 pw를 넣어서 보낸다고 하셨는데 그럼 이전강의에서는 httpBasic방식을 disable안하셨으니까 이전강의에서는 id와 pw를 넣어서 보냈다는 건데 그 말이 로그인시를 말하는 건가요?? 로그인이 한번되면 sessionId로 확인하면 되니까 로그인시에만id와 pw을 보낸다는 건지 궁금합니다.
- 미해결스프링부트 시큐리티 & JWT 강의
form.html질문
이렇게 링크를 걸어주면왜 authorization-uri가 호출이 되는 건가요?? oauth-client라이브러리때문에 그런건가여?
- 미해결스프링부트 시큐리티 & JWT 강의
회원가입 후 loginForm에서 로그인시 홈으로 이동 안될시 확인할 사항
// PrincipalDetail 클래스에서 모두 True로 하고 돌려보세요. // 그러면 잘됩니다. // password 리턴 @Override public String getPassword() { return user.getPassword(); } @Override public String getUsername() { return user.getUsername(); } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { // 1년동안 회원이 로그인을 안하면, 휴먼 계정으로 하기로함 // 현재시간 - 로그인 시간 >= 1년을 초과하면 return false 등등... return true; }
- 미해결스프링부트 시큐리티 & JWT 강의
시큐리티 세션
서버에 memberA의 세션이 있고그 세션안에 security session영역이 있고그 안에 키는 security ContextHolder이고 값은 Authentication인데Authentication안에 UserDetails가 있는 것이 맞나요?Oauth를 사용하면 security session영역의 Authentication안에 userdetail이 들어가는게 아니라 토큰형식으로 관리되는건가요??
- 미해결스프링부트 시큐리티 & JWT 강의
oauth 강제 회원 가입
안녕하세요 강사님! 강의 잘 듣고 있습니다 ㅎㅎoauth 2.0 강의를 들으며 궁금한 부분이 생겼습니다.원래 oauth를 사용하면 강제로 회원가입시키는 것이 일반적인가요? 아니면 이 강의에서만 그렇게 진행을 하신건지 궁금합니다.
- 미해결스프링부트 시큐리티 & JWT 강의
구글 로그인 후, 구글 계정 선택 페이지
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님질 좋은 강의 올려 주셔서 잘 듣고 있습니다 ❤❤제가 지금 8강 수업을 듣고 있습니다.궁금한 점이 있습니다. 현재 로그인 창에서 구글 로그인 버튼을 누르면 구글 계정 중에서 선택하는 창이 떠야 하는데 이 과정 없이 바로 인덱스 페이지로 넘어가는 상태입니다. 어제까지는 구글 계정 선택하는 페이지가 중간에 떴는데 오늘은 갑자기 안되네요. 어제도 오늘과 마찬가지로 선택할 수 있는 구글 계정은 하나뿐이었습니다.어떤 부분이 문제일지 궁금합니다.
- 미해결스프링부트 시큐리티 & JWT 강의
강사님 마지막 강의 질문이 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 좋은 강의 너무 잘 들었습니다.!스프링 시큐리티랑 jwt 너무 막막했었는데 이 강의 듣고 진짜 이해가 잘 갔어요! 배운 내용 복습만 해도 시큐리티 부분은 충분할것 같아요 정말 감사드립니다 😊 마지막 강의까지 다 들었는데 오류가 나서 문의 드립니다super를 지우기 전에는 로그인 후 /user 로 해도 403에러가 떴었는데 super를 지우면 아무것도 안 뜨는데 어떤게 잘못된건지 알 수 있을까요?마지막 부분 JwtAuthorizationFilter 클래 doFilterInternal 메서드에서 super부분을 지우면 아예 Controller를 안 타는것 같아서요ㅜ http://localhost8080/api/v1/user 로 보내면 403이나 500등 에러코드도 안 뜨고 인텔리제이에서도 따로 에러 로그도 안 뜨는데 무슨 문제인지 모르겠어서 질문 드립니다ㅜnellizi/jwt (github.com) 깃허브 주소입니다!
- 미해결스프링부트 시큐리티 & JWT 강의
네이버 로그인 시 providerId가 인강과는 다른 데이터를 받습니다.
아무리 찾아도 문제 원인을 모르겠습니다..