-
Oauth2.0 기본 개념BackEnd/SpringSecurity 2023. 7. 6. 23:25
1. Oauth = Open + Authorization
Oauth2.0 인가 프레임워크는 애플리케이션이 사용자를 대신하여 사용자의 자원에 대한 제한된 정보에 대한 액세스를 얻기 위해 승인 상호 작용을 함으로 애플리케이션이 자체적으로 정보에 대한 액세스 권한을 얻도록한다.
이러한 인가 프레임워크의 작업을 인가 서버를 통해서 받게된다. (Delegated authorization framework)
흐름
1. 어플리케이션이 페이스북 사진 가져오기를 사용자에게 요청한다.
2. 사용자가 페이스북 로그인을 한다.
3. 페이스북이 로그인 성공시 권환과 동의 여부를 사용자에게 준다.
4. 사진가져오기가 가능한 AccessToken을 발행한다
특정 자원에만 접근할 수있도록 제한하고 직접적으로 어플리케이션을 통해서 소셜계정에 로그인을 할 필요가 없다.
2. OAuth 2.0 Roles
OAuth 2.0 메커니즘은 다음 네 가지 종류의 역할을 담당하는 주체들에 의해 이루어지는 권한부여 체계이다.
1. Resource Owner (자원 소유자)
보호된 자원에 대한 접근 권한을 부여할 수 있는 주체, 사용자로서 계정의 일부에 대한 접근 권한을 부여하는 사람
사용자를 대신하여 작동하려는 모든 클라이언트는 먼저 사용자의 허가를 받아야한다.
2. Resource Server (보호 자원서버)
타사 어플리케이션에서 접근하는 사용자의 자원이 포함된 서버를 의미한다.
액세스 토큰을 수락 및 검증할 수 있어야 하며 권한 체계에 따라 요청을 승인할 수 있어야한다.
3. Authorization Server (인가 서버)
클라이언트가 사용자 계정에 대한 동의 및 접근을 요청할 때 상호 작용하는 서버로서 클라이언트의 권한 부여 요청을 승인하거나 거부하는 서버 사용자가 클라이언트에게 권한 부여 요청을 승인한 후 access token을 클라이언트에게 부여하는 역할
4. Client(클라이언트)
사용자를 대신하여 권한을 부여받아 사용자의 리소스에 접근하려는 어플리케이션
사용자를 권한 부여 서버로 안내하거나 사용자의 상호 작용 없이 권한 부여 서버로부터 직접 권한을 얻을 수 있다.
3. Oauth 2.0 Client Type
기밀클라이언트
기밀성을 유지할 수 있는 클라이언트를 의미한다.
일반적으로 사용자가 소스코드에 액세스할 수 없는 서버에서 실행되는 응용 프로그램으로 NET,Java, PHP, Node JS 와 같은 서버측 언어로 작성된다.
이러한 유형의 애플리케이션은 대부분 웹서버에서 실행되기 때문에 일반적으로 웹앱 이라고한다.
사용자가 AuthServer 로그인하면 AuthServer에서 code와함께 redirectUri로 백서버로 code를 바로 전달하여 back에서 인가서버로 코드를 갖고 토큰을 요청하게되어
클라이언트에 토큰정보를 남기지 않게 하는 방식이다.
작용점 : Back 서버에서 작용
공개클라이언트
SPA, JavaScript, Android, iOS 등에서 실행되는 어플리케이션이있다.
Chrome 개발자 콘솔이나 디스 어셈블러와 같은 디버깅 도구를 이용하여 실행코드에서 기밀 정보를 추출할 수 있기 때문에 공개로 간주된다.
서버측이 아닌 리소스 소유자가 사용하는 장치에서 실행되는 모든 클라이언트는 공개 클라이언트로 간주된다.
사용자가 AuthServer에 로그인하고 바로 토큰을 받는 방식이며 서버통신과 무관하다
작용점 : Front 서버에서만 작용
'BackEnd > SpringSecurity' 카테고리의 다른 글
KeyCloak으로 Oauth2.0 인가서버 구현 - 2 (0) 2023.07.08 KeyCloak으로 Oauth2.0 인가서버 구현 - 1 (0) 2023.07.08 CORS 기본 개념 (0) 2023.07.06 SpringSecurity 흐름 (0) 2023.07.03