자격증
코딩 중 Oauth 는 어떤 원리로 작동되는건가요?
안녕하세요~ 프로그래밍 코딩 중 Oauth 는 어떤 원리로 해당 사이트로 로그인 하기가 가능한건지 궁금하네요 ㅎㅎ 잘 알고 계시는 전문 개발자님 답변 부탁드리겠습니다!
감사합니다 ㅎㅎ
2개의 답변이 있어요!
안녕하세요. 조원우 정보처리기사입니다.
오소스는 인터넷 사용자가 비밀번호없이 표준을 하용하여, 인증방식이 동일한 다른 웹이나 어플리케이션에 접근하는 건데 클라이언트에게 authorization code로 인증하고 resource server에 직접 접근을 허용하는 방식입니다
안녕하세요. 이중철 AX 정보처리기사입니다.
네, OAuth는 쉽게 말해 내 아이디와 비밀번호를 웹사이트에 직접 넘기지 않고도, 다른 서비스의 로그인 권한을 빌려서 대신 로그인하게 해주는 방식입니다. 그 핵심은 신원 확인을 직접 하는 게 아니라, 권한을 안전하게 위임받는 구조라는 점이랍니다.
1. 한눈에 보는 흐름을 정리하자면..
1) 사용자가 내 서비스에서 구글, 카카오, 네이버 로그인 버튼을 누릅니다.
2) 내 서비스가 해당 회사의 로그인 화면으로 사용자를 보냅니다.
3) 사용자가 그 회사에서 직접 로그인하고, 내 서비스가 무엇을 허용받을지 동의합니다.
4) 인증 서버가 내 서비스에 짧은 코드 하나를 돌려줍니다.
5) 내 서비스는 그 코드를 다시 서버끼리 교환해서 액세스 토큰을 받습니다.
6) 그 토큰으로 사용자 정보나 허용된 기능을 요청합니다.
즉, 브라우저에서 바로 비밀번호를 주고받는 게 아니라, 로그인 성공을 증명하는 짧은 표식인 코드와 토큰을 교환하는 방식인 것이지요.
2. 왜 이런 구조를 쓰나요?
이 방식의 가장 큰 장점은 보안입니다. 내 서비스가 사용자의 실제 비밀번호를 저장하지 않아도 되기 때문에, 비밀번호 유출 위험이 크게 줄어듭니다. 또 사용자는 한 번 로그인한 외부 계정을 이용해 여러 서비스에 편하게 들어갈 수 있고, 서비스 제공자는 필요한 권한만 제한적으로 받을 수 있습니다.
3. OAuth와 로그인은 같은 말인가요?
엄밀히 말하면 OAuth는 로그인 그 자체보다 권한 부여에 더 가깝습니다. 다만 실제 서비스에서는 사용자를 식별하는 정보까지 함께 받아서 로그인처럼 쓰기 때문에, 우리가 보통 소셜 로그인이라고 부릅니다. 그래서 OAuth를 이해할 때는 로그인 화면을 제공하는 기술이라기보다, 외부 계정의 인증 결과를 안전하게 넘겨받는 표준이라고 보면 됩니다.
4. 왜 코드와 토큰을 나눠 받나요?
코드를 바로 사용자 정보로 바꾸면 중간에 가로채기 쉬워집니다. 그래서 먼저 짧은 코드만 브라우저를 통해 받고, 그다음 서버끼리만 통신해서 토큰을 받아오는 구조를 씁니다. 이 과정 덕분에 실제 중요한 자격 증명은 노출을 줄이고, 토큰도 만료 시간과 범위를 두어 더 안전하게 다룰 수 있는 것이지요.
5. 실무적으로 기억할 핵심은요?
OAuth에서 중요한 건 세 가지입니다.
첫째, 사용자는 외부 서비스에서 직접 로그인합니다.
둘째, 내 서비스는 코드와 토큰만 받아옵니다.
셋째, 비밀번호를 직접 받지 않는다는 점이 보안의 핵심입니다.
정리하자면,
OAuth는 사용자의 비밀번호를 직접 받지 않고 외부 인증 서버가 발급한 코드와 토큰을 통해 로그인 권한을 안전하게 넘겨받는 방식입니다. 그래서 소셜 로그인처럼 보이지만 본질은 인증 결과를 안전하게 위임받는 표준입니다. 개발할 때는 사용자 정보보다 먼저 코드, 토큰, 리디렉션 주소, 클라이언트 정보가 어떻게 오가는지 이해하면 전체 구조가 훨씬 쉽게 보일 수 있답니다.
※ 질문자님을 포함하여 소중한 분들의 건강, 재산과 안전을 지키고, 혹시나 발생할 수 있을 다양한 문제 상황에 놓이지 않기 위해서라도 저를 포함하여 다양한 토픽에서 활동하는 모든 전문가분들의 아하 지식커뮤니티에서의 답변은 예외 없이 참고 용도로만 유용하게 활용하시기 바랍니다.😉