본문 바로가기

분류 전체보기

Spring Security의 자원 접근 판단에 대한 설명 지난 글에서는 권한에 대한 개념을 조금 짚어봤다. 지난 글에 동의하는 사람도 있고 동의하지 않는 사람도 있을것이다. 지난 글에서도 언급했지만 그게 절대적인 진리는 아니다. 어찌보면 내가 가지고 있는 권한 설계의 사상을 얘기한 것이다. 다만 그 설계 사상이 모든 플젝에 맞는 것은 아니기땜에 단순하게 할수도 있고 장기적인 안목을 보고 좀더 신경써서 디테일하게 할수도 있는 것이다. 암튼 플젝에 따른 권한 설계 사상을 가지고 신중히 설계하길 바란다. 이번 글에서는 이렇게 설계한 권한을 이용해서 Spring Security가 어떤식으로 자원과 매핑을 지어 관리하는지를 보도록 하자. 이 기능을 하는데 있어 총괄적인 역할을 하는 클래스는 org.springframework.security.web.access.inte..
권한에 대한 설계 및 사상 지난글 까지 꽤 오랜 시간동안 Spring Security의 인증(로그인)에 대한 내용을 다루었다. 최대한 쉽게 설명할려고 장황하게 썼지만 아는 사람 입장에선 오히려 장황했을수도 있다. 그러나 아는 사람이라 해도 본인이 몰랐던 시절을 생각해보라..그 시절 이렇게 친절(?)하게 콕콕 집어 준 사람이 있어서 자신이 알은게 아니었다면 정말 깜깜함 그 자체였을 것이다. 그런 시절을 생각하면서 이해하고 넘어가주길 바란다. 이번글부터는 Spring Security의 권한에 대한 내용으로 다루도록 하겠다. 예전에 인증과 권한에 대한 설명을 언급했을때 권한은 사이트를 이용하는 사람이 화면을 이용할 자격이 있는지 확인하는 과정..이라 설명한 적이 있다. 그러나 이것은 기능을 화면에만 맞춰서 설명한 것이라 정확한 표현은 ..
Spring Security에서의 비밀번호를 암호화시켜 적용해보자 지난 글에서는 Spring Security가 로그인 작업을 성공한 후 또는 로그인 작업을 실패한 후의 부가작업 설정하는 부분에 대해 설명했다. 이번 글에서는 암호화된 패스워드를 Spring Security에서 사용하는 방법에 대해 알아보도록 하겠다. 지금까지 로그인 테스트를 진행했다면 아마 이 부분에 대해 의아심을 가졌던 분들이 많을 것이다. 흔히 로그인 하는 과정을 보면 암호화된 비밀번호 값을 DB에 저장한뒤 사용자가 입력한 암호화 되지 않은 비밀번호를 지정된 암호화 방식으로 비교해서 확인하거나 또는 DB에 저장되어 있는 암호화된 비밀번호 값을 복호화한뒤에 사용자가 입력한 패스워드와 비교하는 식으로 아이디와 패스워드 인증을 거칠텐데, 지금까지 Spring Security를 설명하면서 이런 내용에 대해 ..
Spring Security에서 로그인 작업 후 부가적인 작업을 설정해보자(로그인 실패시) 지난글에서는 로그인 작업 후 로그인이 성공했을때 부가적인 작업을 어떤식으로 설정하는지 설명했다. 한줄로 요약하면 org.springframework.security.web.authentication.AuthenticationSuccessHandler 인터페이스를 구현한 클래스를 만든 뒤 이를 태그를 이용하여 등록한 뒤 태그의 authentication-success-handler-ref 속성에 해당 bean 클래스를 설정하는 것으로 구현할 수가 있다.(이 한 줄 요약을 풀어서 살을 붙여가며 설명하면 저번 글 처럼 엄청난 양의 글이 된다..물에 불린 라면도 아닌 것이 머 그리 불어나는건지..ㅠㅠ..) 로그인이 성공했을때의 부가작업을 다루었으니 이번엔 로그인이 실패했을때의 부가작업을 설명할 차례가 됐다. 이..
Spring Security에서 로그인 작업 후 부가적인 작업을 설정해보자(로그인 성공시) 이전 글에서는 로그인 한 사용자의 정보를 화면에 보여주고 로그인 한 사용자의 권한에 따른 동적 메뉴를 구성하는 방법, 그리고 로그아웃에 대해 살펴보았다. 이번에는 이렇게 로그인 기능을 구현한 뒤의 추가 작업을 구성하는 방법에 대해 고민해볼 시간을 갖고록 한다. 로그인 작업이 성공을 하든, 실패를 하든 부가적인 작업이 필요한 상황이 올 수 있다. 예를 들면 로그인을 성공했으면 이를 하루 방문자수에 더한다거나, 로그인 한 사람의 로그인 횟수를 통계 목적을 위해 기록할 수도 있을것이다. 또 로그인에 실패했으면 관련 예외를 다른 방법으로 보여주고 싶을수도 있을 것이다. 즉 로그인 작업이 성공을 하든 실패를 하든 그냥 넘어가는 일은 아마 거의 없을 것이다. 여기서는 그런 작업을 할때 어떤 방법으로 이런 방법을 지..
Spring Security에서 화면에 사용자 정보, 권한에 따른 동적 메뉴 화면 구성 및 로그아웃 구성하기 저번 글에서는 Spring Security에서 DB를 이용한 인증과 권한 설정을 다루었다. 이번 글에서는 이렇게 인증과 권한을 거치면 이런 정보를 화면에서 어떻게 보여주는지에 대해 알아보도록 하겠다 흔히 로그인을 거치면 웹페이지에 **님 반갑습니다..이런 내용의 문구와 로그인 한 사람의 정보(예를 들면 방문한 사이트에 가지고 있는 포인트 점수나 등급)이런 것들을 볼 수가 있다. 지금까지의 글들을 잘 보고 따라했다면 이전 글에서 단독 로그인 화면에서 테스트를 진행해서 거기서 로그인이 성공적으로 되면 메인화면으로 이동되는 것을 볼 수 있었을것이다. 근데 메인화면으로 이동해도 로그인이 되었는지 안되었는지 알 수가 없었다. 이유는 메인화면 왼쪽에 아직도 로그인 폼이 나타나고 있기 때문이다. 이 화면은 로그인 화..
Spring Security의 DB를 사용하는 인증과 인증에 따른 권한 설정 지난 글에서는 Spring Security의 계정 클래스와 권한 클래스 설계에 대해 알아보았다. 이번 글에서는 이렇게 설계한 클래스를 DB에서 어떻게 조회하고 이를 Spring Security에서 어떤 식으로 설정하는지를 알아보도록 하자. Spring Security에서는 사용자의 이름(계정, 로그인 아이디)과 비밀번호를 입력받아 DB에서 이를 조회하여 그 결과를 리턴해주는 기능과 해당 사용자의 권한을 DB에서 조회하는 기능을 제공하는 클래스가 이미 제공되고 있다. org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl 클래스가 그것이다. 이 클래스의 소스는 여러분들이 따로 보시고, 일단 이 클래스가 상속받은 클래스와 구현해야 하는 인터페이스만 알..
Spring Security의 계정 클래스와 권한 클래스 설계 저번 글에서는 Spring Security를 커스터마이징 하는데 있어 필요한 Database 스키마 설명을 했다. 이번에는 Spring Security에서 다루어지는 사용자(앞으로는 설명의 편의를 위해 계정이라고 하겠다)와 권한의 개념을 좀더 자세히 짚고 넘어가도록 하자 Spring Security 에서 계정 객체를 자바로 정의하기 위해서는 org.springframework.security.core.userdetails.UserDetails 인터페이스를 이해해야 한다. 이 인터페이스를 구현한 클래스를 Spring Security에서는 사용자라고 보고 작업을 하게 된다. 이 인터페이스에 정의된 메소드와 역할을 도표로 정리하면 다음과 같다 return 타입 메소드명 설명 String getUsername(..