소프트웨어 관리자가 봐야할 필독서와 URL

Posted at 2010.08.21 15:13 // in Project Life // by MOOVA 무바㏇
때로는 관리자들과 실무에 대해 이런저런 이야기를 하면서 소프트웨어 방법론뿐만이 아닌, 도메인 특화된 관리방법을 발굴시키고자 고심을 할 때가 많습니다. 상생을 위해서 더 좋은 방법이 없을까? 그러기 위해서 개발자가 관리자를 바라보는 시각과 관리자가 개발자들을 바라보는 시각에 대해서 많은 개선점이 필요하다는 것을 느꼈고,
그동안 관리자가 갖고 있어야 할 역량이나 개발자의 역량등을 개선하기 위해 지속적으로 관련된 사항을 살펴보고, 조금씩 팀 내에 적용해 보고 싶었습니다. 또한 관리자가 개발자에게 편견이 있는 평가를 하는 곳을 많이 보았습니다. 객관적인 평가가 아닌 상당히 주관적인 평가겠지요, 이것을 방지하기 위해선 관리자도 관리자 역량을 자체적으로 평가할 수 있는 시스템을 도입해서 관리자에게 필요한 역량과 자질, 스킬을 되 묻는 시스템을 마련해야 할 것입니다.

소프트웨어 관리자들에게 그동안 눈여겨 봤었던 사이트와 책자 몇 가지를 소개할까 합니다.


1. 12Manage.com

2010:08:21 11:05:49

자주들어가는 사이트입니다. 12가지 관리자가 갖추어야 할 역량에 대해서 카테고리별로 잘 정리해 놓고 있습니다.
주 정보는 있지만, 세부정보는 없는 게 단점이긴 하지만 팀내에서 활동하고 있는 관리자나 팀장이라면 한번쯤 숙지해야 할 내용이 잔뜩들어 있습니다. 실무 관리자라면 카테고리별로 어떤 역량을 키울지 또는 어떤 서적이나 프로젝트를 참고해야 할지 감을 잡게 해주는 사이트입니다.

2. scrumalliance.org

2010:08:21 11:14:17

Scrum과 관련된 기사가 기재되고 있습니다.  http://www.scrumalliance.org/articles
북마크 해두면 좋을 듯

3. 그밖에 북마크하고 있는 사이트

    http://www.PMPCafe.com 
    http://www.epmforum.com
    http://www.agilealliance.org/
    http://www.agile-online.org/
    http://www.agilemodeling.com/
    http://www.scrum.org/scrumguides/
    http://xprogramming.com/index.php

LG CYON | KU9100 | Normal program | Unknown | 2010:08:21 11:41:30

4. 2007년도에 탐독했던 책입니다.
프로젝트관리의해법
카테고리 경제/경영 > 경영전략 > R&D경영/CFO
지은이 J 데이빗슨 프레임 (한언, 2007년)
상세보기


이 책이 강조하는 것은 새로움입니다. 즉, 복잡한 비즈니스 환경에서 성공적으로 업무를 수행하려면 프로젝트 관리자는 새로운 기술을 습득해야 한다는 것입니다. 과거의 프로젝트 관리자는 일정관리,예산,인적/물적자원의 배분 들의 영역에 관한 기술을 가지면 되었습니다. 따라서 프로젝트 관리자는 간트차트, PERT/CPM 네트워크, 누적비용곡석, 책임 매트릭스들을 이해하고 활용한다면, 프로젝트 수행에 필요한 충분한 지식을 가진 것으로 간주되었습니다. 그러나 그것은 단순한 수행자로서의 역할에 따른 지식이었습니다. 프로젝트관리자들이 새로운 기술들을 배우고 익히는 데 투자한다면, 이러한 능력을 발달 시킬 수 있을 것입니다. 결과지향적인 태도보다 융화지향적인 태도로 변모해야만 합니다. 프로젝트에서는 기법과 기술들을 터득하는 것만으로 성공하는 것이 아니란 것을 잘 아시죠?
이제 관리자도 선의의 관리를 배울 때라는 거~

