OAuth2 로그인 구현 - Authorization Code 요청하기

존스노우·2023년 8월 25일
0

springSecurity

목록 보기
28/75

  • 권한부여 방식

  • 코드 요청방식은 인가서버와의 1단계 임.

OAuth2AuthorizationRequestRedirectFilter

  • 이 필터가 권한 코드 부여 흐름 시작.

  • authorizationGrantType - > 코드를 발급받기 위한 엔드 포인트.

  • OAuth2AuthorizationRequestRepository

  • 클라이언트가 코드 요청 -> 코드 발급

  • 클라이언트가 인가서버에 요청할때 밑에 그림정보를 전달

  • state 전달 -> 인가서버는 클라이언트정보 확인하고 -> state정보도 리다이렉트에 전달함.

  • 클라이언트도 가지고 있는 state값을 리다이렉트 값과 검증함 ,

  • 이 떄 Request를 어딘가저장하고 인가서버가 보낸 리다이렉트 정보를 비교해야되니

  • 그걸 보관하는 장소이다.

  • 일치했을때와 일치하지 않을때!

일치했을때

  • /{action} 여기부분을 /login으로 치환

  • request객체를 완성하고 repository(세션)에 저장함.

  • 여기 까지가 1단계

    매치가 안됫을 경우

  • 임의의 어떤 자원을 접근 할 경우

  • 맨앞에 필터 동작 X 바로 매치 -> N

  • 인가권한 필터? 현재 방식이 코드방식인지 , 스테이트 값이 있는지? 정상적으로 있으면 권한코드 부여 방식 진행

  • 인증이 안된 상태기 때문에 예외 로 빠지게 되고.

  • 인증 코드 방식이면

  • LgoinUrlAuthenticationEntryPoint 로 빠짐 그리고 밑에 Url로 빠짐

  • 결론적으로 맨처음 주소가아닌 임의의 다른 주소로 요청할경우
  • 예외를 거치고 다시 정상 Url로 옴겨서 인증 화면까지감

코드

  • 1단계 임시코드를 발급받는 단계 시작

  • 정상 루트 부분에 Url

  • 클릭

  • 디폴트로 생성된 리졸버 이 클래스를 통해서 리졸버되는대 반환객체는 오어스인가리퀘스트
  • 이 객체를 통해서 인가서버 통신시 사용됨

  • 아이디 가져오기. 클라이언트 레지스트레이션 얻기위해

  • 현재 사용자 요청정보가 리퀘스트 매쳐와 일치 되는가?

  • 최종적으로 하는 역활은 레지스트레이션 id를 얻는것

  • 하나의 고정된 url로 치환하기위해 login 얻고

  • 이런 정보를 활용해서 리퀘스트 만들기.

  • 어떤 권한 방식인지?

  • 빌더클래스 생성

  • 리스폰스 타입이 코드

  • 레지스트레이션 아이디 저장

  • 스코프 값 검사

  • OpenId 포함되 있는지 검사도 하고

  • 인가서버에서 클라이언트에 전달할 리다이렉트Url 만든다
  • 인가서버에서 임시코드 발급할때 마지막그림 Url 로 온다
  • 마지막 최종 빌드하면

  • 최종 결과

  • 완성되고 인가서버로 리다이렉트 보내버림

  • 그리고 리퀘스트 를 저장함
  • 세션에 저장하고 로드하고

  • 우리가 보낸 값들

  • 승인을 하면 ?

  • 매칭이 되는지 본다 리퀘스트 정보를 보면서
  • 권한부여 진행 계쏙
  • 토큰발급은 다음시간에

  • Param 인가서버로 받은 응답들

profile
어제의 나보다 한걸음 더

4개의 댓글

comment-user-thumbnail
2024년 5월 8일

안녕하세요. authorizaion grant 방식으로 oauth인증서버 구현중에 있는데, 작성해주신 글이 많이 도움이 되었습니다. 글에 올리신 이미지보니까 강의 캡쳐하신 것 같은데 혹시 어떤 강의인지 알 수 있을까요?

1개의 답글