문제

CAS 3 Spring 3.2와 Spring Security 3.2가 MySQL 데이터베이스와 함께 Tomcat 7에서 실행됩니다.

우리는 CAS와 함께 MySQL 데이터베이스를 사용하여 사용자를 인증 한 다음 성공 후 속성을 전달하고 Say "SSO"라는 데이터베이스에서 해당 세부 정보를 얻습니다.

<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">

    <constructor-arg index="0" ref="dataSource"/>
    <constructor-arg index="1" value="select * from user where {0}" />
    <property name="queryAttributeMapping">
        <map>
            <entry key="username" value="user_name" />
        </map>
    </property>

    <property name="resultAttributeMapping">
        <map>
            <entry key="user_name" value="username" />
            <entry key="full_name" value="fullname" />
        </map>
    </property>
</bean>

그 후 우리가하고 싶은 것은 해당 속성에서 사용자 이름을 얻은 다음 "앱"이라는 응용 프로그램 특정 데이터베이스로 이동하는 것입니다.

따라서 우리가 원하는 것은 성공적인 인증 후 CAS로부터 사용자 이름을 얻은 다음 데이터베이스에서 역할을 얻는 것입니다.

어떻게 올바르게 할 수 있습니까?

업데이트

좋아, 지금 내가 지금까지 시도한 것은 실제로 모른다.

나는 구현했다 UserDetailsService 그리고 나는 a UserEntityDetails 내 확장 UserEntity 그리고 구현 UserDetails, 그 다음 나는 나의 것을 사용했다 UserDetailsService 내 맞춤형 클래스를로드합니다.

그런 다음 내 XML에서 나는 이것을 만들었다

<security:authentication-manager alias="authenticationManager">
        <security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
    </security:authentication-manager>

이것이 올바른 방법입니까?

도움이 되었습니까?

해결책

내가 당신의 질문을 오해하지 않는 한, 당신이 요구하는 것은 정상적인 사용 패턴입니다 - CasAuthenticationProvider a로 구성됩니다 UserDetailsService CAS가 아닌 로컬 데이터베이스의 역할을로드합니다.

당신이 CAS 샘플 응용 프로그램 구성, 당신은 단순히 그것을 교체합니다 userService 애플리케이션 별 데이터베이스에서 사용자 정보를로드 한 자체 구현이있는 Bean.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top