5. 2004년에 탐독했던 책입니다. 
논리의기술(바바라민토)
카테고리 자기계발 > 자기능력계발 > 창의적문제해결
지은이 바바라 민토 (더난출판사, 2004년)
상세보기

"왜 말을 안 들어?" , "왜 내 말을 안 듣지?" 툴툴거리는 양은냄비같은 관리자를 상당히 많이 봐왔습니다. 왜 사람들이 따라오지 않는지, 또는 왜 말을 듣지 않는지. 당장의 현실만 바라보고 답답해하는 관리자들이 봐야 할 책입니다. 현실을 인정하고 무엇이 잘못되었는지 분석할 수 있는 역량이 갖추어져 있다면 실제로 문제가 무엇인지 그리고 어떻게 해답을 찾을 수 있는지 실마리를 제시하고 정리해 줄 수 있는 책이라고 생각합니다. 일정은 촉박하고 기간은 짧은데 위에서는 닦달하지, 개발자들은 말을 안듣지.. 답답하시죠?
개발자의 시각을 이해하고, 경영자의 시각을 이해하는 길은 현실을 주관적이고 감정적인 태도가 아닌, 객관적이고 논리적으로 판단할 수 있는 역량입니다.

6. 2009년에 탐독한 책입니다. 
소프트웨어공학의사실과오해
카테고리 컴퓨터/IT > 컴퓨터공학 > 소프트웨어공학
지은이 로버트 L. 글래스 (인사이트, 2004년)
상세보기

100% 공감된 책입니다. 이론적인 방법론이나 규칙보다 실무에서 얻었던 경험으로 공학에 대해서 설명한 책입니다. 상당히 고급스러운 지혜가 들어 있습니다. 소프트웨어 공학의 탈무드라고 해도 과언이 아닙니다. 아직도 많은 관리자가 전통적인 방법에서 사용하던 것을 개발자들을 통제하고 관리하려 합니다. 하지만 이것은 현실에 전혀 맞지 않고 딱딱한 것만을 강조하는 병폐입니다. 이러한 상황이 개선될 조짐은 전혀 보이지 않죠? 프로젝트를 발주하는 회사와 프로젝트를 수주해 시행하는 회사의 입장, 경영진과 팀의 입장,관리자의 입장에 따라 각기 생각하고 주장하는 바가 다릅니다. 프로젝트의 성공이란 스킬과 기술을 익히는 것 이외에도 공통 목표를 가지고 각 이해당사자를 더 포괄적으로 이해시키고 융화시킬 때 정말 잘했다는 칭찬을 들을 수 있지 않을까요?

7. 2006년에 탐독한 책입니다. 
사용자스토리
카테고리 컴퓨터/IT > 컴퓨터공학 > 소프트웨어공학
지은이 마이크 콘 (인사이트, 2006년)
상세보기

많은 프로젝트에선 일하는 방식에 문제가 있습니다. 공식만을 가지고 팀을 관리하려 합니다. 공식적인 프레임웍이 있으니 그 프레임웍을 팀 내에 도입해서 성과를 달성해보자는 팀들이 꽤 많은 것 같습니다. 하지만 이것은 상당히 잘못된 방식입니다. 공식보단 원리를 깨우쳐 원리를 통해 응용할 수 있을 때 그것이 진정한 지혜라고 할 수 있습니다. 무턱대고 스크럼이니, 애자일이니, 버그트래킹 시스템이 좋아보여 프로세스도 정비되어 있지 않은 곳에 부랴부랴 도입하는 것보다 왜 그러한 방법들이 나왔고, 왜 그런 방법들을 터득해야만 하는지, 또는 그런 방법들이 우리가 사용하면 어떤 이점을 얻을 수 있을지, 딱 맞는 방법론은 없겠지만 우리 조직에 필요한 것은 진짜 무엇인지 과감하게 버려고 시도해야 하는 자세가 필요하다고 생각합니다. 이 책도 공식보단 원리에 초점을 맞추었습니다. 사용자의 시각으로, 또는 고객의 시각으로 보여주는 것이 다가 아닌 진짜 알짜배기 소프트웨어를 건네줄 수 있는 로드맵을 제공해 주는 귀한 책입니다.

