ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • KeyCloak으로 Oauth2.0 인가서버 구현 - 2
    BackEnd/SpringSecurity 2023. 7. 8. 13:52

    1. 인가서버 유형

    1. Authorization Code Grant Type (기밀 클라이언트)

    타입 : 권한 코드 부여 타입

    특징 : 서버 사이드 어플리케이션(웹 어플리케이션), 보안에 가장 안전한 유형

     

    2. Implicit Grant Type (공개 클라이언트)

    타입 : 암시적 부여 타입

    특징 : 공개 클라이언트 어플리케이션 (SPA 기반 자바스크립 앱, 모바일 앱) 보안에 취약

     

    3. Resource Owner Password Credentials Grant Type

    타입 : 리소스 사용자 비밀번호 자격증명 부여 타입

    특징 : 서버 어클리케이션, 보안에 취약

     

    4. Client Credentials Grant Type

    타입 : 서버간의 통신, UI or 화면이 없는 어플리케이션 (사용자와 상관없음)  클라이언트 자격 증명 권한 부여 타입

     

    5. PKCE-enhanced Authorization Code Grant Type

    타입 : PKCE 권한 코드 부여 타입

    특징 : 서버 사이드 어플리케이션, 공개클라이언트 어플리케이션 (특정 해시로 암호화된 값을 1차 코드요청에 넣고 2차로 서버에서 토큰 발급 요청시 해시되기전 값과 해시에 사용한 알고리즘을 추가적으로 필드값으로 보내 좀더 보안을 강화한 유형)

     

    2. 매개 변수 용어

    client_id : 인가서버에 등록된 클라이언트에 대해 생성된 고유 키

    Client_secret 인가서버에 등록된 특정 클라이언트의 client_id에 대해 생성된 비밀값

    response_type : 애플리케이션이 권한 부여 코드 흐름을 시작하고 있음을 인증 서버에 알려준다. Code, token

    grant_type : 권한 부여 타입 지정

    redirect_uri : 사용자가 응용프로그램을 성공적으로 승인하면 권한 부여 서버가 사용자를 다시 응용 프로그램으로 리디렉션한다.

    Scope : 어플리케이션이 접근하는 범위

    State : csrf 공격 방지, 응용프로그램의 임의 문자열로 요청하여 사용자가 앱을 승인한 후 서버로부터 동일한 값이 반환 되는지 확인

    3. Authorization Code Grant Type 권한 부여 코드 승인 방식

     

    기밀 클라이언트 흐름

     

    3.1 사용자가 authorizaion code 요청후 code 서버로 전달

     

    사용자를 통해 code 요청 과정

     

    http://localhost:8080/realms/oauth2/protocol/openid-connect/auth?response_type=code&client_id=oauth2-client-app&scope=profile email&redirect_uri=http://localhost:8081

     

    client_id와 redirect_uri 정보

     

    실제 브라우저에서 uri를 복붙 -> 이전편에서 생성한 유저 정보로 로그인

     

    scope 내용에 동의여부

     

    3.2 코드를 전달 받은 서버에서 accessToken 요청

    http://localhost:8080/realms/oauth2/protocol/openid-connect/auth?response_type=code&client_id=oauth2-client-app&scope=profile email&redirect_uri=http://localhost:8081

     

    client_secret 정보

     

    로그인및 동의후 리다이렉트된 uri에서 code value 값을 가져온다.

     

    전달 받은 code를 통해서 인가서버에 토큰 요청(중간에 코드가 탈취당해도 client_secret을 모르기때문에 authToken을 받을수없음)

     

    http://localhost:8080/realms/oauth2/protocol/openid-connect/token

     

    전달 받은 토큰으로 유저의 정보를 요청한다.

     

    http://localhost:8080/realms/oauth2/protocol/openid-connect/userinfo

     

    출처 : https://www.inflearn.com/course/%EC%A0%95%EC%88%98%EC%9B%90-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0

     

    스프링 시큐리티 OAuth2 - Spring Boot 기반으로 개발하는 Spring Security OAuth2 - 인프런 | 강의

    스프링 시큐리티 OAuth2의 기본 개념부터 API 사용법과 내부 아키텍처를 학습합니다. 아울러 OAuth2 Client, OAuth2 Resource Server, Authorization Server를 통합하여 연동하는 방법을 살펴보고 자체 인가 서버를

    www.inflearn.com

     

    'BackEnd > SpringSecurity' 카테고리의 다른 글

    SpringSecurity OAuth2.0 - 2  (0) 2023.07.09
    SpringSecurity OAuth2.0 - 1  (0) 2023.07.08
    KeyCloak으로 Oauth2.0 인가서버 구현 - 1  (0) 2023.07.08
    Oauth2.0 기본 개념  (0) 2023.07.06

    댓글

Designed by Tistory.