小编Jan*_*tze的帖子

Spring Boot 2.0禁用默认安全性

我想使用Spring Security进行JWT身份验证.但它带有默认身份验证.我试图禁用它,但是这样做的旧方法 - 禁用它application.properties- 在2.0中已弃用.

这是我试过的:

@Configuration
public class StackWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().disable();
        // http.authorizeRequests().anyRequest().permitAll(); // Also doesn't work.
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能简单地禁用基本安全性?

更新
可能很高兴知道我不使用web mvc而是web flux.

截图:
基本登录表单

spring-security spring-boot spring-security-rest spring-webflux

28
推荐指数
6
解决办法
4万
查看次数

针对API的Spring webflux自定义身份验证

我正在为Angular 5应用程序创建API.我想使用JWT进行身份验证.
我想使用spring security提供的功能,这样我就可以轻松地使用角色了.

我设法禁用基本身份验证.但是在使用时http.authorizeExchange().anyExchange().authenticated();我仍然会收到登录提示.
我想给403而不是提示.所以用"事物"(它是一个过滤器吗?)覆盖登录提示,检查Authorization标记的标题.

我只想在将返回JWT令牌的控制器中进行登录.但是我应该用什么Spring安全bean来检查用户凭据?我可以构建自己的服务和存储库,但我想尽可能使用spring security提供的功能.

这个问题的简短版本就是:
我如何定制spring security的身份验证?
我必须创建什么豆?
我在哪里放置配置?(我现在有一个豆子SecurityWebFilterChain)

我能找到的关于具有spring security的webflux身份验证的唯一文档是:https://docs.spring.io/spring-security/site/docs/5.0.0.BUILD-SNAPSHOT/reference/htmlsingle/#jc-webflux

authentication spring spring-security spring-webflux

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

从其他包访问主包

我想从另一个包访问主包,但这是不可能的,因为主文件不在目录中.我已经尝试将主文件放在一个目录中,但是当我尝试导入它时,我收到此错误:
import "../main" is a program, not an importable package

我想要这个的原因是因为我有一个tcp服务器和一个协同工作的网络服务器.Web服务器可以通过主程序包获取tcp服务器,tcp服务器可以通过主程序包获取Web服务器.

我已经让它与webserver和tcpserver相互阅读(中间没有主程序包),但是我想在一个地方保留应用程序的某些部分.

是我想要的东西(通过主包)?或者它只是愚蠢.

import program-entry-point package go

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

Spring webflux bean验证不起作用

我正在尝试在Webflux中使用bean验证.这是我到目前为止:

@PostMapping("contact")
fun create(@RequestBody @Valid contact: Mono<Contact>) : Mono<Contact> {
    return contact.flatMap { contactRepository.save(it) }
            .doOnError{ Error("test") }
}
Run Code Online (Sandbox Code Playgroud)

验证不起作用......我希望Error("test")会显示...

有人有一个有效的例子(Java或Kotlin)吗?

UPDATE

这是一个存储库,因此可以复制:https://github.com/jwz104/webflux-validation-test

请求:

curl --request POST \
  --url http://localhost:8080/tickets \
  --header 'content-type: application/json' \
  --data '{
    "email": "",
    "name": "",
    "message": ""
}'
Run Code Online (Sandbox Code Playgroud)

将联系人重命名为故障单,但一切都仍然相同.

java spring bean-validation kotlin spring-webflux

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

春天@Autowired和@Value属性不起作用

我想@Value在一个属性上使用,但我总是得到0(在int上).
但是在构造函数参数上它可以工作.

例:

@Component
public class FtpServer {

    @Value("${ftp.port}")
    private int port;

    public FtpServer(@Value("${ftp.port}") int port)
    {
        System.out.println(port); // 21, loaded from the application.properties.
        System.out.println(this.port); // 0???
    }
}
Run Code Online (Sandbox Code Playgroud)

该对象是spring管理的,否则构造函数参数将不起作用.

有谁知道导致这种奇怪行为的原因是什么?

java spring dependency-injection property-injection spring-boot

6
推荐指数
2
解决办法
4424
查看次数

Java ssh-rsa字符串到公钥

我想获取.pub文件内容的公钥.这是一个.pub文件内容(生成ssh-keygen)的示例:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBPL2s+25Ank3zS6iHUoVk0tS63dZM0LzAaniiDon0tdWwq4vcL4+fV8BsAEcpMeijS92JhDDc9FccXlHbdDcmd6c4ITOt9h9xxhIefGsi1FTVJ/EjVtbqF5m0bu7ruIMGvuP1p5s004roHx9y0UdHvD/yNWLISMhy4nio6jLailIj3FS53Emj1WRNsOrpja3LzPXzhuuj6YnD9yfByT7iGZipxkmleaXrknChPClLI9uhcqtAzBLdd0NVTJLOt/3+d1cSNwdBw9e53wJvpEmH+P8UOZd+oV/y7cHIej4jQpBXVvpJR1Yaluh5RuxY90B0hSescUAj4g/3HVPpR/gE7op6i9Ab//0iXF15uWGlGzipI4lA2/wYEtv8swTjmdCTMNcTDw/1huTDEzZjghIKVpskHde/Lj416c7eSByLqsMg2OhlZGChKznpIjhuNRXz93DwqKuIKvJKSnhqaJDxmDGfG7nlQ/eTwGeAZ6VR50yMPiRTIpuYd767+Nsg486z7p0pnKoBlL6ffTbfeolUX2b6Nb9ZIOxJdpCSNTQRKQ50p4Y3S580cUM1Y2EfjlfIQG1JdmTQYB75AZXi/cB2PvScmF0bXRoj7iHg4lCnSUvRprWA0xbwzCW/wjNqw6MyRX42FFlvSRrmfaxGZxKYbmk3TzBv+Fp+CADPqQm3OQ== test@test.com
Run Code Online (Sandbox Code Playgroud)