8. 2008년에 탐독한 책입니다. 
THEARTOFPROJECTMANAGEMENT마음을움직이는프로젝트관리
카테고리 컴퓨터/IT > OA/사무자동화 > 오피스 > 프로젝트관리
지은이 스콧 버쿤 (한빛미디어, 2006년)
상세보기

2006년에 Jolt Award를 수상한 책입니다. 수상한 네임밸류답게 관리자들에게 꼭 필요한 지식과 지혜를 일깨워주는 값진 책입니다.
경험있는 팀 리더와 관리자, 초보 팀 리더와 관리자,프로그래머/테스터, 비즈니스 경영관리 제품 설계, 소프트웨어를 공부하는 학생 모두 참고했으면 합니다. 프로젝트 내 존재하는 모든 상황과 기술적인 문제, 정치적인 문제, 위험요소,변화관리등 프로젝트를 악용하려 하는 분들에게 진짜 마음을 움직이는 프로젝트란 무엇인지 깨닫게 해주는 책입니다.

9. 2007년에 탐독한 책입니다. 
소프트웨어프로젝트생존전략
카테고리 컴퓨터/IT > 컴퓨터공학 > 소프트웨어공학
지은이 스티브 맥코넬 (인사이트, 2003년)
상세보기

이 책은 소프트웨어 프로젝트와 관련이 있는 모든 사람을 위한 책입니다. 소프트웨어 프로젝트에서 성공하기 위한 첫걸음은 성공이냐 실패냐의 문제가 아닙니다. 그것보다 더 근본적인 생존의 필요성을 인식하는 것이 중요합니다. 개발자들에게 자아의식을 부여해주고, 관리자들에게 활력 있는 팀의 역동성을 부여해주고, 생존 욕구로부터 더 고급단게인 자아실현을 할 수 있게 감을 주는 책입니다. 프로젝트 전 공정에서 나타날 수 있는 이해당사자들의 충돌을 예방하고 더 나은 결과를 내고 싶으신가요? 이 책으로 감을 잡으세요:)

10. 2008년부터 프로젝트를 할 때마다 들고 다녔던 책입니다. 거의 애장일의 바이블이라고 해도 과언이 아니죠^^
불확실성과화해하는프로젝트추정과계획규모추정,우선순위,일정배치
카테고리 컴퓨터/IT > OA/사무자동화 > 오피스 > 프로젝트관리
지은이 마이크 콘 (인사이트, 2008년)
상세보기

소프트웨어 관리의 지혜를 얻을 수 있는 제가 가장 강력히 추천하는 책입니다. 소프트웨어 계획부터 추정, 우선순위 결정, 스토리 분할, 일정의 배치와 이터레이션 계획, 의사소통과 커뮤니티의 역할, 애자일에 대한 인식을 고취할 수 있는 지혜가 담겨 있습니다. 항상 변화되고 미래를 예측할 수 없는 프로젝트에서 관리자들이 불확실성을 제어하고 화해할 줄 아는 스킬을 가지고 있다면 경영자나 개발자나 공통의 선의의 목표로 한 걸음 더 나아갈 수 있지 않을까요?(물론 그것이 쉬운일은 아닙니다.)
 애자일 방법론이 궁극적으로 지향하는 바가, 고객에게 최선의 가치를 전달하는 것입니다. 프로젝트의 프로세스도 정리되지 않은 상태에서 무턱대고 스크럼을 배껴와서 시행하고, 무턱대고 애자일 툴하나 사서 도입하고 하는 것보다, 진짜 고객이 원하는 가치(알짜배기 소프트웨어)를 전달해 주어야 하지 않을까요? 우리회사에 스크럼이 좋을지 워터풀이 좋을지 먼저 회사의 문화를 분석하는 자세부터 키워야 할 것입니다. (워터풀도 때로는 좋은 방법론이 될 수도 있기때문입니다.)
 

