# OAuth2.0
타회사와 협업
판매량 데이터가 집계되도록 추출하여 전송하는 업무를 진행중에있다. 곧 새로운 매장 오픈을 앞두고 새로운 플랫폼을 연동중에 있는데 중화권사이트이다보니 공식문서가 중국어다.^^ 중학교때 배우고 다 까먹었는데 이제와서 심지어 공식문서를 중국어로 봐야한다는 점에 충격먹고 있었는데. 공식문서 파일자체를 번역해주는 디플이라는 사이트를 찾았다. DeepL 상당히 정확도도 높고 말이 이어지게 번역해준다. 덕분에 인증키 발급까지 하루밖에 안걸렸다. 테스트 서버에 데이터를 전송하던중 이슈가 생겼다. 오픈마켓 특성상 상품 바코드를 등록하는 칸이 따로 없는 플랫폼들이 있어 서버에 데이터 전송시 꼭필요한 바코드가 없는것. required 데이터중 한개라도 없으면 반려된다. 하지만 에러코드와 이유까지 출력되는점이 좋다. 에러코드를 보면 어떤점이 문제인지 바로 알 수 있다는고 그부분에 있어서 문의를 남길시 담당자분과 개발팀 한분

프로젝트 ymd - oauth 개발 (google)
google-oauth를 통해 소셜로그인이 가능하도록 프로젝트 로그인을 추가하려고 한다. 프로젝트의 Oauth 전략 현재 프로젝트의 Oauth전략이다. oauth는 accessToken과 refreshToken에 대한 정책과 만료기간이 다르니 해당 공식문서를 꼭 확인해야한다. accessToken관련 정책 공식문서 refreshToken관련 정책 공식문서 여기서 구글에서 refreshToken은 첫번째 승인시에만 반환된다고 한다.
OAuth 2.0에 대해서
OAuth가 나오게 된 배경 내 서비스를 이용해서, Google이나 Facebook같은 곳의 서비스에 접근할 수 있는 수단이 있으면 얼마나 좋을까? ? 괜찮은데? 해보자! 와 같은 과정으로 탄생 위 생각의 단점 가장 단순한 방법은 우리 서비스에서 제3의 서비스에 접근할 수 있도록 제 3 서비스의 아이디와 패스워드를 우리 서비스에서 관리하는 방식임 하지만, 구글과 같은 대형 서비스의 아이디와 패스워드를 우리같은 작은 서비스에서 관리한다는 것은 너무 큰 부담; 또한, 해킹을 생각하면, 기껏 대형 서비스에서 돈 겁나써서 보안 빡세게 해놨는데, 우리 서비스에서 해커가 털어가면 보안에 쓴 돈이 날라가는 것과 다름없음 해결법 그럼 아이디랑 패스워드는 유저랑 제3서비스에서 알아서 로그인 하게 하고, 우리는 제 3서비스에서 로그인 성공하면 권한만 받아오자! 결론 로그인은 유저와 제 3서비스가, 권한은 우리와 제 3서비스가 진행한다. OAu

OAuth
OAuth OAuth란? 인터넷 사용자들이 비밀번호를 제공하지 않고, 자신의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용되는 접근 위임을 위한 개방형 표준 즉, 로그인 및 개인정보 관리 책임을 3rd party 에 위임하여 동작하도록 하는 것 이를 통해 ID/PW 사용 시 보안상 취약한 요소 제거 OAuth2? OAuth2는 기능의 단순화 기능과 규모의 확장성을 지원하기 위해 만들어짐 OAuth1에서는 구현의 복잡함과 HMAC를 통한 암호화의 번거로움, 인증토큰 만료가 되지 않는 등의 문제 https 를 통해 암호화 하여

OAuth2.0 개념의 이해
개념 실제 나는 1명인데 나라는 존재가 수많은 사이트에 가입한 숫자만큼 존재하고 개인정보가 노출되어 있다. 개인정보를 지키기에는 한군데에서 관리를 하는 것이 유리하다 대형 포털 사이트에서 관리(네이버, 카카오, 구글) 예시 우리가 어떤 프로젝트를 통해 A라는 서비스를 만들면 회원가입을 하지 않고 네이버나 카카오에 아이디가 이미 존재하기 때문에 네이버or 카카오 아이디로 로그인을 하게되면 인증 처리에 대한 수고를 없앨 수 있다. ⇒ 회원탈퇴, 회원가입, 회원로그인, 휴먼계정 같은 모든 로직을 우리가 처리하지 않고 네이버나 카카오에 위임하는 것이다. 하지만 단점이 존재한다. 우리가 쇼핑몰을 운영하다고 생각해보자. 네이버에서 내 정보에 대해 한정되어 가지고 있다면 우리가 필요한 정보를 넘겨받을 수 없다. 쇼핑몰 회원 등급 데이터 등을 연동하는 서비스를 만들 필요가 있다. OAuth란? Open Auth

