WEB 158

OAuth 2.0 Resource Server API - jwt()

JWT API 설정 및 검증 프로세스 이해 검증순서 1. client가 Authorization Barer token-value 를 헤더에 담아서 요청한다. 2. 리소스 서버는 요청한 토큰이 Bearer 토큰 사양에 부합하는지 검사한다. 3. 인가서버에서 JWT 토큰에 서명한 개인키와 매칭하는 공개키를 jwt-set-url endpoint 요청으로 가져와서 1번째 검증을 진행한다. 4. jwt에 있는 exp, nbf, iss 클레임의 정보가 기준에 부합하는지 2번째 검증을 진행한다. 5. 검증에 서공하면 jwt 객체를 생성하고 claims 정보에 있는 scope를 추출해서 시큐리티의 권한에 매핑한다. (SCOPE_profile , SCOPE_email) 6. Authentication 객체를 생성하고 J..

WEB/Security 2022.12.22

OAuth 2.0 Resource Server

OAuth2.0 인가 프레임워크의 역할중 클라이언트 및 인가서버와의 통신을 담당하는 리소스 서버의 기능을 필터 기반으로 구현한 모듈 설정만으로 클라이언트 리소스 접근 제한, 토큰 검증을 위한 인가서버와의 통신 등의 구현이 가능하다 앱의 권한관리를 별도 인가서버에 위임하는 경우에 사용할 수 있으며 , 리소스 서버는 요청을 인가할 때 이 인가 서버에 물어볼 수 있다. OAuth2ResourceServer 클라이언트의 접근을 제한 하는 인가 정책을 설정한다. 인가서버에서 발급한 Access Token(JWT, Opaque)의 유효성을 검증하고 접근 범위에 따라 적절한 자원을 전달하도록 설정한다. Resource Server 시작하기 - OAuth2ResourceServerProperties spring: se..

WEB/Security 2022.12.19

OAuth 2.0 Client - oauth2Client()

OAuth2ClientConfigurer 초기화 이해 실제로 OAuth2ClientConfigure에서 하는일은 없고 AuthorizatinoCodeGrantConfigure의 init ,configure메소드를 호출할 뿐이다. 이중 위에서 3개는 OAuth2Client oauth2Login api 를 설명할때 authserver로 부터 authorization code를 얻어올 떄 쓰여진다. 동일한 것을 만드는것이다. OAuth2AuthorizationCodeGrantFilter 가 access token을 받아오는 필터인데 이것이 oauth2Login 과 다른 부분이다. 인증처리까지는 하지 않는다. https://tonylim.tistory.com/395 OAuth 2.0 Client - oauth2..

WEB/Security 2022.12.14

OAuth2.0 Client - oauth2Login() + API 커스텀 구현

Authorization BaseUrl & Redirection BaseUrl http oauth2Login 메소드에 인자 값으로 들어가는것은 OAuth2Configurer 이고 내부적으로 authorization , access token , userinfo , redirecturl 에 관한 endpoint를 설정할 수 있는 Configurer들도 포함되어 있다. 각각 endpoint에 알맞은 Filter의 RequestMatcher의 url 을 변경하게 되어있다. 예를들면 authorization endpoint를 변경했을시에는 client단에서 요청도 해당 endpoint로 날려야한다. application .yaml에서는 그대로 auth-sever 의authorization endpoint를 유지..

WEB/Security 2022.11.23

OAuth 2.0 Client - oauth2Login()

OAuth2LoginConfigurer 초기화 이해 fundamental 에서 나온데로 Configurer는 init , configure를 호출하면서 필터를 만들게 된다. /login/oauth2/code/{register-id} 로 요청이 들어오면 OAuth2LoginAuthenticatioFilter가 처리하게 된다. access token 교환시 거치는 필터이다. Filter는 AuthenticationProvider에게 위임할 뿐이고 provider가 실질적인 auth server와 통신한다. OidcACAProvider는 id token으로 인증처리가능하게 해주는 방법을 제공해준다. authorization_code를 받아오는 filter이다. /oauth2/authorization 으로 요청..

WEB/Security 2022.11.22

OAuth 2.0 Client Fundamentals

클라이언트 권한 부여 요청 시퀀스 1. client가 auth server로 권한 부여 요청을 하거나 token요청을 할 경우에 client 정보 및 endpoint 정보를 참조해서 전달. 2. application.yml 설정파일에 client 설정 auth server endpoint 설정을 한다. 3. 초기화가 진행되면 application.yml 에 있는 client및 endpoint 정보가 OAuth2ClientProperties의 각 속성에 바인딩 된다. 4. OAuth2ClientProperties 에 바인딩되어 있는 속성값은 auth server로 권한 부여 요청을 하기위한 ClientRegsitration 클래스필드에 저장. 5. OAuth2Client 는 ClientRegistratio..

WEB/Security 2022.11.18

OAuth 2.0 Open ID Connect + OAuth2.0 Client

Open ID Connect OAuth 2.0 을 확장하여 인증 방식을 표준화 한 OAuth 2.0 기반의 인증 프로토콜 scope 지정시 openid 를 포함하면 OpenID Connect를 사용이 가능하며 인증에 대한 정보는 ID Token 을 JWT형태로 반환된다. Client가 User 의 id를 확인할 수있게 해주는 ID Token을 제공 햇갈릴만한 개념 OAuth2.0은 본래 인가(authorize) framework이다. 주로 Client(app)에서 인증하는 방법은 다음과 같다. Auth server에서 access token 을 통해서 사용자의 정보를 resource server 를 통해서 받아와 인증을 할 수 있다. Open ID는 인증(authenticate) 요청을 위한것 임으로 I..

WEB/Security 2022.11.18

OAuth 2.0 권한부여 유형

OAuth 2.0 Grant Type 개요 권한 부여 유형 권한부여 = 클라이언트가 사용자를 대신해서 사용자의 승인하에 인가서버로부터 권한을 부여 받는것을 의미 1. Authorization Code Grant Type = 백 채널에서 동작하는 가장 안전한 유형 , keycloak에서 실습한 방법 2. Implicit Grant Type = 프론트 채널에서 동작함 , 탈취위험이 높음 , deprecated 3. Resoucre Owner Password Credentials Grant Type = 사용자 비번으로 직접 접근 시도 , 위험함 4. Client Credentials Grant Type = client id , client secret만으로 권한이 부여됨 (user가 필요없음) 화면이 없는 서..

WEB/Security 2022.11.17

OAuth 2.0 용어 이해

OAuth2.0 인가 프레임워크는 앱(Client)이 사용자(User) 대신하여 사용자의 자원(Resource Server)에 대한 제한된 엑세스를 얻기 위해 승인 상호 작용을 함으로써 앱이 자체적으로 액세스 권한을 얻도록한다. 그전에는 Client가 User의 id,pasword 를 직접 받아서 resource server에게 요청을 하였다. 보안에 취약하고 , resource server의 모든 서비스를 사용가능하게되고 , 앱(Client)를 믿을 만한가? Resource Owner (User) = 자원의 주인 , 접근권한을 부여하는 사람이다. Resource Sever = 타 앱에서 접근하는 사용자의 자원이 포함된 서버 , 엑세스 토큰을 수락 및 검증할 수 있어야 하며 권한 체계에 따라 요청을 승인..

WEB/Security 2022.11.16