저는 소프트웨어가 굉장히 광범위한 분야이고 또한 정해진것이 없다고 생각합니다. "일정이 촉박해서", "요구사항이 바뀌니까.." 등등 이러한 이유로 소프트웨어를 못하겠다는 기사를 본 적이 있습니다. 하지만 그들은 진짜 변경되어야 할 것에 대해서는 언급하지 않더군요. 누군가 때문에 소프트웨어가 변경되었다고 툴툴대는 것 이외에 진짜로 변경되어야 할 부분들 까지 비관적인 태도를 고취한다면 별로 좋아보이지 않습니다. 이 책을 읽음으로써 관리자와 개발자 사이의 오해를 줄이고 그 갭을 더 좁혀나갈 수 있으리라 봅니다.

저작자 표시 비영리 변경 금지
신고
블로그코리아에 블UP하기
  1. Favicon of http://minimonk.net BlogIcon 구차니

    2010.08.21 20:28 신고 [수정/삭제] [답글]

    저는 개발자의 입장에서
    프로젝트가 원활하게 돌아가고, 안정적으로 유지가 되며,
    개발자가 편한 개발환경을 위한 프로젝트 관리에 관심이 있어서 요즘 책을 찾고 있었는데
    위에있는 녀석들을 한번 후다닥 읽어봐야겠어요 ㅎ

    • Favicon of http://moova.tistory.com BlogIcon MOOVA 무바㏇

      2010.08.28 08:15 신고 [수정/삭제]

      모든 사람들이 관점의 차이가 있듯, 저 마다 자신의 관점이 있는것 같군요. 꼭 개발자들에게 좋은 환경을 줄 수 있는 세상이 올 수 있었으면 좋겠습니다. 저 택들이 후다닥 읽을 종류의 것은 아니지만 ㅋㅋㅋㅋ. 저 책들이 구차니님에게 도움되리라 믿습니다.^^

  2. Favicon of http://kindtis.tistory.com BlogIcon 친절한티스

    2010.08.26 09:01 신고 [수정/삭제] [답글]

    저희 팀 PD님께서 좀 읽어봐주셨으면 하는 책들이네요.
    첫 PD 직에 그래픽 출신이라서 그러신지 이런거에 너무 문외한...
    버전관리 프로그램 조차 쓰자고 쓰자고 해도 귀찮고/몰라서 안쓴다고 할 정도니...
    (최근에야 기획팀에 버전관리 프로그램 억지로 도입시켰다고 말하면 믿는 사람이 없다는... 게임 어떻게 나왔냐며 놀라더군요)

    • Favicon of http://moova.tistory.com BlogIcon MOOVA 무바㏇

      2010.08.27 08:28 신고 [수정/삭제]

      그 답답함 이해합니다.
      그냥, 현실에 안주하는 스타일의 팀장이 위에 앉아 있을 경우 그 답답함은 이루말할 수 없을 정도지요.. 쩝..
      그런것들은 하지 않는것보다 하는게 더 이득인데 말이예요(일찍퇴근,마찰저하 등등). 전 티스님같이 깨어있는 사람덜이 잔뜩 나왔으면 좋겠다는~

  3. Favicon of http://ecogeo.tistory.com BlogIcon 에코지오

    2010.08.27 15:29 신고 [수정/삭제] [답글]

    헉, "논리의 기술"책 오래전에 사뒀다가 결국 한장도 못읽고 얼마전에 중고로 팔아버렸는뎅... 한번은 읽고 팔걸 그랬네요.. ㅠ.ㅠ
    그외 좋은책 소개 감사합니다. 마지막에 소개하신 "불확실성과..." 요책이 땡기네요. ^^;

    • Favicon of http://moova.tistory.com BlogIcon MOOVA 무바㏇

      2010.08.28 15:36 신고 [수정/삭제]

      안녕하세요.~ 블로그 잘 보고 있구요.서영아빠님께서 제공해주신 서비스 아주 잘 이용하고 있습니다. ㅎ
      진정한 아키텍트의 길이란 진정 어렵고 험난한것 같아요. 쩝..

