小编Fra*_*ank的帖子

使用@PreAuthorize时,Spring Security返回404而不是403

经过几天的努力(搜索类似的问题,进行试验和错误),我很想放弃......

所以问题是我有一个基于 Spring Boot 的 REST 服务,使用 Spring Security 和 JWT 进行身份验证。现在我想确保某些方法只能由授权人员使用@PreAuthorize-annotation 调用。这似乎部分有效,因为 Spring 没有调用该方法,而是返回 404。我本来期望返回 403。

我已经阅读了这个问题并尝试了那里给出的答案,但没有帮助。我已@EnableGlobalMethodSecurity(prePostEnabled = true)按照其他地方的建议将 -Annotation 从 SecurityConfiguration 移至 Application 类,但它仍然不起作用。

我的安全配置如下所示:

@Configuration
@Profile("production")
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Value("${adDomain}")
private String adDomain;

@Value("${adUrl}")
private String adUrl;

@Value("${rootDn}")
private String rootDn;

@Value("${searchFilter}")
private String searchFilter;

private final AuthenticationManagerBuilder auth;

private final SessionRepository sessionRepository;

@Autowired
public SecurityConfiguration(AuthenticationManagerBuilder auth, SessionRepository sessionRepository) {
    this.auth = auth;
    this.sessionRepository …
Run Code Online (Sandbox Code Playgroud)

java spring-security spring-boot

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

在 Spring Boot 应用程序中使用 Azure KeyVault 作为数据库密码

我正在开发一个应该部署到 Azure 的 Spring Boot 应用程序。使用以下依赖项,我设法将 KeyVault 中的机密用于敏感应用程序属性:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-keyvault-secrets-spring-boot-starter</artifactId>
        <version>2.1.6</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

通过设置 popertyazure.keyvault.uri=https://my-vault.vault.azure.net并配置托管服务身份,我只需从 KeyVault 注入秘密名称,如下所示:

@Value("${ServerPassphrase}")
String serverPassphrase;
Run Code Online (Sandbox Code Playgroud)

现在我有一个数据库连接,并且密码具有常用的密钥spring.datasource.password。遗憾的是,Azure KeyVault 中的秘密名称中不允许使用点。:-(

有没有一种简单的方法可以将点替换为 KeyVault 中允许的字符的破折号,或者我是否必须编写自定义属性解析器作为包装器?

configuration azure spring-boot azure-keyvault

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

从Jenkins CI推送到Nexus 3 NuGet存储库,而无需输入凭据

这让我发疯。我已经安装了Nexus 3 OSS,用作私有的NuGet存储库,并创建了一个用户仇敌。我以文档显示的方式为jenkins用户获得了一个ApiKey,现在我尝试使用

nuget push .\AMAP.*.symbols.nupkg -Source http://nexus.local:8081/repository/nuget-hosted/ -ApiKey <JenkinsApiKeyHere>
Run Code Online (Sandbox Code Playgroud)

但是,如果执行此操作,则会要求我输入用户名和密码。我尝试根据网络上的某些来源的建议将用户名和密码设置为我的配置,如下所示:

nuget sources update -Name my-nuget -username jenkins -password <supersecretjenkinspwd>
Run Code Online (Sandbox Code Playgroud)

但是仍然要求我输入用户名和密码!顺便说一句,已授予对nexus的匿名访问,如sonatype docs中所示。

从上面可以看到,我正在尝试通过jenkins构建服务器执行此操作,并且我已经尝试了nexus工件上传器插件,但未成功。NullPointer失败:

java.lang.NullPointerException
    at sp.sd.nexusartifactuploader.steps.NexusArtifactUploaderStep.getUsername(NexusArtifactUploaderStep.java:132)
Run Code Online (Sandbox Code Playgroud)

所以我认为它也有同样的问题。如何在没有用户交互的情况下将我的NuGet软件包推送到Nexus?

nuget jenkins nexus3

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