• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

principal에 대해 궁금한점이 있어서 질문 올립니다.

20.06.26 22:48 작성 조회수 190

1

안녕하세요 강의를 보고 있는 학생입니다.

Authentication에 좀더 알아보고 싶어서 따로 블로그를 찾아보다가 Authentication에는 principal과 credential데이터를 넣는다고 설명이 되어 있더라고 principal에는 사용자 정보(id)를 저장을 하고 credential에는 패스워드를 저장한다 요렇게 나와있었는데 강의에서는 principal내부에 id와 password를 한번에 저장한다고 말씀하셔서 이해가 잘 가지 않아 질문 올립니다.

항상 좋은 강의 만들어 주셔서 감사합니다!!!

답변 1

답변을 작성해보세요.

3

좋은 질문 감사합니다. Principal 개념은 명확히 해당 사용자를 지칭하는 거지만 그걸 구현을 어떻게 할꺼냐는 정해진게 없기 때문에 정하기 나름입니다. 보통의 경우에는 사용자의 id 또는 이메일이나 유저네임에 해당하는 String을 Principal로 사용할 수도 있을것이고, 어떤 경우에는 사용자에 해당하는 도메인 객체를 Principal로 사용할 수도 있습니다. 그 도메인 객체가 id와 password를 가지고 있을 수도 있는거죠.

스프링 시큐리티에서 Principal은 이 수업에서 설명드린대로 UserDetailsService에서 리터한 UserDetails 타입의 객체입니다. 그 객체에 담겨있는 모든 정보가 Principal을 구성하는 정보가 되는거고, UserDetails라는 인터페이스를 구현한 클래스를 만들어 제공하면 얼마든지 추가 정보를 가지고 있는 Principal을 만들 수도 있습니다.