如果我是对的,这不是公钥,但可以从此字符串中获取公钥.

这个答案给出了我的问题 的答案/sf/answers/1357126221/
但答案似乎不起作用.我得到一个例外:

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
Run Code Online (Sandbox Code Playgroud)

在查看答案的评论时,我不是唯一有问题的人...

我该如何修复异常?或者是否有另一种方法从字符串中获取公钥?

java encryption ssh rsa public-key-encryption

6
推荐指数
2
解决办法
6135
查看次数

BCECPublicKey指纹

使用命令行连接到"新"SSH服务器时,将显示指纹:

无法建立主机'test.com(0.0.0.0)'的真实性.
ECDSA密钥指纹为SHA256:566gJgmcB43EXimrT0exEffxSd3xc7RBS6EPx1XZwYc.
您确定要继续连接(是/否)吗?

我知道指纹是公钥的SHA256哈希的Base64字符串.

我知道如何使用以下方法生成此指纹RSAPublicKey:

    RSAPublicKey publicKey = ...;

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);

    dataOutputStream.writeInt("ssh-rsa".getBytes().length);
    dataOutputStream.write("ssh-rsa".getBytes());
    dataOutputStream.writeInt(publicKey.getPublicExponent().toByteArray().length);
    dataOutputStream.write(publicKey.getPublicExponent().toByteArray());
    dataOutputStream.writeInt(publicKey.getModulus().toByteArray().length);
    dataOutputStream.write(publicKey.getModulus().toByteArray());

    MessageDigest digest = MessageDigest.getInstance("SHA256");
    byte[] result = digest.digest(byteArrayOutputStream.toByteArray());

    String fingerprint = Base64.getEncoder().encodeToString(result);
Run Code Online (Sandbox Code Playgroud)

但我怎么能这样做BCECPublicKey呢?

更新
我发现它BCECPublicKey根本不相似RSAPublicKey.我从来不知道SSH服务器公钥是ECDSA,客户端公钥是RSA.

字节结构的方式也是不同的.RSA公钥以头(ssh-rsa)开头.标头长度可以从前4个字节(readInt())中读取.但是,当我使用ECDSA执行此操作时,长度是表示标题的长度...

除了回答
要复制粘贴的东西:

    BCECPublicKey publicKey = ...;

    byte[] point = SubjectPublicKeyInfo.getInstance(ASN1Sequence.getInstance(publicKey.getEncoded())).getPublicKeyData().getOctets();

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);

    dataOutputStream.writeInt("ecdsa-sha2-nistp256".getBytes().length);
    dataOutputStream.write("ecdsa-sha2-nistp256".getBytes());
    dataOutputStream.writeInt("nistp256".getBytes().length);
    dataOutputStream.write("nistp256".getBytes());
    dataOutputStream.writeInt(point.length);
    dataOutputStream.write(point); …
Run Code Online (Sandbox Code Playgroud)

java ssh bouncycastle public-key

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

在WebFilter中更改ServerWebExchange响应的正文

我正在尝试在spring webflux中进行应用。但是我在文档中找不到很多东西。
我有一个Webfilter,我想在响应周围添加包装器。示例:
在以下情况下回复:

{
    "id": 1,
    "name": "asdf"
}
Run Code Online (Sandbox Code Playgroud)

之后的回应:

{
    "status": "success",
    "data": {
        "id": 1,
        "name": "asdf"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是当前的WebFilter:

@Component
public class ResponseWrapperFilter implements WebFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) {
        // Add wrapper to the response content...

        return webFilterChain.filter(serverWebExchange);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我找不到获取或编辑响应正文的方法。
如何更改中的响应输出WebFilter

spring spring-webflux spring-filter

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

如何使用Angular Material快餐栏检查解雇原因?

Angular Material文档中的snackbar示例中,操作设置为undo.我也想要一个撤销零食吧.

但是有一个问题.afterDismissed单击"关闭"按钮时会触发该事件,但也会在持续时间过后触发该事件.因此,我的表单清除按钮将清除表单并显示小吃栏,但在5秒后输入返回.

有没有办法检查撤消按钮是否调用了解雇?我不想使用自定义Snackbar,因为我必须重新制作零食吧设计......

snackbar angular-material2 angular

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

Apache SSHD客户端获取服务器公钥

我试图获取服务器的公钥.这是我试过的:

val serverKey = sshClient.connect("dyn mem", "localhost", "2222")
  .verify()
  .getSession()
  .getKex()
  .getServerKey()
Run Code Online (Sandbox Code Playgroud)

问题是得到的结果getServerKey()是null ...

如何使用Apache SSHD客户端获取SSH服务器的公钥.

java ssh openssh apache-mina sshd

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