小编aru*_*nan的帖子

如何设计一个好的JWT认证过滤器

我是JWT的新手.网上没有太多的信息,因为我作为最后的手段来到这里.我已经使用spring会话使用spring security开发了一个spring boot应用程序.现在我们将转向JWT而不是春季会议.我找到了很少的链接,现在我可以验证用户并生成令牌.现在困难的部分是,我想创建一个过滤器,它将验证对服务器的每个请求,

  1. 过滤器如何验证令牌?(只是验证签名就够了吗?)
  2. 如果其他人盗取了令牌并进行了休息通话,我将如何验证.
  3. 我如何绕过过滤器中的登录请求?因为它没有授权标题.

spring jwt spring-boot

30
推荐指数
2
解决办法
2万
查看次数

如何使用Websocket和Spring安全性处理访问被拒绝异常

我将 spring security 与 Websocket 一起使用,我有以下方法,

@PreAuthorize("hasAuthority('ROLE_CREATE_USER')")
@MessageMapping("/cashDeposit")
public void cashDeposit(CashDepositRequest cashDepositRequest) {
Run Code Online (Sandbox Code Playgroud)

我有 websocket 安全配置。现在的问题是,当访问被拒绝时,它会抛出异常,

org.springframework.security.access.AccessDeniedException: Access is denied
at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:84) ~[spring-security-core-4.1.1.RELEASE.jar:4.1.1.RELEASE]
at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:233) ~[spring-security-core-4.1.1.RELEASE.jar:4.1.1.RELEASE]
Run Code Online (Sandbox Code Playgroud)

我搜索了 Stackoverflow,发现大多数问题都与 Servlet(HTTPServletRequest/Response)相关,而不是与 Websocket 相关。

请让我知道如何处理 websocket 的 AccessDeniedException 以及如何向用户发送 403 禁止的 websocket 消息。

更新

我的安全配置

@Configuration
public class WebSocketSecurityConfig extends          
AbstractSecurityWebSocketMessageBrokerConfigurer {

@Override
protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {

    messages.simpMessageDestMatchers("/topic/**").permitAll()
            .anyMessage().authenticated();
}
@Override
protected boolean sameOriginDisabled() {
    //disable CSRF for websockets for now...
    return true;
}
}
Run Code Online (Sandbox Code Playgroud)

我的其余服务的安全配置,

    @Override
protected void configure(HttpSecurity http) throws …
Run Code Online (Sandbox Code Playgroud)

spring spring-security spring-websocket

5
推荐指数
1
解决办法
2681
查看次数

编写自定义 Kafka 连接单消息转换

我已经配置了一个 kafka 连接 Mongodb 接收器,我想通过实现一些自定义逻辑来转换消息。

Kafka connect 是否仅限于内置 SMT(或者)是否可以编写自定义 SMT。如果不是,我怎样才能实现这一目标?通过溪流?

apache-kafka apache-kafka-connect

3
推荐指数
1
解决办法
8922
查看次数

与 AVRO 相比,在 kafka 流中使用 JSON 序列化器是否会导致性能下降?

我在 Kafka Streams 应用程序中使用以下 JSON 配置,

properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,
            Serdes.String().getClass());
properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,
            GenericJSONSerde.class);
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
            com.buy.json.JsonSerializer.class);
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
            com.buy.json.JsonDeserializer.class);
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
            com.buy.json.JsonSerializer.class);
Run Code Online (Sandbox Code Playgroud)

为了衡量性能,我删除了所有逻辑以及从 IN 主题收到的所有内容,我只是将其推送到 OUT 主题。处理35万条记录需要3分钟

但当我使用 AVRO 时,同一个流应用程序只需 1 分钟即可处理 300 万条记录。这是我的 AVRO 配置,

  `properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,
            Serdes.String().getClass());
    properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,
            GenericAvroSerde.class);
    properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
            io.confluent.kafka.serializers.KafkaAvroSerializer.class);
    properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
            io.confluent.kafka.serializers.KafkaAvroSerializer.class);
    properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
            io.confluent.kafka.serializers.KafkaAvroDeserializer.class);
    properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,
            io.confluent.kafka.serializers.KafkaAvroDeserializer.class);` 
Run Code Online (Sandbox Code Playgroud)

我正在编写的流应用程序应该支持 AVRO/JSON。我将在启动流应用程序时决定这一点。

我的问题是:在 Streams 应用程序中使用 JSON 会影响性能吗?请澄清。

json apache-kafka apache-kafka-streams

3
推荐指数
1
解决办法
5552
查看次数

在Oracle DB中获取数据太慢(查询比较)

我遇到了以下问题:我有一个超过1,000,000,000个数据的表.现在我运行以下查询(acc_no是主键):

select acc_no from user where acc_no between 753976276998100 and 78776276998199
Run Code Online (Sandbox Code Playgroud)

上述查询在不到一秒的时间内运行并获取了100,000条记录

但是如果我在同一个查询中再添加一列("service_no"),

select acc_no,service_no from user where acc_no between 753976276998100 and 78776276998199
Run Code Online (Sandbox Code Playgroud)

..这花了一分多钟.这是为什么?为什么第一个查询花了不到一秒钟,第二个查询花了不到一分钟?

仅供参考:service_no是一个NUMBER列

oracle

1
推荐指数
1
解决办法
2618
查看次数