Spring OAuth2是否提供了使用opaque或JWT令牌创建cookie的配置?到目前为止,我在Internet上找到的配置描述了为其创建授权服务器和客户端.在我的例子中,客户端是一个网关,Angular 4应用程序位于同一可部署的顶部.前端向网关发出请求,通过Zuul路由它们.使用@EnableOAuth2Sso,application.yml和WebSecurityConfigurerAdapter 配置客户端会生成所有必要的请求和重定向,将信息添加到SecurityContext但将信息存储在会话中,并将JSESSIONID cookie发送回UI.
是否需要任何配置或过滤器来创建带有令牌信息的cookie,然后使用我可以使用的无状态会话?或者我是否必须自己创建它,然后创建一个查找令牌的过滤器?
@SpringBootApplication
@EnableOAuth2Sso
@RestController
public class ClientApplication extends WebSecurityConfigurerAdapter{
@RequestMapping("/user")
public String home(Principal user) {
return "Hello " + user.getName();
}
public static void main(String[] args) {
new SpringApplicationBuilder(ClientApplication.class).run(args);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**").authorizeRequests()
.antMatchers("/", "/login**", "/webjars/**").permitAll()
.anyRequest()
.authenticated()
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
}
server:
port: 9999
context-path: /client
security:
oauth2:
client:
clientId: acme
clientSecret: acmesecret
accessTokenUri: http://localhost:9080/uaa/oauth/token
userAuthorizationUri: http://localhost:9080/uaa/oauth/authorize
tokenName: access_token
authenticationScheme: query
clientAuthenticationScheme: form
resource:
userInfoUri: http://localhost:9080/uaa/me
Run Code Online (Sandbox Code Playgroud) 是否可以通过@FeignClient创建@Configuration包含模拟版本的 bean 进行测试来覆盖通过注释创建的bean?
我已经尝试过了,但似乎@FeignClientbean 是最后创建的(或者我认为是这样),因为在我的测试中,我总是注入真实版本而不是模拟版本。在同一个配置文件中,我创建了另一个没有任何注释(除了@Component)的bean,通过使用真实的名称以相同的方式模拟,并且它完美地工作。
我试过用@MockBean它来模拟它并且它有效,但该项目有一些怪癖,这使得创建另一个 Spring 上下文破坏了测试。
谢谢。
编辑。实际上,我只是调试了测试并意识到,如果我使用与 Feign 客户端相同的名称,调试器甚至不会在@Configurationbean 中停下来创建模拟版本。将名称更改为其他名称可以正常工作,但它只会使用新名称创建另一个相同类型的 bean。我在这里缺少任何配置吗?
编辑 2. 这是一个示例代码。执行这个我有那个BarService是模拟版本,但FooService它是真实的。
@FeignClient(name = "fooService")
public interface FooService {
}
@Component
public class BarService {
}
@Configuration
public class ConfigClass {
@Bean
public FooService fooService() {
return Mockito.mock(FooService.class);
}
@Bean
public BarService barService() {
return Mockito.mock(BarService.class);
}
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
@SpringBootTest
public class TestClass {
@Autowired
private FooService fooService;
@Autowired …Run Code Online (Sandbox Code Playgroud) 我想实现一个 bean,其中我有一个TreeSet按排序顺序存储整数的 bean。使用此方法的唯一方法TreeSet是addValue向集合中添加一个新整数,以及使用中的getHighestValue方法返回集合中的最后一个值。last()SortedSet
这里有并发问题吗?我没有使用任何显式迭代器,因此在获取最高值时不应该出现任何并发问题,但我不知道如果ConcurrentModificationException两个线程尝试添加并获取最高值,最后一个方法是否会抛出任何或任何其他异常同一时间。
SNS 的 AWS 常见问题说:
问:消息会按照发布的确切顺序发送给我吗?
Amazon SNS 服务将尝试按照消息发布到主题的顺序传送来自发布者的消息。但是,网络问题可能会导致订阅者端出现乱序消息。
它是否适用于 SQS 消费者,特别是 FIFO SQS?我有一个用例,其中一个消费者需要维护发送消息的顺序。如果不是这种情况,我将需要使用其他东西。
java ×2
amazon-sns ×1
amazon-sqs ×1
collections ×1
concurrency ×1
feign ×1
fifo ×1
mockito ×1
spring ×1
unit-testing ×1