OAuth 2.0 개념 및 권한 수여 절차 정리

OAuth 2 의 개념
OAuth 는 권한 수여 에 관 한 개방 네트워크 표준 으로 OAuth 2 는 2.0 버 전이 다.
그것 은 안전 을 확보 하기 위해 네 가지 조작 절차(권한 수여 모델)를 규정 했다.
응용 장면 은 제3자 응용의 접속,마이크로 서비스 감 권 상호 신뢰,제3자 플랫폼 접속,제1 자 비밀번호 로그 인 등 이 있다.
자바 왕국 중 스프링 시 큐 리 티 도 OAuth 2 기준 을 구현 했다.
OAuth 2 인증 모드
OAuth 2 는 자원 의 접근 을 제어 하기 위해 네 가지 권한 수여 모드(권한 수여 절차)를 정의 했다.
  • 권한 수여 코드 모드(Authorization Code Grant)
  • 암시 적 권한 수여 모드(Implicit Grant)
  • 사용자 이름 암호 모드(리 소스 소유자 암호 자격 증명 그 랜 트)
  • 클 라 이언 트 모드(Client Credentials Grant)
  • 어떤 모델(절차)이 든 세 가지 필요 한 역할 을 가진다. , , 도 있 고 ( )도 있다.다음은 권한 수여 절 차 를 간단하게 소개 한다.
    인증 코드 모드(인증 코드 부여)
    권한 수여 코드 모드 는 OAuth 2 가 현재 가장 안전 하고 복잡 한 권한 수여 절차 입 니 다.먼저 그림 을 한 장 놓 고 설명 하 겠 습 니 다.

    위의 그림 과 같이 우 리 는 이 절 차 를 크게 세 부분 으로 나 눌 수 있다.
  • Client Side:사용자+클 라 이언 트 와 권한 수여 서버 의 상호작용
  • Server Side:클 라 이언 트 와 권한 수여 서버 간 의 상호작용
  • Check Access Token:클 라 이언 트 와 자원 서버 간 의 상호작용+자원 서버 와 권한 수여 서버 간 의 상호작용
  • 전체적으로 보면 권한 수여 코드 모델 권한 수여 절 차 를 한 마디 로 요약 할 수 있다.
    클 라 이언 트 는 권한 수여 코드 를 바 꾸 고 클 라 이언 트 는 권한 수여 코드 를 사용 하여 token 을 바 꾸 며 클 라 이언 트 는 token 을 사용 하여 자원 에 접근 합 니 다.
    다음은 이 세 부분 에 대해 설명 을 하 겠 습 니 다.
    전제 조건:
  • 제3자 클 라 이언 트 는 자원 소유자(모든 측 에 권한 을 부여 하 는 동시에)와 클 라 이언 트 id(clientid),클 라 이언 트 키(clientsecret)
  • 글 에는 scope,state 등 구체 적 인 프레임 에 의존 하 는 내용 을 잠시 쓰 지 않 았 으 며,여기 에는 Spring Security OAuth 2 의 실현
  • 을 참고 할 수 있다.
    Client Side
    클 라 이언 트 인증 코드 교환
    이 클 라 이언 트 는 브 라 우 저 일 수 있 습 니 다.
  • 클 라 이언 트 는client_id + client_secret + (grant_type) + (redirect_uri)url 접근 권한 수여 서버
  • 를 조합 합 니 다.
  • 권한 수여 서버 가 로그 인 인터페이스 로 돌아 가 요구 (이때 사용자 가 제출 한 비밀번호 등 을 권한 수여 서버 에 직접 보 내 고 검증)
  • 권한 수여 서버 가 권한 수여 승인 인터페이스 로 돌아 가 고 완성
  • 권한 수여 서버
  • Server Side
    클 라 이언 트 가 인증 코드 를 사용 하여 token 으로 바 꿉 니 다.
  • 클 라 이언 트 가 권한 수여 코드 를 받 고 권한 수여 코드+client 를 사용 합 니 다.id + client_secret 액세스 권한 부여 서버 에서 token 터미널 발급
  • 권한 수여 서버 검사 통과,token 을 클 라 이언 트 에 게 반환
  • 클 라 이언 트 가 token 을 메모리 에 저장(쿠키 추천)
  • Check Access Token
    클 라 이언 트 가 token 접근 자원 을 사용 합 니 다.
  • 클 라 이언 트 가 요청 헤더 에 token 을 추가 하고 자원 서버 에 접근
  • 자원 서버 가 요청 을 받 았 습 니 다.먼저 token 을 검사 하 는 방법(원 격 호출 권한 수여 서버 검사 점 일 수도 있 고 권한 수여 메모리 수 동 교정 에 직접 접근 할 수도 있 습 니 다)
  • 자원 서버 검사 성공,자원 반환
  • scope(token 요청 도 메 인),state(CSRF 에 요청 되 지 않도록),redirect 와 같은 인 자 를 줄 였 습 니 다.uri(권한 수여 서버 리 셋 uri)개념 을 이해 하고 실현 할 때 요구 합 니 다.
    암시 적 권한 부여 모드(Implicit Grant)

    암시 적 권한 수여 모드 는 크게 두 부분 으로 나 눌 수 있 습 니 다.
  • Client Side:사용자+클 라 이언 트 와 권한 수여 서버 의 상호작용
  • Check Access Token:클 라 이언 트 와 자원 서버 간 의 상호작용+자원 서버 와 권한 수여 서버 간 의 상호작용
  • 한 마디 로 암시 적 권한 수여 모델 권한 수여 절 차 를 요약 하 다.
    클 라 이언 트 는 사용자 에 게 로그 인 권한 수여 서버 를 token 으로 바 꾸 게 하고 클 라 이언 트 는 token 으로 자원 에 접근 하도록 합 니 다.
    Client Side
    클 라 이언 트 가 사용자 에 게 로그 인 권한 수여 서버 를 token 으로 바 꾸 게 합 니 다.
  • 클 라 이언 트(브 라 우 저 또는 단일 페이지 응용)는 url 접근 권한 수여 서버client_id + (grant_type)+ (redirect_uri)
  • 를 조합 합 니 다.
  • 권한 수여 서버 전환 사용자 로그 인 인터페이스,사용자 로그 인
  • 사용자 권한 부여
  • 권한 수여 서버 token 을 클 라 이언 트 에 게 되 돌려 줍 니 다
  • Check Access Token
    클 라 이언 트 가 token 접근 자원 을 사용 합 니 다.
  • 클 라 이언 트 가 요청 헤더 에 token 을 추가 하고 자원 서버 에 접근
  • 자원 서버 가 요청 을 받 았 습 니 다.먼저 token 을 검사 하 는 방법(원 격 호출 권한 수여 서버 검사 점 일 수도 있 고 권한 수여 메모리 수 동 교정 에 직접 접근 할 수도 있 습 니 다)
  • 자원 서버 검사 성공,자원 반환
  • 암호 모드(리 소스 소유자 암호 자격 증명 그 랜 트)

    암호 모드 도 크게 두 부분 으로 나 뉜 다.
  • 클 라 이언 트 사 이 드:사용자 와 클 라 이언 트 의 상호작용,클 라 이언 트 와 권한 수여 서버 의 상호작용
  • Check Access Token:클 라 이언 트 와 자원 서버 간 의 상호작용+자원 서버 와 권한 수여 서버 간 의 상호작용
  • 한 마디 로 사용자 이름 암호 모드 프로 세 스 요약:
    사용자 가 클 라 이언 트 에 계 정 비밀 번 호 를 제출 하여 token 으로 바 꾸 고 클 라 이언 트 는 token 으로 자원 에 접근 합 니 다.
    Client Side
    사용자 가 클 라 이언 트 에 계 정 비밀 번 호 를 제출 하여 token 으로 바 꿉 니 다.
  • 클 라 이언 트 가 사용자 에 게 로그 인 을 요구 합 니 다
  • 사용자 가 비밀 번 호 를 입력 하면 클 라 이언 트 가 폼 에 클 라 이언 트 를 추가 하 는 clientid + client_secret 권한 수여 서버 에 token 터미널 발급
  • 권한 수여 서버 사용자 이름,사용자 비밀번호,clientid、client_secret,모두 token 을 통 해 클 라 이언 트 로 돌아 갑 니 다
  • 클 라 이언 트 저장 token
  • Check Access Token
    클 라 이언 트 가 token 접근 자원 을 사용 합 니 다.
  • 클 라 이언 트 가 요청 헤더 에 token 을 추가 하고 자원 서버 에 접근
  • 자원 서버 가 요청 을 받 았 습 니 다.먼저 token 을 검사 하 는 방법(원 격 호출 권한 수여 서버 검사 점 일 수도 있 고 권한 수여 메모리 수 동 교정 에 직접 접근 할 수도 있 습 니 다)
  • 자원 서버 검사 성공,자원 반환
  • 클 라 이언 트 모드(클 라 이언 트 자격 증명 그 랜 트)

    클 라 이언 트 모드 는 크게 두 부분 으로 나 뉜 다.
  • 서버 사 이 드:클 라 이언 트 와 권한 수여 서버 간 의 상호작용
  • Check Access Token:클 라 이언 트 와 자원 서버,자원 서버 와 권한 수여 서버 간 의 상호작용
  • 한 마디 로 클 라 이언 트 모델 권한 수여 절 차 를 요약 한다.
    클 라 이언 트 는 자신의 표 지 를 사용 하여 token 으로 바 꾸 고 클 라 이언 트 는 token 으로 자원 을 방문 합 니 다.
    Server Side
    클 라 이언 트 는 자신의 표 지 를 token 으로 바 꿉 니 다.
  • 클 라 이언 트 사용 clientid + client_secret+권한 수여 모드 표지 가 권한 수여 서버 에 접근 하 는
  • 권한 수여 서버 검증 을 통 해 token 을 클 라 이언 트 에 게 되 돌려 줍 니 다
  • 클 라 이언 트 저장 token
  • Check Access Token
    클 라 이언 트 가 token 접근 자원 을 사용 합 니 다.
  • 클 라 이언 트 가 요청 헤더 에 token 을 추가 하고 자원 서버 에 접근
  • 자원 서버 가 요청 을 받 았 습 니 다.먼저 token 을 검사 하 는 방법(원 격 호출 권한 수여 서버 검사 점 일 수도 있 고 권한 수여 메모리 수 동 교정 에 직접 접근 할 수도 있 습 니 다)
  • 자원 서버 검사 성공,자원 반환
  • OAuth 2 인증 모드 선택
    권한 수여 장면 의 다양성 을 고려 하여 다음 과 같은 두 가지 선택 방식 을 참고 할 수 있다.
    권한 수여 에 필요 한 다단 계 상황

    클 라 이언 트 종류 와 소유자

    후기
    OAuth 2 를 공부 한 지 오래 되 었 습 니 다.배 운 지식 을 공유 하면 줄 에 오류 가 있 을 수 있 습 니 다.발견 하면 댓 글 을 남 겨 주세요.협조 해 주 셔 서 감사합니다.
    참고 문장 과 자료:
    https://time.geekbang.org/course/intro/84저자:양 파
    https://blog.csdn.net/sinat_25295611/article/details/84980987저자:Kayfen
    How OAuth 2.0 works and how to choose the right flow저자:Lorenzo Spyna
    원문의 출처https://www.cnblogs.com/hellxz/p/oauth2_process.html
    OAuth 2.0 개념 및 권한 수여 절차 정리 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 OAuth 2.0 권한 수여 절차 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!

    좋은 웹페이지 즐겨찾기