All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pig4cloud.pigx.common.security.component.PigxResourceServerConfigurerAdapter Maven / Gradle / Ivy

There is a newer version: 3.10.0
Show newest version
/*
 *    Copyright (c) 2018-2025, lengleng All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: lengleng ([email protected])
 */

package com.pig4cloud.pigx.common.security.component;

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
import org.springframework.security.oauth2.provider.token.DefaultAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.RemoteTokenServices;
import org.springframework.security.oauth2.provider.token.UserAuthenticationConverter;
import org.springframework.web.client.RestTemplate;

/**
 * @author lengleng
 * @date 2018/6/22
 * 

* 1. 支持remoteTokenServices 负载均衡 * 2. 支持 获取用户全部信息 */ @Slf4j public class PigxResourceServerConfigurerAdapter extends ResourceServerConfigurerAdapter { @Autowired protected ResourceAuthExceptionEntryPoint resourceAuthExceptionEntryPoint; @Autowired protected RemoteTokenServices remoteTokenServices; @Autowired private PermitAllUrlProperties permitAllUrlProperties; @Autowired private RestTemplate lbRestTemplate; /** * 默认的配置,对外暴露 * * @param httpSecurity */ @Override @SneakyThrows public void configure(HttpSecurity httpSecurity) { //允许使用iframe 嵌套,避免swagger-ui 不被加载的问题 httpSecurity.headers().frameOptions().disable(); ExpressionUrlAuthorizationConfigurer .ExpressionInterceptUrlRegistry registry = httpSecurity .authorizeRequests(); permitAllUrlProperties.getIgnoreUrls() .forEach(url -> registry.antMatchers(url).permitAll()); registry.anyRequest().authenticated() .and().csrf().disable(); } @Override public void configure(ResourceServerSecurityConfigurer resources) { DefaultAccessTokenConverter accessTokenConverter = new DefaultAccessTokenConverter(); UserAuthenticationConverter userTokenConverter = new PigxUserAuthenticationConverter(); accessTokenConverter.setUserTokenConverter(userTokenConverter); remoteTokenServices.setRestTemplate(lbRestTemplate); remoteTokenServices.setAccessTokenConverter(accessTokenConverter); resources.authenticationEntryPoint(resourceAuthExceptionEntryPoint) .tokenServices(remoteTokenServices); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy