java 如何从凭据管理器获取用户名和密码?

mwngjboj  于 2023-03-21  发布在  Java
关注(0)|答案(2)|浏览(170)

application.properties中,我想存储这些数据:

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=my-email
spring.mail.password=my-email-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

由于我的Git仓库是公开的,我不希望任何人看到我的电子邮件和密码。
因为我在Windows 11上,环境变量是一个选项。但是一旦我打开这个窗口,坐在我旁边的每个人都可以看到我的密码,因为它只是纯文本。
我希望我的密码是安全的,即使它只存储在我自己的计算机上。
因此,我认为在Windows上将详细信息存储在凭据管理器中而不是环境变量是一种更好的方法。我使用的是依赖项spring-cloud-starter-vault-config,版本4.0.0。
在凭据管理器中,我添加了一个通用凭据,并将其命名为 Gmail。这是我在application.yml中尝试的:

spring:
  cloud:
    vault:
      uri: vault://wincred/Gmail
  mail:
    host: smtp.gmail.com
    port: 587
    username: ${vault.generic.Gmail.username}
    password: ${vault.generic.Gmail.password}
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enabled: true

但我有这些例外:
原因:java.lang.非法参数异常:无法从保管库检索默认端口://wincred/Gmail
原因:java.net.MalformedURLException:未知协议:拱顶
我所尝试的是可能的吗?

uqjltbpv

uqjltbpv1#

不可能。Windows凭据管理器与Hashicorp Vault没有连接。

c7rzv4ha

c7rzv4ha2#

凭据管理器实际上是为管理内部操作系统功能(如Multiple Provider Router)使用的凭据而设计的。
Windows确实提供了一组加密API,包括Data Protection API,该API旨在使用从用户登录密码派生的加密密钥安全存储任意信息。

相关问题