[스프링(spring)]시큐리티는 어떻게 동작할까??(3/6) GrantedAuthority

allnight5·2023년 1월 4일
0

스프링

목록 보기
24/62

참조사이트1

GrantedAuthority


  • 인터페이스와 같은 Spring Security의 개념과 구현은 액세스 권한을 부여 / 제어하는 권한을 얻습니다. Serializable를 상속받아 사용한다.
  • high-level authority라고 부르는 이유는, 어플리케이션 전반에 걸친 권한이기 때문이다. 따라서 특정 도메인에 특화된 권한을 의미하지는 않는다.

UserDetails를 상속받아 구현하는 클래스의
getAuthorities() 메소드 내에 아래와 같이 권한을 주는 소스를 넣으면 된다.
GrantedAuthority는 getAuthority()메소드는 문자열(String)을 반환해준다.

UserRoleEnum role = user.getRole();
String authority = role.getAuthority(); 
SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority(authority);
Collection<GrantedAuthority> authorities = new ArrayList <>();
authorities.add(simpleGrantedAuthority);

중요!

위와같이 권한을 넣어준다고 끝이아니다
이제 SecurityFilterChain나 시큐리티 설정 메소드를 구현하여 설정을 하여 권한에 맞는곳에만 들어갈수있도록 해주어야 GrantedAuthority를 이용하여 넣어준 의미가 있다.

형식1


통과시킬건 통과시키고 인증을 확인하겠다.

.antMatchers("/h2-console").permitAll()
  //인증하지 않아도된다.(permitAll())
  
  
  //ADMIN Authorization(ADMIN권한, ROLE_ADMIN)-3가지 방법
  //.antMatchers("/admin/**").hasRole("ROLE_ADMIN")
  //.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.antMatchers("/admin/**").hasAnyAuthority("ROLE_ADMIN")
  //hasAnyAuthority권한을 확인하겠다.ROLE_ADMIN라면 권한이 ADMIN인 관리자만
  //만약 ROLE_PRIMIUM이라면 PRIMIUM고객만 페이지를 접속할수있도록 해줄수 있다.
.anyRequest().authenticated()
  //authenticated() 인증이 되어야 통과된다는 뜻이다.

형식2


인증절차가 필요한것부터 다 확인하고 나면 무조건 통과시키겠다.

.antMatchers("/h2-console").authenticated() 
  //authenticated() 인증이 되어야 통과된다는 뜻이다.
  
  
  //ADMIN Authorization(ADMIN권한, ROLE_ADMIN)-3가지 방법
  //.antMatchers("/admin/**").hasRole("ROLE_ADMIN")
  //.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.antMatchers("/admin/**").hasAnyAuthority("ROLE_ADMIN")
  //hasAnyAuthority권한을 확인하겠다.ROLE_ADMIN라면 권한이 ADMIN인 관리자만
  //만약 ROLE_PRIMIUM이라면 PRIMIUM고객만 페이지를 접속할수있도록 해줄수 있다.
  
.anyRequest().permitAll()
profile
공부기록하기

0개의 댓글