댓글을 남겨주세요.

Spring Security - URL 권한을 DB로 관리하기 2.

Posted at 2010.07.18 10:10 // in OpenSource // by MOOVA 무바㏇
필자는 그동안 경험했던 정보나 팁들, 또는 지식을 언제부터인가 온라인보다 오프라인으로 공유하는 것을 즐겨했습니다.
상당수가 프로젝트 보안이 걸려있는 문제이기도 하겠지요, 그 모든 부분을 온라인에 공유할 수 없는 심정, 이루 말할 수 없겠죠?
오픈소스와 관련된 사항도 프로젝트와 연관이 있으면 보안이라는 타이틀이 걸려있습니다. 하지만 공개할 것은 공개하자라는 근본 원칙은 항상 마음속에 간직하고 있습니다.
"버려야 새로운 것을 얻는다." 바로 이 정신. 참 아릅답습니다.~~


그림1. 커스터마이징 할 filterSecurityInterceptor의 인터페이스와 클래스 사용도입니다.


그림2. FilterSecurityInterceptor가 의존하는 두개의 매니저 클래스 ( Authentication Manager, AccessDecision Manager )

FilterSecurityInterceptor는 Spring Security의 중요 필터중 하나입니다. FilterSecurityInterceptor는 AuthenticationManager를 의존하며 User와 관련된 (인증 Authentication) 프로세스를 수행하고, 동시에 수행될 자원에 인가여부를 따지는 AccessDecisionManager를 의존하여 투표를 실시합니다.

<beans:bean id="filterSecurityInterceptor"
class="org.springframework.security.intercept.web.FilterSecurityInterceptor"
autowire="byType">
<custom-filter before="FILTER_SECURITY_INTERCEPTOR" />
<beans:property name="authenticationManager" ref="authenticationManager"></beans:property>
<beans:property name="accessDecisionManager" ref="accessDecisionManager" />
<beans:property name="objectDefinitionSource" >
                    <security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
                    <security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
             </beans:property>
</beans:bean>

FilterSecurityInterceptor의 objectDefinitionSource필드를 커스터마이징 해야합니다. 바로 이 부분이 앞에서 모델링한 테이블과 연동을 해야 할 부분입니다. 위의 objectDefinitionSource를 다음과 같이 바꾸어 줍니다.

<beans:property name="objectDefinitionSource"  ref="coolInvocationDefinitionSource"/>

objectDefinitionsource에 reference될 bean을 등록해야합니다.

<beans:bean id="coolInvocationDefinitionSource"
class="com.moova.secure.filterInvocation.CoolObjectDefinitionSourceFactoryBean">
<beans:property name="dataSource" ref="springSecurityDataSource" />
<beans:property name="resourceQuery"
value="
                                 SELECT URL.URL_SPRING, R.NAME
FROM ROLE ROLE JOIN URL_ROLE UR ON ROLE.ID = UR.ROLE_ID JOIN PROGRAM ON PROGRAM.ID = UR.PROGRAM_ID JOIN URL_REPOSITORY REPO ON PROGRAM.ID = REPO.ID
        " />
</beans:bean>

FilterSecurityInterceptor의 objectDefinitionSource의 API를 살펴보면 다음과 같이 setter injection으로 되어 있는 것을 볼 수 있습니다.

Spring Security 2.0

Spring Security 3.0
 SecurityMetadataSource obtainSecurityMetadataSource() 
           
 void setObjectDefinitionSource(FilterInvocationSecurityMetadataSource newSource) 
          Deprecated. use setSecurityMetadataSource instead
 void setObserveOncePerRequest(boolean observeOncePerRequest) 
           
 void setSecurityMetadataSource(FilterInvocationSecurityMetadataSource newSource) 

