 Bridewell Theatre from 18th August to 4th September.
Join us for something truly beautiful in your lunchtime and you’re more than welcome to bring your lunch!
Audrey has studied both in France at Les Ateliers du Sudden and LAMDA in the UK. Previous Theatre includes LOVE SCENES Chris Mack Théâtre des Bêliers Parisiens, ROMANCE EN TABLEAUX Pascal Galaska Curial Center (Paris), PRINCESSE CLÉMENTINE Collective creation ABC Théâtre (Paris), JE SUIS TES YEUX Musée Bourdelle (Paris). Dance and Operetta includes PARTITA-S II Théâtre de Châtillon LES AVENTURES DU ROI PAUSOLE Conservatoire de Châtillon. Television includes LE PROF DE MA FILLE TF1 Production.
Jan studies ballet and contemporary dance at the Conservatoire de Strasbourg.  Dance includes ‘Peter’ in PETER AND THE WOLF for the Conservatoire de Strasbourg, THE TURKEY CARPET at the Cockpit Theatre, the BILLY ELLIOT PREVIEW at UGC and INCLINAISONS DÉCLINAISONS at the Conservatoire de Strasbourg. He has recently been awarded a bursary to study Dance full-time at the Hammond School starting in September 2015. Jan is also a keen sportsman and previously held the Junior Indoor Gold medal in triple jump for the Bas-Rhin region (2013).
Gabriel studies ballet and traditional dance at the Conservatoire de Strasbourg.  Dance includes THE TURKEY CARPET at the Cockpit Theatre, the BILLY ELLIOT PREVIEW at UGC, INCLINAISONS DÉCLINAISONS at the Conservatoire de Strasbourg and, most recently, LA STRADA with le ballet du Rhin at the Opéra du Rhin, Strasbourg.
Théâtre Volière is a touring theatre company, produced by the association Jolly Good Show. It develops new written and devised theatre, bringing artists from across Europe to work with artists and performers from Strasbourg and Alsace. In 2014 their production of POILU AND TOMMY was nominated for Off West End’s Production of the Year and received 5 star reviews. In 2013 Théâtre Volière performed ‘PREVERTS ANGELS in Strasbourg and at the Ledbury Poetry Festival in the UK, and THE TURKEY CARPET at The Cockpit Theatre, London & L’Espace Malraux, Geispolsheim.
Paul Meyr – Music and Sound Paul has worked for many years in experimental and community theatre, specialising in songwriting and incidental music for theatre. Previous work includes THE 20/20 PROJECT and THE INHERITANCE (for Interference Theatre Co-operative), THE YELLOW SANDS and THE GLASS-BLOWER WHO SUCKED (for Mahone Bay Theatre), PREVERTS ANGELS (for Theatre Voliere), WISH YOU WERE HERE and WATERLOO SUNSET (for Jolly Good Show). He is currently based in Kehl, Germany, where he devises multi-lingual performance projects for young people.
Rūta Irbīte – Designer graduated with a first class degrees in Performance Design and Practice at Central Saint Martin’s College of Art. Her work includes designs for Hansel and Gretel (promenade opera in collaboration with English Pocket Opera Company, Platform Theatre 2013), Breed (durational devised performance, Platform Theatre 2013) Yuko – The Table That Eats (experimental performance, Stoke Newington International Airport 2012). More recently Rūta has created an interactive installation for Laura Dajao’s Wild Card performance (Sadler’s Wells 2013) as well as shortlisted for the Linbury Prize for Stage Design 2013 with her design for Scottish Dance Theatre exhibited at the National Theatre.Q: Spring Secuirty Oauth 2 - multiple user authentication services My application provides oauth2 token service identical to this one provided in the following github project: https://github.com/iainporter/oauth2-provider
It is based on Spring Security OAuth2.
I provided my custom implementation of UserDetailsService:
<bean id="userService" class="org.example.core.service.DBUserServiceImpl" />

