Java tutorial
/* * Copyright (c) 20XX -2015 by Avaya Inc. All rights reserved. * Redistribution and use in source and binary forms of the software (Software?), with or without modification, are * permitted provided that the following conditions are met: * (a) Redistributions of source code must retain the above copyright notice and the entire license. * (b) Redistributions in binary form must reproduce the above copyright notice and this entire license in the * documentation and/or other materials provided with the distribution. * (c) Redistribution of the Software is solely for the purpose of initiating product provisioning when OneSource Cloud events happen. * (d) BY USING AND REDISTRIBUTING THE SOFTWARE, YOU, ON BEHALF OF YOURSELF AND THE * ENTITY FOR WHOM YOU USE THE SOFTWARE AGREE TO ALL THE TERMS AND CONDITIONS OF * THIS LICENSE AND CREATE A BINDING CONTRACT BETWEEN YOU AND AVAYA INC. * THIS SOFTWARE IS PROVIDED BY AVAYA INC. "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT * SHALL AVAYA INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.avaya.subMgmt.server; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.web.authentication.www.DigestAuthenticationEntryPoint; import org.springframework.security.web.authentication.www.DigestAuthenticationFilter; /** * This class is the Spring Security initializer and is used to configure Spring Security. Its only purpose currently * is to configure basic or digest authentication. It also supports configuration with no security. */ @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) public class SecurityConfigAdapter extends WebSecurityConfigurerAdapter { @Value("${auth.username}") private String username; @Value("${auth.password}") private String password; // Values here are "basic", "digest", or "none". @Value("${auth.type}") private String authType; @Override public void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser(username).password(password).roles("USER"); } @Override public void configure(HttpSecurity http) throws Exception { // Start configuration http.csrf().disable(); if ("basic".equals(authType)) { http.authorizeRequests().antMatchers("/**").authenticated().and().httpBasic(); } if ("digest".equals(authType)) { http.exceptionHandling().authenticationEntryPoint(digestEntryPoint()); http.authorizeRequests().antMatchers("/**").authenticated().and() .addFilter(digestAuthenticationFilter(digestEntryPoint())); } } // Beans for Digest Auth @Override @Bean public UserDetailsService userDetailsServiceBean() throws Exception { return super.userDetailsServiceBean(); } public DigestAuthenticationFilter digestAuthenticationFilter( DigestAuthenticationEntryPoint digestAuthenticationEntryPoint) throws Exception { DigestAuthenticationFilter digestAuthenticationFilter = new DigestAuthenticationFilter(); digestAuthenticationFilter.setAuthenticationEntryPoint(digestEntryPoint()); digestAuthenticationFilter.setUserDetailsService(userDetailsServiceBean()); return digestAuthenticationFilter; } @Bean public DigestAuthenticationEntryPoint digestEntryPoint() { DigestAuthenticationEntryPoint digestAuthenticationEntryPoint = new DigestAuthenticationEntryPoint(); digestAuthenticationEntryPoint.setKey("mykey"); digestAuthenticationEntryPoint.setRealmName("myrealm"); return digestAuthenticationEntryPoint; } }