스프링시큐리티 4

스프링 시큐리티 어노테이션

스프링 시큐리티 어노테이션 주로 사용하는 세 가지 어노테이션 @Secured 스프링 시큐리티 초기부터 사용했다. ()안에 'ROLE_ADMIN' 같은 문자열 또는 문자열 배열을 이용한다. @PreAuthorize, @PostAuthorize 스프링3버전부터 지원한다. ()안에 표현식을 사용할 수 있어서 최근에는 더 많이 사용한다. http.authorizeRequests() .antMatchers("/sample/all").permitAll() .antMatchers("/sample/member").access("hasRole('ROLE_MANAGER')") .antMatchers("/sample/admin").access("hasRole('ROLE_ADMIN'..

Spring legacy 2020.09.13

JSP에서 스프링 시큐리티 사용하기

JSP에서 스프링 시큐리티 사용하기 스프링 시큐리티 관련 정보를 출력하려면 시큐리티 관련 태그 라이브러리를 선언해야 한다. 태그는 과 principal이라는 이름의 속성을 사용한다. 사용 예제 admin.jsp ... principal : MemberVO : 사용자 이름 : 사용자 아이디: 사용자 권한 : .. ...결과 표현식을 이용하는 동적 화면 어떤 페이지에서, 일반 사용자로 로그인했을 때 보여지는 내용과, 관리자로 로그인 했을 때 보여지는 내용이 달라야 한다면(이를테면 관리자용 메뉴 같은 것) 표현식을 이용하여 동적으로 구성할 수 있다. 표현식 설명 hasRole([role]) hasAuthority([authority]) 해당 권한이 있으면 true hasAnyRole([role,role2]) ..

Spring legacy 2020.09.13

Spring Security - UserDetailsService

UserDetailsService JDBC를 이용한 인증방식의 단점은 사용자의 여러 정보들 중에서 제한적인 내용만을 이용한다는 점이다. 스프링 시큐리티에서는 username이라고 하는 정보만을 이용하므로 이름이나 이메일 등 자세한 정보를 이용할 경우 충분하지 못하다. UserDetailsService이스를 구현하는 방식으로 이러한 문제를 해결할 수 있다. UserDetailsService는 loadUserByUserName이라는 하나의 메서드만 가지고 있다. loadUserByUserName()는 UserDetails를 반환하는데, UserDetails는 사용자의 정보와 권한 정보를 담는 인터페이스다. UserDetails는 getAuthorities(), getPassword(), getUserName..

Spring legacy 2020.09.13

Spring Security - 기존 테이블을 이용하는 인증방법

기존의 테이블을 이용한 시큐리티 인증 방법 1. 테이블 설계 회원 테이블과 권한 테이블 -- 회원 테이블 create table tbl_member( userid varchar(50) not null primary key, userpw varchar(100) not null, username varchar(100) not null, regdate timestamp default now(), moddate timestamp default now(), enabled char(1) default '1' ); -- 권한 테이블 create table tbl_member_auth( userid varchar(50) not null, auth varchar(50) not null, constraint fk_memb..

Spring legacy 2020.09.13