묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 OAuth2
cors설정방법
강의에서처럼 시큐리티에서만 설정하면mvc 쪽에서는 다른 설정이 필요없어도 cors가 허용되나요?
-
미해결스프링 시큐리티 OAuth2
jwt decoder 토큰 검증 시 질문
마지막 강의에서 이불러 인가서버 access token을 1초만에 만료 시키는 설정을 하고 리소스 서버로 expire 엔드 포인트를 호출 하였는데 여기서 bearer 인증 필터를 거치는데 여기서 jwt 토큰을 decoder로 검증할 때 토큰이 만료되어 검증이 실패하지 않나요? 강의에서는 바로 컨트롤러 엔드 포인트까지 도달 하고 클라이언트까지 응답이 갔습니다.
-
해결됨스프링 시큐리티 OAuth2
클라이언트에서 userinfo 엔드포인트 호출 시 질문
안녕하세요강의 초반에 oauth2Login api를 사용하여클라이언트에서 token 요청 후 scope email, profile 이렇게 userinfo 엔드포인트 요청 시인가 서버에서 해당 요청을 받아서 리소스 서버에게 토큰 검증을 맡기고 검증을 성공하게 되면 리소스 서버에 저장된 사용자 정보를 바로 클라이언트에게 전송하나요? 아니면 다시 인가서버로 전송하나요?만약 scope에 openid가 포함이 안되어 있다면 인가 서버에서토큰 검증을 수행 후 사용자 정보를 안주는 거 같은데 우리가 보통 사용하는 google, 카카오 네이버 이런 거는 포함 안 시켜도 줬는데.. 또 강의 초반에는 키클록을 사용했는데 이건 키클록 구현과는 좀 틀린가요?
-
해결됨스프링 시큐리티 OAuth2
JOSE 구성요소의 api에 관한 질문
안녕하세요jwt 강의에서 JOSE 구성요소 api들을 이용해서 토큰을 서명하고 검증을 하는도중에요 궁금한게 저희가 보통 가져다쓰는 토큰 발급 외부 라이브러리 jjwt 이런것 들도 결국엔 JWT, JWS, JwtDecoder 이런 것들을 가져다 사용한 건가요.?
-
미해결스프링 시큐리티 OAuth2
스프링 부트 3버전으로 따라가시는 분들 참고하세요
build.gradle에서implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' 가 아닌 implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.3.RELEASE' 으로의존성을 설정해야 합니다. 스프링 부트 3버전부터는 타임리프 엑스트라에서 5가 아닌 6만 인식하여 동작하므로 5로 설정하면 인증 동작에 오류가 생겨서 아무리 빌드를 다시해도 isAuthentication()이 동작하지 않으니 logout이 안 사라집니다.
-
미해결스프링 시큐리티 OAuth2
CustomOAuth2AuthenticationFilter 구현 중 질문
CustomOAuth2AuthenticationFilter으로 인증까지 처리 후home으로 리다이렉션을 하는거 까지 구현을 하였는데요HomeController에서 인증객체를 가져오려고 하면 null을 가져오는데요 CustomOAuth2AuthenticationFilter에서 securitycontext에 저장하였다가 리다이렉션할 때 새로운 스레드에서 이것을 처리해서 그 스레드에는 securityContextHolder에는인증객체가 없는 거 같은거 같은데 해결방법이 있을까요nio-8081-exec-2 스레드는 customFilter에서 holder에 제대로 저장하는데 리다이렉션 후 home에서는 nio-8081-exec-3이 받습니다.
-
미해결스프링 시큐리티 OAuth2
AuthenticationManager 생성시점
가끔 securityconfig 설정 중 AbstractAuthenticationProcessingFilter 상속한 필터를 만들 때 AuthenticationManager가 필요해서 http.shareObject로 받아오면 Null을 반환하더라구요. protected void beforeConfigure() throws Exception { if (this.authenticationManager != null) { this.setSharedObject(AuthenticationManager.class, this.authenticationManager); } else { ObjectPostProcessor<AuthenticationManager> postProcessor = this.getAuthenticationManagerPostProcessor(); AuthenticationManager manager = (AuthenticationManager)this.getAuthenticationRegistry().build(); if (manager != null) { this.setSharedObject(AuthenticationManager.class, (AuthenticationManager)postProcessor.postProcess(manager)); } } 여기서 httpSecurity의 해당 메서드에서 providerManger를 생성하는 거 같으나 디버깅했을때여기보다 제가 Bean으로 정의한 SecurityFilterchain이 먼저 걸려 httpSecurity.getShareObject()를 하면 null을 반환하더라구요. 그래서 authenticationConfiguration.getAuthenticationManager()으로 넣기는 하였으나 이게 정확히 AuthenticationManager생성주기가 매우 궁금하여 질문드립니다.
-
미해결스프링 시큐리티 OAuth2
FormLogin과 Oauth2Client 둘 중 사용하는 시점
안녕하세요 FormLogin, Oauth2Client 설정 중에서요FormLogin을 설정하면 인가, 사용자 리소스까지 바로 가져올 수있고 Oauth2Client는 인가까지만 해주는데둘 중에 어떤 상황에 해당 설정들을 사용해야하는지 헷갈려서 질문드립니다.
-
미해결스프링 시큐리티 OAuth2
postman userinfo 엔드포인트 질문
안녕하세요 userinfo 엔드포인트를 호출을 postman에서 하면 body에 아무런 정보가 뜨지 않고 400 상태만 반환합니다..그런데 실제 웹 브라우저에서 똑같이 헤더 추가하고 하면은 200 OK json body가 딱 떨어지는데 뭐가 문제일까요?postman에서 뭔가 잘못된 거 같은데.. 원인을 모르겠네요..
-
미해결스프링 시큐리티 OAuth2
강의 수강신청하고 듣기 전입니다 질문있습니다.
제가 만든 두 서버 사이트끼리 sso 인증으로 로그인을 공유하려고 합니다. 이 강의에 그것에 관한 내용이 있나요? 있다면 몇강쯤에 있나요?없다면 이 강의를 어떤식으로 활용해야 구현할 수 있을까요 ?
-
미해결스프링 시큐리티 OAuth2
인증 코드를 통해 발급 받은 토큰의 관리
안녕하세요 강사님 OAuth2 로그인을 구현하고 회원 탈퇴를 위해 구글과 카카오의 unlink API를 호출하려는데, 소셜 로그인 과정을 시큐리티가 자동으로 처리해주고 있어서 API 호출에 필요한 토큰이 관리되고 있지 않은 상황입니다. 이럴 때 어떤 방식으로 토큰을 받아야 하는지 궁금합니다.제가 생각해본 방법은 다음 두가지가 있습니다.첫 번째 방법 : 인증 코드를 직접 요청하고, 반환 받은 인증 코드로 토큰 또한 직접 요청두 번째 방법 : 설정해둔 리다이렉트 URI에 대한 처리를 직접 구현 후, 인증 코드를 받고, 해당 인증 코드로 토큰을 직접 요청혹시 이중에 맞는 방법이 있는지, 아니면 시큐리티의 자연스러운 흐름안에서 토큰을 받을 방법이 있을까요?보통 어떤식으로 토큰 값을 받는지 궁금합니다!
-
미해결실습으로 배우는 OAuth 2.0 개념 원리, 그리고 해킹과 보안
에러 해결 어떻게 해야 할까요
Fatal error: Call to undefined function curl_init() in C:\APM_Setup\htdocs\wgw_website\oauth\friends_api.php on line 3해당 에러가 발생합니다www.wgw.co.kr 에서 oauth 로그인시 해당 oauth.friends.co.kr 도메인으로 넘어가고 해당 페이지에서 id, pw 입력시 위 에러가 발생합니다.코드값은 db에 잘 기록되는거 같은데, 뭐가 문제일까요?
-
해결됨스프링 시큐리티 OAuth2
SPA의 로그인 페이지 사용하면서 자체 인가 서버 구성하는 법
SPA로그인 페이지 사용 아직 시도중이지만 시큐리티필터체인의 http. .... .login() .loginProcessingUrl()로 해결 볼 수 있을 거 같아서 자세한 질문은 삭제하겠습니다..!
-
미해결스프링 시큐리티 OAuth2
claims 공개/비공개 개념 질문
{ "sub" : "1234567890", "iss" : "onjsdnjs.com" // 등록된 클레임 "exp" : 192630000 "https://onjsdnjs.com/claims/job" : "developer" //공개 클레임 "userId" : "leaven" // 비공개 클레임 "username" : "onjsdnjs" }공개와 비공개 개념이 있습니다.어디에 혹은 어느 대상에 공개를 한다는 것인지 설명이 없어 문의 드립니다.
-
미해결스프링 시큐리티 OAuth2
spring security 6부터 Implicit 지원 안하네요
spring security 6부터 AuthorizationGrantType.IMPLICIT가 제거되어서 OAuth2AuthorizationRequestException이 발생합니다.spring security 6로 실습 따라가면서 학습하시는 분들은 참고하세요https://github.com/spring-projects/spring-security/issues/11506
-
미해결스프링 시큐리티 OAuth2
인증을 세션이 아닌 jwt로 할 경우 질문입니다.
현재 oauth2Login api를 사용해서 사용자 로그인 인증에 성공하면 인증객체가 세션에 저장되고, 이후 인가서버에 code 요청시 OAuth2AuthorizationEndpointFilter 에서도 securityContext에 저장돼있는 인증객체로 인해 인증성공으로 판단후 code를 발급합니다. 근데 세션 기반이 아닌, jwt 토큰을 받아서 검증후 인증을 처리하는 로직이라면 jwt 토큰을 검증하는 필터인 resource Server api의 필터가 OAuth2AuthorizationEndpointFilter 보다 뒤에 있기 때문에 인증객체가 없어서 코드발급을 안해줄텐데 이럴땐 어떻게 해야하나요? jwt토큰을 검증하고 인증객체를 만드는 필터를 OAuth2AuthorizationEndpointFilter 앞에 만든다고 쳐도 그러면 resource Server api의 필터와 똑같이 동작하는 필터가 생기는건데 좋은 방법인것 같진 않습니다. 어떻게 해야 하나요?
-
미해결스프링 시큐리티 OAuth2
Resouce owner 인증 전 단계 질문입니다.
클라이언트가 인가서버에게 인가코드를 요청하기 전에 사용자인증을 받기 위해 사용자 id, 비밀번호를 입력하는 단계가 먼저 거치고, 인증이 되면 인가서버에게 /oauth2/authorize url로 response_type=code ~~ 이런식의 정보를 포함해서 요청하게 되는데 그러면 사용자가 인증받을때 입력한 사용자 id, 비밀번호를 통해 인증처리를 하는건 인가서버에서 하는게 아닌건가요? 인가서버에서 하는거라면 입력한 사용자 id, 비밀번호는 어떤 필터에서 처리하는건가요?
-
미해결스프링 시큐리티 OAuth2
code 를 accessToken 으로 교환시 질문입니다.
인가서버로부터 code 발급받고 이 코드를 accessToken으로 교환하기 위해 서버에 요청할때 이 순간은 인증을 못받은 상태 아닌가요? accessToken을 발급받아야 클라이언트가 인증을 받은거고 그리고 이때도 클라이언트가 인증을 받아서 authorizedClient 객체가 생기는거지 인증객체가 생기는건 아닐텐데 강의 37분30초쯤에는 code를 accessToken으로 바꿔달라는 요청할때 왜 인증객체가 생성돼있나요? authorization server api를 사용했기때문에 마지막에 위치한 인가서버 필터에 도달하기 위해 다르게 처리되는건가요?
-
미해결스프링 시큐리티 OAuth2
resouce server 질문
인가서버 설정을 하면서 인가서버에서 accessToken을 받고 이를 검증해야하기 때문에 oauth2ResourceServer api를 jwt로 설정한다고 설명하셨는데 이게 무슨 말인지 잘 모르겠습니다. oauth2ResourceServer 는 말그대로 헤더에 jwt 토큰이 있는 요청이 들어오면 이 jwt 토큰을 인가서버와의 통신으로 검증해서 인증처리를 하는 구조인건데 인가서버 설정에서 이게 왜 필요한건지 잘 모르겠습니다. user info 요청할때 클라이언트가 인가서버로 accessToken을 주면서 유저정보 달라고할때 인가서버에서 이 accessToken을 검증하는데, 이때 리소스 서버를 사용해서 검증한다는건가요? 그럼 oauth2ResourceServer api를 등록안하면 인가서버는 자체적으로 accessToken을 검증할수가 없는건가요? 인가서버와 리소스서버는 서로 다른 개념인거 같은데 인가서버를 위해 리소스서버를 써야한다는게 잘 이해가 가지 않습니다.
-
미해결스프링 시큐리티 OAuth2
자체로그인 구현시 질문입니다.
카카오, 네이버같은 소셜로그인이 아닌, 자체 로그인을 통한 검증을 구현하려고 하는데 프론트가 react 이므로 jwt 토큰을 사용한 검증을 진행하려고 합니다. 그러면 이를 구현하기 위해서 jwt 토큰을 발급하는 oauth2 authorization server와 발급한 jwt토큰을 검증하는 oauth2 Resource Server와 자체적으로 만든 시큐리티 인가서버에 code와 토큰을 요청하는 oauth2 client api를 전부 사용해야하는건가요? 즉, jwt를 통한 자체로그인 검증기능을 구현하려면 지금까지 학습한 oauth2 client + oauth2 Resource Server + oauth2 Authorization Server 3개 api를 전부 사용해 구현해야 하는건가요?