代码:spring-security-oauth2.0-example
注意:前端获取code可以不通过后端,也就是前端直接和wechat联系获取code,然后前端再把code返回后端;甚至再implicit模式下前端直接获取access_token都不需要后端参与,这种需要保证应用处于信任的环境中。
另外,关于security配置跨域问题:http.cors();
必须显式注明,配合CorsConfigurationSource
的Bean
,不然即使在web里面配置了跨域,security这里依然会cors error。代码里面有注明。
Spring security 的filter顺序,参看spring security官网,重点看Oauth2.0相关的。
ForceEagerSessionCreationFilter
ChannelProcessingFilter
WebAsyncManagerIntegrationFilter
SecurityContextPersistenceFilter
HeaderWriterFilter
CorsFilter
CsrfFilter
LogoutFilter
OAuth2AuthorizationRequestRedirectFilter
Saml2WebSsoAuthenticationRequestFilter
X509AuthenticationFilter
AbstractPreAuthenticatedProcessingFilter
CasAuthenticationFilter
OAuth2LoginAuthenticationFilter
Saml2WebSsoAuthenticationFilter
UsernamePasswordAuthenticationFilter
OpenIDAuthenticationFilter
DefaultLoginPageGeneratingFilter
DefaultLogoutPageGeneratingFilter
ConcurrentSessionFilter
DigestAuthenticationFilter
BearerTokenAuthenticationFilter
BasicAuthenticationFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
JaasApiIntegrationFilter
RememberMeAuthenticationFilter
AnonymousAuthenticationFilter
OAuth2AuthorizationCodeGrantFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
SwitchUserFilter