2016-12-13 10 views
1

私のサーバーにCASサーバーをインストールしました。 (Apache Tomcatでの戦争展開)。私はCASサーバー上のユーザー名とパスワードのようなユーザー情報を持っています。 (将来的には、ユーザ認証のためのLDAPまたは単純なリレーションシップデータベースに接続します。問題はここにあります。私はこのCASサーバを通して私の春のアプリケーションを認証したいのですが、春のセキュリティのための適切な設定が見つかりませんでした。ファイルには、次のとおりです。CASサーバー経由でSpring Webアプリケーションを認証する

 @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .csrf().disable() 
      .authorizeRequests() 
       .antMatchers("/assets","/css", "/js","/font-awesome","/bootstrap","/images").permitAll() 
       .antMatchers("/", "/home").authenticated() 
//    .antMatchers("/hi").access("hasRole('ROLE_SUBSCRIPTION') or hasRole('ROLE_ADMIN')") 
       .antMatchers("/edit").authenticated() 
//    .antMatchers("/playlists/*").authenticated() 
//    .antMatchers("/createplaylist").authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
      .logout() 
       .permitAll(); 
    } 

    @Bean 
    public ServiceProperties serviceProperties() { 
     ServiceProperties sp = new ServiceProperties(); 
     sp.setService(env.getRequiredProperty(CAS_SERVICE_URL)); 
     sp.setSendRenew(false); 
     return sp; 
    } 
    @Bean 
    public Set<String> adminList() { 
     Set<String> admins = new HashSet<String>(); 
     String adminUserName = env.getProperty(APP_ADMIN_USER_NAME); 

     admins.add("admin"); 
     if (adminUserName != null && !adminUserName.isEmpty()) { 
      admins.add(adminUserName); 
     } 
     return admins; 
    } 

    @Bean 
    public AuthenticationUserDetailsService<CasAssertionAuthenticationToken> customUserDetailsService() { 
     return new CustomUserDetailsService(adminList()); 
    } 
    @Bean 
    public CasAuthenticationProvider casAuthenticationProvider() { 
     CasAuthenticationProvider casAuthenticationProvider = new CasAuthenticationProvider(); 
//  casAuthenticationProvider.setAuthenticationUserDetailsService(customUserDetailsService()); 
//  casAuthenticationProvider.setServiceProperties(serviceProperties()); 
     casAuthenticationProvider.setTicketValidator(cas20ServiceTicketValidator()); 
//  casAuthenticationProvider.setKey("an_id_for_this_auth_provider_only"); 
     return casAuthenticationProvider; 
    } 
    @Bean 
    public Cas20ServiceTicketValidator cas20ServiceTicketValidator() { 
     return new Cas20ServiceTicketValidator(env.getRequiredProperty(CAS_URL_PREFIX)); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
//  auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN"); 
     auth.authenticationProvider(casAuthenticationProvider()); 
    } 

答えて

0

kaveh.n @私はあなたが403を取得している願っていますがアクセス中にエラーが発生しましたあなたのサービスを歌いなさい。これが問題であれば、認証エントリポイントは設定の欠落部分です。まあ、私はちょうど2つの動きと春のGitHub上でCASクライアントのための簡単な自動設定を見つけ http://docs.spring.io/spring-security/site/docs/3.1.4.RELEASE/reference/cas.html#cas-how-it-works

関連する問題