Home Spring Security, OAuth2(1)
Post
Cancel

Spring Security, OAuth2(1)

  • HTTP Basic인증 방식의 문제
    • 네트워크를 통해 자격 증명이 자주 공유된다.
    • 클라이언트가 자격 증명을 저장해 자격 증명을 서버로 보낼 수 있게됨.
    • 여러 애플리케이션을 구성해야 할 경우 각 애플리케이션 별로 자격증명을 관리 해야함.


OAuth2

  • 기존 인증 방식의 문제를 해결하기 위한 권한 부여 프레임워크,권한 부여 프로토콜

  • OAuth2의 구성요소
    • 리소스 서버 : 사용자가 소유한 리소스를 호스팅하는 서버.
      • 리소스는 사용자의 데이터나 사용자가 수행할 작업등이 될 수 있음.
    • 사용자(리소스 소유자) : 리소스 서버가 노출하는 리소스를 소유하는 개인. 사용자 이름과 암호로 신원 인증.
    • 클라이언트 : 사용자를 대신해 접근하는 어플리케이션. 클라이언트는 클라이언트 ID와 클라이언트 secret을 이용해 신원을 증명.
      • 여기서 말하는 자격 증명은 사용자 자격증명과 다름, 클라이언트의 자격을 증명하는 자체 증명이 필요
    • 권한 부여 서버 : 클라이언트가 리소스 서버가 노출하는 사용자의 리소스에 접근할 권한을 부여하는 어플리케이션
      클라이언트의 접근 권한이 있다고 판단되면 토큰을 발급, 클라이언트는 해당 토큰을 이용해 리소스 서버에 증명
      최종적으로 클라이언트가 유효한 토큰이 있으면 해당 리소스에 접근 허용
  • OAuth2를 사용한다는건 토큰을 이용하겠다는것. 해당 토큰을 GRANT라고 한다.
    • GRANT 유형
      • 승인 코드
      • 암호
      • 갱신 토큰
      • 클라이언트 자격 증명


승인 코드 GRANT 구현

  • 가장 보편적인 유형
    • 인증 요청을한다.엑세스 토큰을 얻는다.보호된 리소스를 호출한다.
  • 1단계
    • 클라이언트는 사용자가 인증해야 하는 권한부여 서버의 엔드포인트로 사용자를 리디렉션.
      • 세부정보를 포함된요청 쿼리로 엔드 포인트 호출
        • response_type : 클라이언트가 코드를 기대한다는 것을 권한 부여 서버에 알리는 code값 필요
        • client_id : 애플리케이션 자체를 식별하는 클라이언트 id
        • redirect_uri : 인증 성공 후 사용자를 리디렉션 할 위치를 담는다.
        • scope : 허가된 권한
        • state : csrf보호를 위한 토큰 정의.
    • 보호된 리소스에 접근해야 함으로 권한부여 서버의 로그인 양식 페이지를 연다.
    • 인증에 성공하면 리디렉션 uri로 클라이언트 호출 후 코드와 상태 값을 제공.
    • 코드를 이용해 2단계로 엑세스 토큰을 얻는다.
  • 2단계
    • 클라이언트는 토큰을 얻기 위해 코드를 이용해 권한 부여 서버를 호출한다.
      • 권한 부여 서버를 호출할때 필요한 세부 정보
        • code : 1단계에서 받은 승인코드, 인증받은 사용자임을 증명
        • client_id 및 client_secret : 클라이언트 자격 증명
        • redirect_rui : 리디렉션될 uri
        • grant_type : 인증 흐름 식별authorization_code값을 가진다.
      • 클라이언트가 리소스 서버에서 노출하는 리소스를 호출하는데 필요한 access_token값을 반환 받음.
  • 3단계
    • 2단계에서 발급받은 토큰으로 보호된 리소스 호출
This post is licensed under CC BY 4.0 by the author.