Skip to content

Instantly share code, notes, and snippets.

View bvulaj's full-sized avatar
🏠
Working from home

Brandon Vulaj bvulaj

🏠
Working from home
View GitHub Profile
@bvulaj
bvulaj / SecurityConfiguration.java
Last active December 15, 2020 16:38
Multiple Oauth2 Providers in Spring Security
@Autowired
private FacebookPrincipalExtractor facebookPrincipalExtractor;
@Autowired
private FacebookAuthoritiesExtractor facebookAuthoritiesExtractor;
@Autowired
private GooglePrincipalExtractor googlePrincipalExtractor;
@Autowired
private GoogleAuthoritiesExtractor googleAuthoritiesExtractor;
@Bean
HG / Mercurial
  • Pros
    • Great set of client-tools
    • History is absolutely sacred
      • Maintains a guaranteed accurate history
      • No modification of history allowed
    • Quick learning curve due to commonality with SVN commands and straight-forward functionality
    • Runs cleanly under all operating systems
    • Mercurial does not require repository maintenance.
  • Cons
@bvulaj
bvulaj / CrossDomainCookieCsrfTokenRepository.java
Created July 27, 2017 03:22
The Cookie based, provided implementation of CsrfTokenRepository, CookieCsrfTokenRepository, does not allow setting the domain or domain pattern, so it is not possible to use the cookie across sub-domains. This implementation, which assumes `httpOnly=false` at this time, allows you to customize the cookie's domain as you would with `org.springfr…
package com.phrankly.commons.security;
import java.lang.reflect.Method;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Autowired
private PrincipalExtractor principalExtractor;
private Filter ssoFilter() {
OAuth2ClientAuthenticationProcessingFilter facebookFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/facebook");
OAuth2RestTemplate facebookTemplate = new OAuth2RestTemplate(facebook(), oauth2ClientContext);
facebookFilter.setRestTemplate(facebookTemplate);
UserInfoTokenServices tokenServices = new UserInfoTokenServices(facebookResource().getUserInfoUri(), facebook().getClientId());
tokenServices.setRestTemplate(facebookTemplate);
tokenServices.setPrincipalExtractor(principalExtractor);
@bvulaj
bvulaj / InnerClassProperties.java
Last active March 14, 2018 22:19
Nested Configuration Objects w/ an Inner Class
@Component
@ConfigurationProperties("props")
public class InnerClassProperties {
private InnerClass innerClass;
private InnerClass otherInnerClass;
public static class InnerClass {
private String name;
}
}
@bvulaj
bvulaj / NonInnerClass.java
Last active March 14, 2018 22:19
Nested Configuration Objects w/o an Inner Class
public class NonInnerClass {
private String name;
}
@bvulaj
bvulaj / AppConfig.java
Last active March 14, 2018 22:18
Third Party Injection
@Configuration
public class AppConfig {
@Bean
@ConfigurationProperties("provider")
public ProviderInfo providerInfo() {
return new ProviderInfo();
}
}
@bvulaj
bvulaj / AppConfig.java
Last active March 14, 2018 22:18
Simple Field Injection w/ @value
@Configuration
public class AppConfig {
// Using SpEL
@Value("#{providerInfo.name ?: 'bar'}")
private String providerName;
// Injecting a Duration w/ a default
@Value("${timeout:500ms}")
private Duration timeout;
}
@bvulaj
bvulaj / AppConfig.java
Last active March 14, 2018 22:18
Configuring Multiple Objects of the Same Type
@Configuration
public class AppConfig {
@Bean
@ConfigurationProperties("foo")
public ProviderInfo fooProviderInfo() {
return new ProviderInfo();
}
@Bean
@ConfigurationProperties("bar")
@bvulaj
bvulaj / ProviderInfo.java
Created March 14, 2018 22:17
Basic Type Safe Injection
@Component
@ConfigurationProperties("provider")
public class ProviderInfo {
private String name;
private boolean enabled;
private List<String> roles;
}