묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 OAuth2
네이버 로그인 시 권한
네이버로 로그인하면 권한이 yml에 설정한 scope - email, profile은 넘어오지 않습니다. 강사님과 코드도 동일한데 어디를 확인해봐야할까요?
-
미해결스프링 시큐리티 OAuth2
jwt login flow에 대해서 질문드립니다.
현재 login post 요청만 되는 것으로 확인이 됩니다.1. login post요청만 받을 수 있도록 설정되어 있는 클래스가 궁금합니다.2. 기존에 있던 loginfilter가 사라지고 현재는 어떤 필터로 대체 되었는지 알고 싶습니다.3. http.addFilterBefore(jwtAuthenticationFilter(macSecuritySigner, octetSequenceKey), UsernamePasswordAuthenticationFilter.class); http.addFilterBefore(jwtAuthorizationMacFilter(octetSequenceKey), UsernamePasswordAuthenticationFilter.class);현재 이렇게 코드가 있는데, 인증일 경우 jwtAuthenticationFilter만 권한 검증일 경우 jwtAuthorizationMacFilter로 가는지 여부 결정하는 과정에 대해서 설명부탁드립니다.
-
미해결스프링 시큐리티 OAuth2
login 성공 이후 error페이지
302 status 이후 error 페이지로 이동하는 문제가 있습니다.어떤걸 확인해야될까요?
-
미해결스프링 시큐리티 OAuth2
OAuth2 form login error
OAuth 2.0 Social Login 연동 구현 (6) 부분에 있는 영상 33:46까지 따라왔지만 form로그인에서 발생한 문제입니다. form login의 inmemory나 jdbc형태로 하는 게 아닌 CustomUserDetailsService를 통해서만 인증을 하는 것으로 보이는데, 이와 같은 에러가 발생하는 이유를 모르겠습니다. (에러코드가 조회되지 않음) 디버그 모드를 확인해보니, DaoAuthenticationProvider클래스에 있는 additionalAuthenticationChecks메소드에서 에러가 발생하고 있습니다.if (!this.passwordEncoder.matches(presentedPassword, userDetails.getPassword())) { this.logger.debug("Failed to authenticate since password does not match stored value"); throw new BadCredentialsException(this.messages .getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); } 2. presentedPassword 이부분이 값이 빈값으로 넣어지고 있는데 문제가 되는 부분인 것 같아 질문드립니다.2-1. 추가적으로 이부분은 첫 로그인이라서 에러나는 부분하고 상관이 없이 발생하는지 질문드립니다. 에러로그가 확인이 불가능하여, 코드 공유를 위해 프로젝트 공유를 하였습니다. 확인 부탁드립니다.
-
미해결스프링 시큐리티 OAuth2
oidc 로그인
선생님 구글 로그인은 oauth2Login() 을 사용하지만 결국에는 oidc Scope를 사용하기 때문에 oidc 인증 프로토콜을 사용해서 인증절차를 사용한다고 보면 될까요?
-
미해결스프링 시큐리티 OAuth2
Spring Authorization Server 활용 sso 구축
Oauth를 활용해 자체 sso 서버를 구축하려고 하는데 궁금한 게 있어 문의 드립니다.먼저 구축할 예정인 환경은 아래와 같습니다.로그인 프론트 Authorization과 로그인을 함께 처리할 백엔드 authorization code 요청 시 로그인 여부를 확인해야 하는데 로그인 정보가 jwt 토큰으로 cookie에 담겨있다면, OAuth2AuthorizationEndpointFilter에서 확인을 해야하는지 OAuth2AuthorizationCodeRequestAuthenticationConverter에서 확인을 해야하는지 궁금합니다.
-
미해결스프링 시큐리티 OAuth2
OAuth 2.0 Grant Flows 관련 질문
안녕하세요. OAuth 2.0을 배우고 싶어 학습 신청했습니다.유익한 강의 준비해주셔서 감사합니다.막연하게 알고 있는 Spring Security 에 대해 강의를 통해 명확하게 알아가고 있습니다. 강의를 들으며 몇가지 궁금한 점이 있어 질문드립니다. 우선은 자체 로그인만 구현할 예정이라면,소셜 로그인 기능이 없는 경우에는 OAuth 2.0을 도입할 필요가 없는 건가요?Resource Owner Password Credentials Grant Flow 는 Deprecated 된다고 하는데 그럼 어떻게 구현해야하나요? 답변주시면 성장하는데 큰 도움이 될 것 같습니다!감사합니다!
-
해결됨스프링 시큐리티 OAuth2
시큐리티 완전정복(6.x 개정판) 쿠폰 저도 받을수 있을까요.. ㅜ
학습질문과 전혀 관련없는 질문이라 죄송합니다. ㅠ저와같이 할인쿠폰 만료일 지나신 분 쿠폰요청글을 보고 혹시나 저도 아직 가능한지 여쭙고 싶어서 혹시나 하는 마음에 글올립니다.oAuth하고 이전버전 시큐리티 강의 듣고 있습니다.저도 메일을 늦게 확인하여서 쿠폰 만료일이 지났는데받을수있을까요?발급받았던 이메일 주소 는laundryday@naver.com입니다.. 좋은 하루 보내세요 감사합니다.
-
미해결스프링 시큐리티 OAuth2
비대칭키 내용 중 궁금한게 있습니다.
데이터 보안 측면에서 송신자 공개키로 암호화 -> 송신자 개인키로 복호화를 한다고 적혀있는데요.수신자가 송신자의 개인키를 가지고 있다는게 보안적으로 문제가 되는게 아닌가 싶습니다. 수신자 공개키로 암호화 -> 수신자 개인키로 복호화의 오타인 것인지, 아니라면 어떻게 보안적으로 괜찮은건지 궁금합니다.
-
미해결스프링 시큐리티 OAuth2
시큐리티 완전정복(6.x 개정판) 쿠폰
안녕하세요!!수원님의 시큐리티 강의를 듣고 있습니다!!좋은 강의 해주셔서 감사합니다!다름이 아니라, 제가 메일을 늦게 확인하여서기존 수강생에게 제공되는 50%할인 쿠폰을 사용하지 못했는데,혹시 다시 쿠폰 발급이 가능한지 여쭤봐도 되겠습니까?!감사합니다.
-
미해결스프링 시큐리티 OAuth2
access token 의 용도
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. keycloak,kakao 같은 authorization server 에서 발급하는 access token 은 userinfo 를 가져오기 위한 token 이라고 생각했는데, resource server 같은 자원도 이 토큰으로 접근 하는게 맞는지 궁금합니다. 수업을 위한 예제인지 실제로 이렇게 사용을 많이 하는지요. 카카오같은 인증서버에서 받은 access token 은 카카오에서 유저 정보를 가져오기 위함이고, resource server 의 다른 api 접근 목적은 아니라고 생각했었는데요. 제가 잘못 알고 있었는지 궁금합니다.
-
미해결스프링 시큐리티 OAuth2
client 의 token 발행 가능 여부
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. keycloak 을 authorization server 로 사용하는데요.키클록에 등록되는 유저와 유저별 권한과 별개로,서비스의 메뉴별 권한을 상세 설정하기 위해서 client 에서 서비스 권한 관리를 하고 메뉴 접근 권한 관련된 token 을 발행한다고 하면, resource-server 에 jwt-set-uri 를 client 서버 endpoint 로 하고, client 에서 jwkset 을 반환하는 방식이 가능한지 궁금합니다.
-
미해결스프링 시큐리티 OAuth2
client-credentials 방식 accessToken null 이슈
Cannot invoke "org.springframework.security.oauth2.client.OAuth2AuthorizedClient.getAccessToken()" because "oAuth2AuthorizedClient" is null] with root causekeycloak 버전은 : 21.1.2 @GetMapping("/oauth2Login") public String oauth2Login(Model model, HttpServletRequest request, HttpServletResponse response) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); OAuth2AuthorizeRequest oAuth2AuthorizeRequest = OAuth2AuthorizeRequest .withClientRegistrationId("keycloak") .principal(authentication) .attribute(HttpServletRequest.class.getName(), request) .attribute(HttpServletResponse.class.getName(), response) .build(); OAuth2AuthorizationSuccessHandler successHandler = (authorizedClient, principal, attributes) -> { oAuth2AuthorizedClientRepository .saveAuthorizedClient(authorizedClient, principal, (HttpServletRequest) attributes.get(HttpServletRequest.class.getName()), (HttpServletResponse) attributes.get(HttpServletResponse.class.getName())); System.out.println("authorizedClient : " + authorizedClient); System.out.println("principal : " + principal); System.out.println("attributes : " + attributes); }; auth2AuthorizedClientManager.setAuthorizationSuccessHandler(successHandler); OAuth2AuthorizedClient oAuth2AuthorizedClient = auth2AuthorizedClientManager.authorize(oAuth2AuthorizeRequest); model.addAttribute("oAuth2AuthorizedClient", oAuth2AuthorizedClient.getAccessToken().getTokenValue()); return "home"; } keycloak: clientId: oauath2-client-app clientSecret: HPWAsKr9dEy9DPU1babedRmpstowiXOs clientName: oauath2-client-app authorizationGrantType: client-credentials clientAuthenticationMethod: client_secret_basic provider: keycloak <form sec:authorize="isAnonymous()" action="#"> <p><input type="button" onclick="authorizationCode()" value="AuthorizationCode Grant"/></p> <p><div sec:authorize="isAnonymous()"><a th:href="@{/oauth2Login(username='user',password='1234')}">Password flow</a></div></p> <div sec:authorize="isAnonymous()"><a th:href="@{/oauth2Login}">Client Credentials Flow Login</a></div> </form> @Configuration public class AppConfig { @Bean public DefaultOAuth2AuthorizedClientManager auth2AuthorizedClientManager(ClientRegistrationRepository clientRegistrationRepository, OAuth2AuthorizedClientRepository oAuth2AuthorizedClientRepository) { OAuth2AuthorizedClientProvider oAuth2AuthorizedClientProvider = OAuth2AuthorizedClientProviderBuilder.builder() .authorizationCode() .password() .clientCredentials() .refreshToken() .build(); DefaultOAuth2AuthorizedClientManager defaultOAuth2AuthorizedClientManager = new DefaultOAuth2AuthorizedClientManager(clientRegistrationRepository, oAuth2AuthorizedClientRepository); defaultOAuth2AuthorizedClientManager.setAuthorizedClientProvider(oAuth2AuthorizedClientProvider); defaultOAuth2AuthorizedClientManager.setContextAttributesMapper(contextAttributeManager()); return defaultOAuth2AuthorizedClientManager; } private Function<OAuth2AuthorizeRequest, Map<String, Object>> contextAttributeManager() { return oAuth2AuthorizeRequest -> { Map<String, Object> contextAttributes = new HashMap<>(); HttpServletRequest httpServletRequest = oAuth2AuthorizeRequest.getAttribute(HttpServletRequest.class.getName()); String userName = httpServletRequest.getParameter(OAuth2ParameterNames.USERNAME); String userPassword = httpServletRequest.getParameter(OAuth2ParameterNames.PASSWORD); if(StringUtils.hasText(userName) && StringUtils.hasText(userPassword)) { contextAttributes.put(OAuth2AuthorizationContext.USERNAME_ATTRIBUTE_NAME, userName); contextAttributes.put(OAuth2AuthorizationContext.PASSWORD_ATTRIBUTE_NAME, userPassword); } return contextAttributes; }; } } 이렇게 됩니다. 현재 상황으로 문제가 되어 있는 부분이 없는 것 같습니다.어디부터 다시 확인해야 될지 조언 부탁드립니다.
-
미해결스프링 시큐리티 OAuth2
AuthorizationEndpoint 커스텀 질문
안녕하세요.AuthorizationEndpoint.baseUri(”~~”) 는 OAuth2 로그인 단계중에서 1단계에 해당하는 code, state 값 등을 받아서 처리하는 부분의 uri를 변경하는게 맞을까요?아니면, 클라이언트가 로그인할때 인가서버로 요청을 보낼때 이를 처리할 인가서버의 경로로 사용되어지는 경로일까요?
-
미해결스프링 시큐리티 OAuth2
강의에서 사용하는 keycloak 버전인 19.0.1 다운로드 URI 공유
강의를 매끄럽게 따라하려면 똑같은 keycloak 버전을 사용하셔야 합니다.2x.x.x 버전 사용 시 openid를 강제로 사용해야 할 수 있습니다. 다운로드 URI : https://github.com/keycloak/keycloak/releases/download/19.0.1/keycloak-19.0.1.tar.gz
-
미해결스프링 시큐리티 OAuth2
Missing parameter: code 에러
Oauth 2.0 User 모델 소개(2)영상에서 assessToken 호출을 위한 과정을 진행하는데 발생한 문제입니다.keycloack 버전이 달라 발생한 문제인지 질문드립니다.현재 keycloack 버전 21.1.2 입니다.
-
미해결스프링 시큐리티 OAuth2
프론트엔드 + 서버 oauth2 연동
안녕하세요, 좋은 강의 감사합니다. 현재 제가 개발중인 react 로 된 SPA 어플리케이션이 있는데요, 프론트엔드에서 직접 authorization server 로 access token 을 가져오자니 페이지가 새로고침 될때 날라가는 현상이 발생합니다. 이를 localStorage, sessionStorage, cookie 등에 저장하는것도 안전하지 않아서 (혹시 안전하게 하는 방법이 있나요?)아예 "로그인"만 서버쪽에서 수행하고 access token, refresh token 을 프론트로 전달해줘서 refresh token 만 httpOnly Cookie 에 넣으려고 합니다. 이제 새로고침 될때마다 서버에 access token 요청을 refresh token 으로 한다음, 그 access token 을 사용하려고 합니다. 혹시 이 같은 방식이 쓰이는지 알 수 있을까요? 아니면 추천해 주시고 싶은 방식이 있으신가요? 2. 서버 사이드 view 를 통해 로그인만 oauth2Login 으로 수행하고, 로그인 후 나머지는 SPA 프론트엔드로 리다이렉트 가 가능한가요? 혹은 이렇게 쓰기도 하나요?
-
미해결스프링 시큐리티 OAuth2
통합 로그인 구축 관련해서 질문 드립니다.
안녕하세요.통합인증서버 - 클라이언트 - 백엔드서버 이런식으로 구성 되어 있는데요.플로우 관해서 질문이 있습니다.client -> auth server : return url / client id 통합인증서버로 보내고auth server -> client : auth id 통합인증서버에서 받고client -> be server : client id / auth id 클라이언트에서 받고be server -> auth server : client id / auth id 백엔드서버에서 통합인증서버로 보내고auth server -> be server : access token / refresh token 백엔드서버에서 통합인증서버로 받고be server -> client : access token / refresh token 백엔드서버에서 클라이언트 보내기이런식으로 구성을 한다고 하더라구요.저는 3번에서 바로 auth id를 통합인증서버로 보내고 토큰을 클라에서 받고 저장 그리고 백엔드 보내고 저장이라고 생각이 드는데요.불필요한 작업이 추가로 하는거 같다라는 생각을 했는데요. 클라에서 auth id를 통합인증서버로 보낼때 get으로 보내서 보안 문제가 있어서 서버 투 서버로 보낸다고 하더라구요.(백앤드 서버에서 보내는 것만 받으려고)어떠한 방식이 옳은건지, 저렇게 하면 보안적으로 더 좋은건지 잘 모르겠습니다.제가 생각하는 방식으로 해도 되는건지.. 고견 부탁드립니다.
-
미해결스프링 시큐리티 OAuth2
안드로이드, iOS에서 sdk를 사용할 때 어떻게 해야할까요?
앱에서 sdk를 사용하면 인증 코드 또는 엑세스 토큰을 발급받는 과정에서 클라이언트(spring boot)와 통신을 하지 않는데요.이 때는 스프링 oauth2 client를 활용할 수 없는걸까요?sdk에서 발급 받은 인증 서버(구글, 카카오 등)의 엑세스 토큰을 앱 -> 클라이언트로 넘겨서 회원가입 및 로그인 처리를 해야하는 건지 궁금합니다.
-
미해결스프링 시큐리티 OAuth2
동의 후 인증 절차의 구현이 변경됐습니다.
Scope 동의단계2, 즉 최종사용자의 동의가 이루어졌을 경우이 요청은 POST /oauth2/authorize 로 보내지는데요이 과정에서 내부구현의 차이가 강의 버전과 맞지 않아서 코드를 확인해봤습니다.1. 0.4.0 버전부터이때 작동하는 AuthenticationConverter 는 OAuth2AuthorizationConsentAuthenticationConverter 입니다.여기서 OAuth2AuthorizationConsentAuthenticationToken 가 구성됩니다.2.OAuth2AuthorizationConsentAuthenticationToken 의 처리는 OAuth2AuthorizationConsentAuthenticationProvider 가 맡게 됩니다.여기서 code 생성 절차가 진행되는 차이가 있습니다.