and the following user authentication manager:
<sec:authentication-manager alias="userAuthenticationManager">
    <sec:authentication-provider user-service-ref="userService">
        <sec:password-encoder ref="passwordEncoder" />
    </sec:authentication-provider>
</sec:authentication-manager>

Now I would like to provide other method of user authentication (other UserDetailsService), for example:
<bean id="otherUserService" class="org.example.core.service.LDAPUserServiceImpl" />

Unfortunately I didn't find a way how to do it in documentation. On the request level I would like to distinguish which method (which user service) to use by either:


*

*query parameter

*http header (e.g. RealmName)


A: You need to use DelegatingAuthenticationEntryPoint to configure multiple entry points. Which means you can have multiple ways of authenticating. Following is the sample code:
DBUser entry point:
public class DBUserAuthencticationEntryPoint extends BasicAuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest request,
            HttpServletResponse response, AuthenticationException authException)
            throws IOException, ServletException {
        super.commence(request, response, authException);
    }
}

LDAP entry point:
public class LDAPAuthencticationEntryPoint extends BasicAuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest request,
            HttpServletResponse response, AuthenticationException authException)
            throws IOException, ServletException {
         super.commence(request, response, authException);
    }
}

Then you need to create RequestMatchers to pick the correct entry point (based on header/realm name):
DBUser request matcher:
RequestMatcher dbUserMatcher = new RequestMatcher() {       
    @Override
    public boolean matches(HttpServletRequest request) {
        // Logic to identify a DBUser kind of reqeust
    }
};

LDAP user requset matcher:
RequestMatcher ldapMatcher = new RequestMatcher() {     
    @Override
    public boolean matches(HttpServletRequest request) {
        // Logic to identify a LDAP kind of reqeust
    }
};

Now we need to add these matchers and entry points to DelegatingAuthenticationEntryPoint. In runtime DelegatingAuthenticationEntryPoint picks up the entry point and does the authentication based on the matcher which return true.
DBUserAuthencticationEntryPoint dbUserEntryPoint = new DBUserAuthencticationEntryPoint();
LDAPAuthencticationEntryPoint ldapEntryPoint  = new LDAPAuthencticationEntryPoint();

LinkedHashMap<RequestMatcher,AuthenticationEntryPoint> entryPoints = new LinkedHashMap<RequestMatcher,AuthenticationEntryPoint>();
entryPoints.put(ldapMatcher, ldapEntryPoint);
entryPoints.put(dbUserMatcher, dbUserEntryPoint);

DelegatingAuthenticationEntryPoint delegatingAuthenticationEntryPoint  = new DelegatingAuthenticationEntryPoint(entryPoints);

Now map the DelegatingAuthenticationEntryPoint to HttpSecurity in the configure() method:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.
            authorizeRequests().
                regexMatchers("/login.*").permitAll().
                regexMatchers("/api.*").fullyAuthenticated().        
        and().
            formLogin().loginPage("/login").
        and().
            exceptionHandling().authenticationEntryPoint(delegatingAuthenticationEntryPoint);
    }
}

Configure the provider manager:
@Bean
public AuthenticationManager authenticationManager() {
    return new ProviderManager(Arrays.asList(provider1, provider2);
}


A: I found different solution than solution provided by Mithun.
Application context contains user authentication manager initiated with different authentication providers:
<sec:authentication-manager alias="userAuthenticationManager">
    <sec:authentication-provider ref="customerAuthProvider" />
    <sec:authentication-provider ref="adminAuthProvider" />
</sec:authentication-manager>

where customerAuthProvider and adminAuthProvider are extensions of DaoAuthenticationProvider with different userDetails Service:
<bean id="customerAuthProvider" class="org.example.security.authentication.provider.CustomerAuthenticationProvider">
    <property name="userDetailsService" ref="userService" />
    <property name="passwordEncoder" ref="passwordEncoder" />
</bean>

<bean id="adminAuthProvider" class="org.example.security.authentication.provider.AdminAuthenticationProvider">
    <property name="userDetailsService" ref="otherUserService" />
</bean>

All you need to do is to override "supports" method that indicates whether current authentication provider is