보안

    Authentication 앞에 Basic 혹은 Bearer 를 붙이는 이유 (인증 방식)

    원본 글 토스 페이먼츠 Basic Bearer 설명 포스팅 HTTP 통신 방법 Authentication 앞에 Basic 과 Bearer 를 붙이는 이유는 정해진 하나의 통신 프레임워크이기 때문이다. 참고 모질라 HTTP 인증 프레임워크 문서 웹 표준 RFC 7235 Basic 인증 사용자ID:비밀번호 문자열을 Basic 이라는 문자와 함께 인증 헤더에 입력한다. 자세한 내용은 웹 표준 RFC 7617 에 나와있다. Base64 는 디코딩이 가능하기 때문에 반드시 HTTPS, SSL/TLS 로 통신해야 안전하다. Authorization: Basic base64({USERNAME}:{PASSWORD})장점 간단하다 단점 사용자 목록에서 권한을 확인하는데 시간이 많이 걸릴 수 있다. 사용자가 많으면 부각되..

    스프링 시큐리티에서 Authority 와 Role 의 차이는?

    스프링 시큐리티에서 Authority 와 Role 의 차이 스프링 시큐리티에서 Role 과 Authority 는 얼핏 보기에 같아 보이지만 서로 다른 개념이다. Authority (권한) '권한' 이라고 해석된다. 세분화된 접근 권한을 이야기한다. ex. 쓰기 권한, 읽기 권한, 삭제 권한 등이 있다. 역할(Role) 이나 기준에 따라 부여된다. 표현: 문자열로 하며 특정 접두사나 형식이 없는 편이다. 유연성: 역할 (Role) 만으로는 충분한 제어가 어려운 복잡한 시스템에서 유용하다. Role (역할) 권한 보다 높은 수준에 있는 권한 그룹이다. 책임과 권한의 집합을 나타낸다. ex. 사용자, 관리자 같은 역할이 있다. 여러 권한을 하나의 레이블로 그룹화하는데 사용된다. 일련의 권한을 한..

    리프레시 토큰 (refresh token) 을 사용하는 이유를 알아보자

    개요 앱이나 웹에서 인증을 구현할 때 token 을 같이 보내는 방식으로 구현하는 경우가 많다. 단, 그럴 때 인증 토큰 외에 refresh token 이라는 것을 함께 보내기도 한다. 이렇게 하는 이유는 뭘까? 리프레시 토큰 (refresh token) 을 사용하는 이유 access token 의 취약점 access token 과 같은 모든 토큰에는 탈취라는 취약점이 존재한다. 탈취를 방지하기 위해 보통 access token 은 짧은 유효기간 (ex. 30분) 을 가지고 있다. 만일 유효기간이 존재하지 않는다면, 해커는 한번 탈취한 계정의 토큰을 평생 이용할 수 있을 것이다. 이렇게 토큰에 유효기간을 주는 것은 보안적으로는 장점이지만, 일반 이용자는 토큰이 만료될 때마다 다시 ID 와 패스워드를 인증..

    Method Security of 스프링 시큐리티

    스프링 시큐리티 (Spring Security) 속 메서드 시큐리티 (Method Security) 란? 애플리케이션 내부의 메서드 혹은 함수에 보안설정을 하는 것이다. 스프링 시큐리티에서 설정한 권한에 맞는 사용자만 해당 메서드를 사용할 수 있게 된다. 스프링 시큐리티 메서드를 구현하는 방법 보통 3가지 방법이 사용된다. 애노테이션 사용하기 @PreAuthorize, @PostAuthorize, @RolesAllowed 와 같은 메서드를 통해 구현할 수 있다. 표현식 사용하기 SpEL (Spring Expression Language) 과 같은 표현식을 사용하여 가능하다. true 인지 false 인지 결과값으로 권한이 평가된다. @PreAuthorize, @PostAuthorize 와 같은 애너테이션..

    CSRF 공격 정리 (feat. 스프링 시큐리티)

    CSRF 란? Cross-Site Request Forgery 라고 불리는 공격 방법이다. 웹사이트 취약점 공격의 일종이다. 특정 웹사이트에 로그인된 상태에서 해커가 원하는 URL 에 접근하게 만든다. 공격 주요 개념 정리 브라우저가 SESSION ID 등의 인증정보를 가지고 있는 것을 활용하는 것이다. 브라우저를 사용하지 않으면, 요청 시마다 인증정보를 수동으로 입력해줘야 하기 때문에 보통은 CSRF 공격에 당하지 않는다. 그러나 이 역시도 애플리케이션에서 인증 상태를 저장하고 있다면, 브라우저와 동일하게 취약하다. 해킹 시나리오 시나리오 1. GET 요청의 경우 피해자는 브라우저를 통해 https://any-bank-site.com/ 웹사이트에 접속하고 로그인한 상태이다. 브라우저에는 로그인을 통해 ..

    JWT(Json Web Token) 이란 무엇이며 왜 사용하는가?

    JWT(Json Web Token) 이란 무엇이며 왜 사용하는가?

    JWT (JSON Web Token) 란 무엇인가? open standard 로 RFC 7519 에 표준에 관한 내용이 기재되어 있다. 통신에 JSON 을 이용하여 JSON 객체를 통해 두 당사자 간 정보를 보안이 적용된 안전한 방식으로 전달한다. JWT 는 다른 인증방식과 비교했을 때 컴팩트하며 스스로 정보를 담고 있다. 디지털 서명이 되어있기 때문에 정보에 인증이 되어 있고 믿을 수 있다. 보통 HMAC 알고리즘과 함께 secret 을 이용하여 서명한다. RSA, ECDSA 를 이용한 public/private key 쌍을 이용할 수도 있다. 아래 설명에 claim 이란 용어가 나오는데, 이는 JWT 를 이용해 전송되는 암호화된 정보를 말한다. JSON 오브젝트에서 다루는 프로퍼티의 이름이기도 하다...

    인증 (Authentication) 과 인가 (Authorization) 의 차이를 알아보자.

    인증(Authentication)과 인가(Authorization) 인증, Authentication 내가 누군지 알아? 여기 내 명함 봐봐! by 40대 꼰대 어떤 개체의 신원을 확인하는 과정이다. 보통 어떤 인증요소를 증거로 자신을 증명한다. 온라인에서는 ID 와 패스워드를 입력하는 행위가 인증이 될 수 있다. 실생활에서는 공공기관에서 신원확인 시 신분증을 보여주는 것을 생각해보면 된다. 여러 개의 절차가 있을 수 있다. 은행의 경우, 본인인증 후 OTP, 보안카드 등의 절차를 추가로 거친다. 인가, Authorization 당신의 신분은 확인 되었지만, 20대만 출입 가능합니다. by 클럽 문지기 어떤 리소스에 접근할 수 있는지, 어떤 동작을 수행할 수 있는지 검증한다. 접근 권한을 얻는 일이다. ..

반응형