-
KeyCloak으로 Oauth2.0 인가서버 구현 - 2BackEnd/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 서버로 전달
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
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
http://localhost:8080/realms/oauth2/protocol/openid-connect/token
http://localhost:8080/realms/oauth2/protocol/openid-connect/userinfo
'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