2011-11-30 37 views
5

Uygulamada tipik bir gereksinimimiz var.Yay Güvenliği Değişim yapılandırması

Biz iki Bahar Güvenlik yapılandırmaları vardır: 1. CAS Sunucusu 2. LDAP

Mademki artık CAS sunucusu kullanılabilir olup olmadığını kontrol veya olmasın ve CAS veya LDAP güvenlik yapılandırması ya kullanmak gerekir (NTLM) CAS sunucu kullanılabilirliğine dayalı.

Entrypoint url'sini dinamik olarak değiştirmeye çalışıyordum, ancak her iki yapılandırma dosyası da farklı fasülyeler/sınıflar kullanıyor.

Bunu başarmanın başka bir yolu var mı?

Lütfen bunu nasıl başarabiliriz ve nasıl yapalım?

Şimdiden teşekkürler.

Raj

cevap

7

Sen CAS Sunucusu LoginUrlAuthenticationEntryPoint için temsilci yukarı veya başka olsaydı standart CasAuthenticationEntryPoint için temsilci edecek bir DelegatingAuthenticationEntryPoint yaratabilir.

<sec:http entry-point-ref="delegateEntryPoint"> 
     ... 
    </sec:http> 
<bean id="delegateEntryPoint" class="sample.DelegatingAuthenticationEntryPoint"> 
    <constructor-arg> 
     <bean class="org.springframework.security.cas.web.CasAuthenticationEntryPoint" 
      p:serviceProperties-ref="serviceProperties" 
      p:loginUrl="https://example.com/cas/login" /> 
    </constructor-arg> 
    <constructor-arg> 
     <bean class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint" 
      p:loginFormUrl="/login"/> 
    </constructor-arg> 
</bean> 
: Uygulama Sonra aşağıdaki benzer giriş noktası ref özelliğini kullanarak DelegatingAuthenticationEntryPoint tel olur şu

public class DelegatingAuthenticationEntryPoint implements AuthenticationEntryPoint { 
    private AuthenticationEntryPoint casAuthenticationEntryPoint; 
    private AuthenticationEntryPoint ldapAuthenticationEntryPoint; 

    public DelegatingAuthenticationEntryPoint(AuthenticationEntryPoint casAuthenticationEntryPoint, 
     AuthenticationEntryPoint ldapAuthenticationEntryPoint) { 
     this.casAuthenticationEntryPoint = casAuthenticationEntryPoint; 
     this.ldapAuthenticationEntryPoint = ldapAuthenticationEntryPoint; 
    } 

    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) 
     throws IOException, ServletException { 
     if(casServerAvailable()) { 
      casAuthenticationEntryPoint.commence(request, response, authException); 
     } else { 
      ldapAuthenticationEntryPoint.commence(request, response, authException); 
     } 
    } 

    private boolean casServerAvailable() { 
     // TODO implement this method 
     return false; 
    } 
} 

gibi bir şey olur

İlgili konular