Spring Security 2.0 과 3.0 API를 살펴보면 크게 변화된 부분이 바로 이 objectDefinitionSource입니다. 3.0에선 objectDefinitionSource가 deplecated되었습니다. 이것이 securitymetadataSource로 변경이 되어 있네요. 2.0의 objectDefinitionSource의 Type은 FilterInvocationDefinitionSource 이고 3.0의 objectDefinitionSource의 Type은 FilterInvocationSecurityMetadataSourcen 인터페이스입니다.

이를 확인하고 각 버전에 따라 작성해야하는 클래스가 다를 수 있다는 것에 주목해 주십시오. 여기선 그대로 objectDefinitionSource를 사용합니다.

새로 제작할 CoolObjectDefinitionSourceFactoryBean는 FactoryBean을 implements합니다. FactoryBean을 implements 하면 어떤 객체라도 Spring lifecycle안에서 DI할 수 있게 해줍니다. 이는 단순 객체가 아닌 Factory 클래스로써 getObject()와 getObjectType()를 구현해 주기만 하면 새롭게 사용할 클래스를 반환시켜줍니다. 추가로 데이터베이스와 연계가 필요하니  "org.springframework.jdbc.core.support.JdbcDaoSupport"를 상속합니다.

사용할 구조

public class CoolObjectDefinitionSourceFactoryBean extends JdbcDaoSupport implements FactoryBean {
private String resourceQuery;

public boolean isSingleton() {
return true;
}

public Class getObjectType() {
return FilterInvocationDefinitionSource.class;
}

public Object getObject() {
return new DefaultFilterInvocationDefinitionSource(
this.getUrlMatcher(), this.buildRequestMap());
}
}

데이터베이스 연계부분은 MappingSqlQuery을 사용합니다. MappingSqlQuery 사용법은 여기를 참조해 주세요.

private class UrlRepository {
private String url;
private String role;

public UrlRepository(String url, String role) {
this.url = url;
this.role = role;
}

public String getUrl() {
return url;
}

public String getRole() {
return role;
}
}

private class UrlRepositoryMapping extends MappingSqlQuery {
protected UrlRepositoryMapping(DataSource dataSource, String resourceQuery) {
super(dataSource, resourceQuery);
compile();
}

protected Object mapRow(ResultSet rs, int rownum) throws SQLException {
String url = rs.getString(1);
String role = rs.getString(2);
UrlRepository resource = new UrlRepository(url, role);

return resource;
}
}

"com.moova.secure.filterInvocation.CoolFilterInvocationDefinitionSourceFactoryBean"의 원본 파일

더보기




executeResourceMap()메소드에서 URL과 ROLE 관련된 매핑부분을 key와 Value로 조합해야 합니다. 
DefaultFilterInvocationDefinitionSource의 두 번째 인자는 LinkedHashMap입니다. 
당연히 HampMap값을 넘겨주어야 하기 때문에 buildRequestMap에서는 LinkedHashMap를 new해서 반환해 주고 있습니다. 
DefaultFilterInvocationDefinitionSource의 첫 번째 인자는 AntUrlPathMatcher를 new해서 주입하고 있습니다.

스키마를 새로 개정하거나 생성해서 사용해도 무방합니다.
하지만 URL과 Role에 대한 모델링 연관은 그다지 바뀔게 없다고 봅니다.


저작자 표시 비영리 변경 금지
신고
블로그코리아에 블UP하기

댓글을 남겨주세요.

Spring Security - URL 권한을 DB로 관리하기 1.

Posted at 2010.07.18 10:08 // in OpenSource // by MOOVA 무바㏇
필자는 오픈소스나 자/타 제품을 접할 때 먼저 해당 제품의 생명주기(LifeCycle)을 먼저 파악합니다. 서로 연결된 인터페이스나 외부에 공개된 컴포넌트의 연관관계를 파악하고, 자주 사용하는 기능이나 중요하다고 생각되는 기능이 생명주기에 의존되어 있는지를 파악합니다. 전체 생명주기나 구조적 관점을 늘 중요시 하다보면, 치명적인 이슈를 제외한 세부적인 기술이슈까지도  그때 그때 처리할 수 있으리라 봅니다.
<http auto-config='true'>
    <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
    <intercept-url pattern="/**" access="ROLE_USER" />
    <form-login/>
    <logout logout-success-url="/pages/logout-redirect.jsp"
