클라이언트 앱 시작하기 - application.yml/ OAuth2ClientProperties

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

springSecurity

목록 보기
22/75
post-thumbnail

  • 클라이언트와 인가서버 두 사이에 상호작용을통해 권한 부여 흐름 진행

  • yml에 설정된 값들을 ClientRegistartion에 필드에 저장되고

  • 이정보를 참조해서 권한 부여 요청을 위한 매개변수를 이용해 인가서버 통신

설정 해주기.

  • OAuth2ClientProperties 속성에서 레지스트레이션이 Map으로 정의되잇는대

  • keycloak을 키값으로 정의하고있다 (여기설정에선)

  • 클라이언트 자격증명을 위한 방법

  • 클라이언트가 인가서버에 토큰을 요청할때 인가서버에서 자격증명할때

  • 클라이언트에서 인가서버로 전송하는 방식이 Basic / post /여러가지방식중 하나

  • 포스트 방식으로 클라이언트 아이디와 시크릿을 포스트 방식으로 보내겠다 설정 되 있음

  • 공급자는 엔드포인트들 정보

  • 맨아래는 사용자의 명을가져오는 키값을 정의해주면 된다.

  • redirectUri 인가서버는 임시코드를 클라에게 전달할때 클라 주소를 알아야 되는데 이게 바로 그정보다

  • 콜백 개념?

Provider (각번호는 설정을 순서대로 설명)

  1. 코드요청시 보낼 엔드포인트

  2. baseUri 인가 서버의 여러가지 메타데이터를 가져오기도함.

  3. 클라이언트가 리소스 서버에 데이터 요청할때 (서명에대한 프라이빗키에 대응하는 )퍼블릭키 정보를 받음

  4. 토큰 요청

  5. 사용자의 정보를 가져오는 것
    결국은 클라이언트에서 사용자대신 권한부여를 한거기 때문에
    사용자 정보를 가져온다? 사용자로 하여금 인증하겠다.
    사용자는 서비스를 이용중이고 클라이언트는 사용자의 정보를 가져와 인증처리를
    해 줘야되기때문에 유저정보가 필요한다.

  • 이런 정보들이 OAuth2Properties에 각필드에 바인딩 되고

  • 바인딩된 값을 사용해서 Client Registration에 속성 필드에 배정이됨

  • 실제 작성한 설정 코드
  • 설정을 주석처리하면? 폼로그인 인증방식으로 실행됨(초기 디폴트)
  • 클라이언트 모드를 통한 인증방식으로 진행해야된다 ( 주석을 풀면)

  • 기존 디폴트방식이랑 다르다 시작 로그들이.

  • 인가서버에 리다이렉트 url 추가해주고

  • localhost:8081로 가면 이렇게 뜬다.
  • 인가서버는 사용자승인이필요

  • 동의 한다 하면?

  • 궁극적으로 인가서버가 클라이언트에 코드 발급

  • 다시 클라이언트가 인가서버에게 코드에게 가져감 그 코드는 엑세스토큰 얻기 위한 코드

  • 코드 검증 끝나면? 코드 일치되면 ? 다시 인가서버는 토큰을 서명하고 클라이언트에게 발행

  • 리소스 서버는 토큰을 가지고 다시 인가서버에 토큰을 보내서 확인을 받음.

여기에 바인딩된다.

디버깅

  • OAuth2ClientRegistrationRepositoryConfiguration.java
  • 통신할때 마다 이 정보를 활용한다

  • 인가서버와 통신하기위해 최종 전달되는 값들
profile
어제의 나보다 한걸음 더

0개의 댓글