Java tutorial
package com.orange.clara.tool.config; import com.orange.clara.tool.model.EnumOauthProvider; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; import org.springframework.security.oauth2.common.OAuth2AccessToken; import org.springframework.security.oauth2.provider.OAuth2Authentication; import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; /** * Copyright (C) 2016 Orange * <p> * This software is distributed under the terms and conditions of the 'Apache-2.0' * license which can be found in the file 'LICENSE' in this package distribution * or at 'https://opensource.org/licenses/Apache-2.0'. * <p> * Author: Arthur Halet * Date: 24/06/2016 */ @Configuration public class OauthProviderConfig { @Value("${oauth.provider.type:uaa}") private String oauthProviderType; @Bean @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) public OAuth2AccessToken getOAuth2AccessToken() { OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext() .getAuthentication(); final OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) oAuth2Authentication.getDetails(); return new DefaultOAuth2AccessToken(details.getTokenValue()); } @Bean @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) public UsernamePasswordAuthenticationToken getOAuth2Authentication() { OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext() .getAuthentication(); return (UsernamePasswordAuthenticationToken) oAuth2Authentication.getUserAuthentication(); } @Bean public EnumOauthProvider oauthProvider() { return EnumOauthProvider.valueOf(this.oauthProviderType.toUpperCase()); } }