[英]Java: Problems reading a public key from a yaml config file
I have a yaml config file which stores a rsa public key 我有一个存储rsa公钥的yaml配置文件
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"
and I can access it like this: String signingKey = settings.get("signing_key");
我可以这样访问它:
String signingKey = settings.get("signing_key");
When I try to validate a JWT token using that public key it throws a InvalidKeyException
. 当我尝试使用该公钥验证JWT令牌时,它将引发
InvalidKeyException
。
However if I hardcode the string in my code like this, it works! 但是,如果我这样在代码中对字符串进行硬编码,则可以正常工作!
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-----";
How do I make sure the yaml config behaves the same way as the hardcoded one? 如何确保yaml配置的行为与硬编码的行为相同?
Fairly sure using the ">" in YAML will get you a bunch of lines concatenated with spaces instead of the line feed, you might want to print out the key you obtain to see what you actually get. 可以肯定的是,在YAML中使用“>”将使您得到一堆由空格而不是换行符代替的行,您可能希望打印出获得的密钥以查看实际获得的密钥。
If that is the case you can apply a replaceAll to get back the result that you expect. 在这种情况下,您可以应用replaceAll来获取期望的结果。
http://yaml.org/spec/1.2/spec.html#id2760844 http://yaml.org/spec/1.2/spec.html#id2760844
Use the literal block scalar style |
使用文字块标量样式
|
instead of the folded >
: 而不是折叠的
>
:
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-----
That will preserve the linebreaks. 这样可以保留换行符。 See also the link @clement posted.
另请参阅链接@clement。
For an overview of quoting styles, you might want to read this article: http://blogs.perl.org/users/tinita/2018/03/strings-in-yaml---to-quote-or-not-to-quote.html 有关引用样式的概述,您可能需要阅读这篇文章: http : //blogs.perl.org/users/tinita/2018/03/strings-in-yaml---to-quote-or-not-to -quote.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.