소셜로그인에 관하여(OAuth 2.0)
나는 평소에 '아모레퍼시픽'에서 화장품을 많이 삼 (거의 아모레의 노예라고 할 수 있음) 그도 그럴것이 브랜드가 무지하게 많음. 💡 요즘엔 통합쇼핑몰이 많이 생겼지만, 과거에는 브랜드별로 각각 사이트에 회원가입을 해야 구매할 수 있었음 그러니깐 👧🏻 '설화수에서 엄마꺼 영양크림 사고, 프리메라에서

OAuth로 카카오 소셜 로그인 구현하기 - 1편
VoTogether는 회의를 통해 카카오를 통해서 소셜 로그인을 구현하기로 했다. 원래는 구글 로그인을 하기로 했는데 중간에 카카오로 바뀌게 됐다. 카카오를 선택했던 이유 모바일을 대상으로 했을 경우 카카오는 대부분의 사용자들이 이용한다고 가정 안드로이드 사용자는 구글계정을 필수로 가지고 있지만, IOS사용자는 반드시 계정을 가지고 있지 않을 수 있음 필요한 정보를 구글에 비해 조금 더 정확하게 받을 수 있음 구글에 비해 문서화가 잘되어 있다고 느낌 위와 같은 이유들 때문에 카카오로 소셜로그인을 구현하기로 결정했다. 카카오 소셜 로그인의 흐름 Kakao Developers - REST API 위 링크에 접속하면 카카오에서 제공하는 문서를 통해 흐름 및 사용법을 이해할 수 있다. OAuth를 이용한 로그인을 하기 위해서는 플로