invalidate-session="true" />
    <remember-me key="moovaSecureRMKey" user-service-ref="userDetailsService" />
</http>


Spring Security에서 url path에 대한 권한 부여는 보통 위와 같이 설정을 해야합니다. (굵게 표기한 부분)
( 권한을 가지고 있는 사용자가 요청한 url 패턴을 기준으로, 해당 자원을 접속할 수 있는지를 따지게 하여 주는 설정입니다. ) 하지만 안타깝게도 보통 실무에서는, url path나 문서 조회권한에 관련된 설정 파일은 따로 관리하지 않습니다. 

User,Member,Group등 중요 인증 및 인가에 관련된 테이블을 데이터베이스로 관리한다면 URL 권한도 데이터베이스로 관리되어야 차 후 유지보수나 확장에도 이점을 얻을 수 있습니다. Spring Security에선 위의 intercept-url설정이 기본기능으로 구성되어 있습니다만, 이것을 데이터베이스로의 관리방법으로 변경해 보도록 할까 합니다.

하고자 하는것은 매우 단순합니다. Spring Security의 중요 Filter중 하나인 FilterSecurityInterceptor의 objectDefinitionSource를 커스터마이징 할 objectDefinitionSource로 바꿔치기하는 것입니다.



1. 테이블 구축


그림1. 실제 실무에서 사용된 인증/인가와 관련된 테이블 ( 축소공개형 ) 



실제 Magpie 오픈소스로 구축중인 테이블 스키마의 축소 일부입니다. 
User와 Role N:N관계, Role과 Program도 N:N관계, Program과 Url_Repository는 1:1관계로 되어 있습니다.
Role과 Url_Repository를 N:N관계로 모델링 해도 무방하지만 보통 URL은 동적인 속성이 강한 부분이니 카테고리로 분류할 수 있는 Program이란 Entity를 따로 생성하여 url port같은 기능을 하도록 설정해 두었습니다.

사용해둘 데이터를 미리 뽑아 보고, 기존 설정에서 사용했던 포멧으로 데이터가 축출 가능한지 확인합니다.


그림 2. 기존 Spring Definition 설정 위치와 비교한 데이터의 위치.

2. 데이터 확인 및 데이터 추출
SELECT URL.URL_SPRING, R.NAME FROM ROLE ROLE JOIN URL_ROLE UR ON ROLE.ID = UR.ROLE_ID JOIN PROGRAM ON PROGRAM.ID = UR.PROGRAM_ID JOIN URL_REPOSITORY REPO ON PROGRAM.ID = REPO.ID RESULT : ROLE_USER | /** ROLE_ANONYMOUSLY | /** ROLE_ADMIN | /admin.jsp ROLE_USER | /login.jsp ROLE_ANONYMOUSLY | /login.jsp ROLE_MANAGER | /manager/index.jsp
"Spring Security URL 권한을 DB로 관리하기"에서 사전 준비해야 할 재료는 모두 준비된 상태입니다. 이제 Spring Security의 일부분을 커스터마이징해야 합니다. ( "org.springframework.security.intercept.web.FilterSecurityInterceptor" )

참고 문서 :  
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/springsecurity.pdf

저작자 표시 비영리 변경 금지
신고

'OpenSource' 카테고리의 다른 글

근무환경  (2) 2010.08.10
Spring Security - URL 권한을 DB로 관리하기 2.  (0) 2010.07.18
Spring Security - URL 권한을 DB로 관리하기 1.  (0) 2010.07.18
심심풀이 납품용  (2) 2010.06.05
[Guide] Vaadin Korean Guide (ver01)  (3) 2010.05.11
[Share Document Note] Evernote  (0) 2010.01.24
블로그코리아에 블UP하기

댓글을 남겨주세요.

티스토리 툴바