我有一个 yaml 配置文件,它存储 rsa 公钥
http_authenticator:
type: jwt
challenge: false
config:
signing_key: >
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApJubKdzjmxriryviTEPN
85qX8SzcDbseBjJXJzrt3Xn0mk7+7ZxWDnB5Qh/TvZoHGOcaVeoRIzBi1AdX20az
x7oAzfMLI48sDEptwJgd87Mg6UmvXlPOkvRypUSP8pFrOUg+aQ75qRsQkXBBWMIO
qBZiDXVrMHY1+Q1LOJR1aWFjIlL1WNZecTNJ9UfPhjxW7WJRmI3/EXPbD/OEeC7J
mD/nifofYUQUavggcirKI0KM17ENLdyZy3aWfpKOXqZJByfbp5AXmWoWcNZqsiHy
KL/sK/nmX86jwKRHvIOQv9IBlPCNSxNr6IQox/BHqZssvY2J65UHOaTJ408x7IQT
FQIDAQAB
-----END PUBLIC KEY-----
jwt_header: "Authorization"
jwt_url_parameter: null
cookieName: "Cookie"
cookieHeaderName: "jwt_token"
我可以像这样访问它:StringsigningKey = settings.get("signing_key");
当我尝试使用该公钥验证 JWT token 时,它会抛出 InvalidKeyException
。
但是,如果我像这样在代码中硬编码字符串,它就可以工作!
String signingKey = "-----BEGIN PUBLIC KEY-----\n" +
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApJubKdzjmxriryviTEPN\n" +
"85qX8SzcDbseBjJXJzrt3Xn0mk7+7ZxWDnB5Qh/TvZoHGOcaVeoRIzBi1AdX20az\n" +
"x7oAzfMLI48sDEptwJgd87Mg6UmvXlPOkvRypUSP8pFrOUg+aQ75qRsQkXBBWMIO\n" +
"qBZiDXVrMHY1+Q1LOJR1aWFjIlL1WNZecTNJ9UfPhjxW7WJRmI3/EXPbD/OEeC7J\n" +
"mD/nifofYUQUavggcirKI0KM17ENLdyZy3aWfpKOXqZJByfbp5AXmWoWcNZqsiHy\n" +
"KL/sK/nmX86jwKRHvIOQv9IBlPCNSxNr6IQox/BHqZssvY2J65UHOaTJ408x7IQT\n" +
"FQIDAQAB\n" +
"-----END PUBLIC KEY-----";
如何确保 yaml 配置的行为与硬编码配置的行为相同?
最佳答案
可以肯定的是,在 YAML 中使用“">”将会得到一堆用空格连接的行,而不是换行符,您可能需要打印出您获得的 key 以查看实际获得的内容。
如果是这种情况,您可以应用replaceAll 来获取您期望的结果。
关于Java:从 yaml 配置文件读取公钥时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50282066/