[빌리지 프로젝트] Kakao 로그인 기능을 추가해보자
이전까지 공지 게시글, 관리비 장부를 마무리 했다고 생각했지만 한 가지 빠뜨린 요구사항이 있었습니다. > >같은 건물 코드를 공유하고 있는 관리자와 사용자만이 글과 장부를 조회할 수 있어야 한다는 것을 구현해야 했고, 이 때문에 일부 로직을 수정했습니다. > > 추가적으로 일반 사용자는 카카오 로그인만으로 사용자 인증을 할 수 있다는 기능을 추가 해보았습니다. 📌 일부 로직 수정 요구 사항 같은 건물 코드를 공유하고 있는 관리자와 사용자만 공지 글과 관리비 장부를 조회할 수 있어야한다. 위 요구 사항을 충족 시키기 위해서 핵심은 다음과 같습니다. 관리자는 건물 고유 코드를 가지고 있어야 함. 공지 게시글과 관리비 장부를 조회하는 로직에서는 사용자의 건물 고유 코드를 확인하는 과정이 필요. 이를 코드로 구현하기 위해 먼저 관리자 회원가입 로직을 수정했습니다. 관리자 회원가입 시 요청 받은 건물의 이름을 `genera

OAuth란?
한 번쯤은 아래와 같이 소셜 로그인을 진행해본 적이 있을 것이다. 이 방식의 장점은 서비스를 간편하게 이용할 수 있고, 연동되는 소셜 애플리케이션의 리소스를 가져올 수 있다는 것이다. 예를 들어, 사용자가 네이버로 로그인했고 네이버페이 회원이라면 네이버에서 제공하는 API를 통해 사용자의 배송지 정보를 조회해 보여줄 수도 있다. 이렇게 서비스를 간편하게 이용할 수 있도록 도와주는 소셜
JWT OAuth2.0 구조와 흐름
Bearer 토큰은 인증 및 권한 부여를 위해 사용되는 토큰 형식 중 하나로, HTTP 요청의 헤더에 포함되어 서버에게 인증 정보를 전달합니다. 보통 OAuth 2.0 프로토콜을 따르는 인증 시스템에서 사용되며, 다양한 웹 및 API 서비스에서 보안을 위해 사용됩니다. Bearer 토큰의 구조는 다음과 같습니다: Bearer: 토큰 종류를 나타내는 문자열로, "Bearer"라는 단어가 고정적으로 사용됩니다. ``: 실제로 사용자 또는 클라이언트의 인증 정보를 나타내는 문자열입니다. 이 부분에는 액세스 토큰 또는 토큰 문자열이 들어갑니다. 여기에 예시를 들어 설명하면, 아래와 같은 헤더가 HTTP 요청에 사용될 수 있습니다: 실제로 `` 부분에는 인증 시스템에서 발급한 사용자 또는 클라이언트의 액세스 토큰이 들어갑니다. 이 액세스 토큰은 일반적으로 디코딩해보면 토큰에 대한 정보, 유효 기간 및 기타 메타데이터를

WEB2 - OAuth 2.0 : 6. 엑세스 토큰 발급
https://www.youtube.com/watch?v=BofCK1oWAyc&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=6 위 영상을 보고 정리한 글입니다. WEB2 - OAuth 2.0 : 6. 엑세스 토큰 발급 OAuth의 목적인 "Access Token 발급하기"가 이제 드디어 진행된다. Resource Server는 authorization code 값을 통해서 인증을 했기 때문에, 이제 해당 값을 지워야한다. ( ∵ 그래야 해당 값으로 또 인증을 진행하는 절차가 발생하지 X니까) 위와 같이 authorization code의 값을 Client와 Resource Server가 모두 가지고 있었지만 아래와 같이 지워진다. 대신 Acces

WEB2 - OAuth 2.0 : 5. Resource Server의 승인
https://www.youtube.com/watch?v=O0Rx9SRPzs4&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q-&index=5 위 영상을 보고 작성한 글입니다. WEB2 - OAuth 2.0 : 5. Resource Server의 승인 현재까지는 Resource Owner에 대한 허락을 획득한 상태이다. 따라서, 현재 Resource Server는 "user id 1은 scope b&c에 대한 작업을 Client id 1번에게 허용했다" 라는 정보까지 가지게 되는 것이다. 이제부터는 Resource Owner에 대한 허락을 받았으니, Resource Server가 이를 승인해줘야 한다. 그래서 발급되는 것이 바로 ** ❗ authorizati

WEB2 - OAuth 2.0 : 3. 등록
https://www.youtube.com/watch?v=mm5ks5aWQ4&list=PLuHgQVnccGMA4guyznDlykFJh28R08Q-&index=3 본 영상을 시청 후 작성한 글입니다. WEB2 - OAuth 2.0 : 3. 등록 OAuth를 등록하는 절차 중 첫번째는 바로 등록이다. client가 resource server를 이용하기 위해서는 사전에 승인을 받아야한다. = register register를 등록하는 방법 서비스마다 등록하는 방법이 상이하다. 하지만 공통족으로 받는 3가지는 아래와 같다. Client ID: 우리가 만들고 있는 어플리케이션을 식별하는 식별자 Client Secret: ID에 대한 비밀번호 **∴ ID는 외부에 노출

WEB2 - OAuth 2.0 : 2. 역할
https://www.youtube.com/watch?v=vo0PW3V5zU&list=PLuHgQVnccGMA4guyznDlykFJh28R08Q-&index=2 본 영상을 시청한 뒤 정리한 내용입니다. WEB2 - OAuth 2.0 : 2. 역할 mine: 우리가 만든 서비스 User: 우리의 사용자 Their: User가 회원가입되어 있는 사이트 위 3가지 용어는 앞서 수업소개에서 제시한 주체들이다. 각각을 OAuth에 등장하는 3개의 주체로 용어를 바꾸어 설명하면 순서대로 다음과 같다. Client: resource server에 접속해서 정보를 가져가는 고객 Resource Owner: 자원의 소유자 Resource Server: 우리가 제어하고

WEB2 - OAuth 2.0 : 1. 수업소개
https://www.youtube.com/watch?v=hm2r6LtUbk8&list=PLuHgQVnccGMA4guyznDlykFJh28_R08Q- 본 영상을 시청한 뒤 정리한 내용입니다. WEB2 - OAuth 2.0 : 1. 수업소개 0Auth를 이용하면, 안전하게 우리가 만든 서비스를 그들(ex.카카오)의 서비스와 상호작용할 수 있게 됨 Their에서 user의 id & password 대신에 accessToken이라는 일종의 비밀번호를 발급 OAuth를 통해 받은 accessToken은 그들의 서비스의 모든 기능이 X라, 나의 서비스가 필요로 하는 필수적인 기능만 부분적으로 허용함 ∴ OAuth를 이용해서 AccessToken을 얻어낼 수 있음

[Security] OAuth2.0
OAuth 2.0 > OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. - wikipidea OAuth 2.0(Open Authorization 2.0)은 웹 어플리케이션에서 다른 서비스의 사용자 정보에 대해 접근하고자 할 때 안전하게 사용자의 정보를 열람할 권한을 부여해주는 프로토콜로, 소셜 로그인이나 외부 기능이 필요할 때 사용된다. OAuth 2.0 참여 주체 Resource Owner(리소스 소유자): 서비스가 접근하려는 자원(개인정보 등)을 소유하고있는 주체로, 클라이언트에게 자원의 접근 권한을 허가해준다. 일반적으로 서비스 사용자에 해당한다. Client(클라이언트): 보호된 자원을 사용하려는 주체로, 일반적으로 서비스를 제공하는 어플리케이션 서버에 해당한다. Authoriza

[Spring Boot] OAuth 2.0, JWT를 활용한 애플 로그인 구현 (1-이론편)
1. 서론 소셜 로그인은 다양한 측면에서 장점을 가지고 있어서 많은 사이드 프로젝트, 더 나아가 실무에서도 활용된다. 또 이런 소셜 로그인을 할 때 필수로 따라붙는 OAuth 2.0은 보안성, 편의성, 확장성 등의 장점을 제공하여 많은 애플리케이션에서 선택되고 있다. 이번 Lovebird 프로젝트에서도 로그인 기능으로 많은 리소스를 필요로 하는 자체 로그인이 아닌 소셜 로그인을 활용하기로 했다. 기능 구현 이전에 필자는 Spring Security 스터디를 진행했고, 이번 작업을 통해 OAuth 2.0, OIDC, 더 나아가 JWT에 대해 확실히 이해 해봐야겠다. (이번 포스팅은 OAuth2.0과 OIDC의 비교•분석에 포커스를 두고 있습니다.) 2. OAuth의 등장 OAuth의 탄생에 대해 이해하기 위해서는 Delegated Authorization에 대해 먼저 이해해야 한다. Open API가 대중화 되

OAuth2.0이 무엇인가요?
OAuth2.0이 무엇인가요? OAuth2.0의 개념 OAuth 2.0은 웹 및 모바일 애플리케이션에서 사용자 인증 및 권한 부여를 위한 개방형 표준 프로토콜입니다. OAuth 2.0은 서드파티 애플리케이션이 인증된 사용자의 리소스에 접근할 수 있도록 허용하는 매커니즘을 제공합니다. OAuth2.0의 구성 요소 OAuth 2.0의 주요 구성 요소는 다음과 같습니다: 1. 사용자 (Resource Owner): 리소스에 접근하고자 하는 사용자입니다. 예를 들어, 사용자는 자신의 페이스북 계정에 로그인하여 다른 애플리케이션에서 자신의 프로필 정보에 접근할 수 있도록 허용할 수 있습니다. 2. 클라이언트 애플리케이션 (Client): OAuth 2.0을 사용하여 사용자

[Apis] redirect에 cookie를 담아보아요 - 실험
이 전 포스트에 이어 본격적으로 여러 실험을 해보겠습니다. 0-1. 우선 코드부터 살펴보자! 서두가 길었습니다. 빠르게 코드를 살펴보겠습니다. 우선 저희 서버는 NestJS입니다. Nest에는다양한 요청을 세분화하여 처리하는 Controller 속 route handler들이 있습니다. 이 라우트 핸들러에서 redirect와 쿠키를 입히는 작업을 수행할 수 있습니다. 현재 서버 상태 : 현재 BE와 FE의 도메인이 달라 "cross-origin" 상태 Access-Control-Allow-Origin=\* Access-Control-Allow-Credentials=true 쿠키는 se

[Apis] redirect에 cookie를 담아보아요 - 정리
왜 쿠키를 거기다가 넣었니... 서버에서 kakao 로그인을 개발하는 중 redirect에 쿠키를 전달할 필요가 있었습니다. 이 포스트를 통해 redirect로 클라이언트에게 쿠키를 전달해보는 과정을 정리해보겠습니다. 앞 부분은 redirect와 쿠키를 간단하게 정리하고 있으므로 이미 아시는 내용이라면 다음 post를 보시면 됩니다. 0-1. HTTP Redirect..? HTTP Rediect를 알아보기 위해 <a href="https://developer.mozilla.org/ko/docs/Web/HTTP/Redirec