おかげで何をしたいの実施例は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
}
}
あなたはあなたの方法とUIに持っているものの例を提供してもらえますか?私はVaadinを使用していませんが、AFAIKはJavaを使用してすべて行われます(ビューのXMLベースの構造はありません)。 –
はい、それはすべてJavaにあります。 1つのURLにマップされたvaadinサーブレットがあり、 "vaadin-pages"はブラウザにajaxによって送信されます – dve
次に、スプリングセキュリティを使用してロールにアクセスする標準的な方法を使用して、ビュー生成コードを、ユーザーがどのような種類のアクセスをしているかによって異なります。 –