2017-04-20 7 views
1

キークローキングとスプリングセキュリティで私のバダジンアプリケーションを保護したいと思います。私は、 "キークローク - スプリング - セキュリティアダプター"を使用しようとします。 私の問題は、認証されていないユーザーにもアプリケーションを使用させたいが、機能は少ないことです。これはメソッドのセキュリティと、現在のユーザーがUI内に持つロールを確認することで行います。バダディとスプリングセキュリティ付きキークローズ

フィルタは、認証されていない要求を無視するように設定できますが、トークンが存在する場合は使用できますか?

ダニエル

+0

あなたはあなたの方法とUIに持っているものの例を提供してもらえますか?私はVaadinを使用していませんが、AFAIKはJavaを使用してすべて行われます(ビューのXMLベースの構造はありません)。 –

+0

はい、それはすべてJavaにあります。 1つのURLにマップされたvaadinサーブレットがあり、 "vaadin-pages"はブラウザにajaxによって送信されます – dve

+0

次に、スプ​​リングセキュリティを使用してロールにアクセスする標準的な方法を使用して、ビュー生成コードを、ユーザーがどのような種類のアクセスをしているかによって異なります。 –

答えて

1

おかげで何をしたいの実施例はpublic-access branch of this github projectで見つけることができます。それはVaadin 8を使用します。本質的には

、次のことができ、特定の部品のためのセットアップアプリケーションはすなわちアクセス可能に認証されていないユーザーに、部分的にパブリックにすると以下のように、他人のログインが必要です。

@Configuration 
@EnableWebSecurity 
@EnableVaadinSharedSecurity 
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, proxyTargetClass = true) 
public class SecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter { 
... 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http.httpBasic().disable(); 
    http.formLogin().disable(); 
    http.csrf().disable(); 
    http 
     .authorizeRequests() 
     .antMatchers("/vaadinServlet/UIDL/**").permitAll() 
     .antMatchers("/vaadinServlet/HEARTBEAT/**").permitAll() 
     .anyRequest().permitAll(); 
    http 
     .logout() 
     .addLogoutHandler(keycloakLogoutHandler()) 
     .logoutUrl("/sso/logout").permitAll() 
     .logoutSuccessUrl("/"); 
    http 
     .addFilterBefore(keycloakPreAuthActionsFilter(), LogoutFilter.class) 
     .addFilterBefore(keycloakAuthenticationProcessingFilter(), BasicAuthenticationFilter.class); 
    http 
     .exceptionHandling() 
     .authenticationEntryPoint(authenticationEntryPoint()); 
    http 
     .sessionManagement() 
     .sessionAuthenticationStrategy(sessionAuthenticationStrategy()); 
    } 
... 
} 

どこ行http.anyRequest().permitAll();が最も重要ですすべての要求を許可するようにフィルタを構成します。これを更新して、特定のURLへのパブリックアクセスのみを許可することもできます。

メソッド/ビュー/コンポーネントで春のセキュリティ注釈を使用して、きめ細かなアクセス制御を構成できます。例えば:

@SpringComponent 
@Secured("ROLE_ANONYMOUS") 
public class LoginOperation implements Runnable { 
    @Override 
    public void run() { 
    // login logic 
    } 
} 

@Secured("ROLE_USER") 
public class LogoutOperation implements Runnable {  
    @Override 
    public void run() { 
    // logout logic 
    } 
} 
関連する問題