簡體   English   中英

Java:從yaml配置文件讀取公共密鑰時出現問題

[英]Java: Problems reading a public key from a yaml config file

我有一個存儲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"

我可以這樣訪問它: String signingKey = settings.get("signing_key");

當我嘗試使用該公鑰驗證JWT令牌時,它將引發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中使用“>”將使您得到一堆由空格而不是換行符代替的行,您可能希望打印出獲得的密鑰以查看實際獲得的密鑰。

在這種情況下,您可以應用replaceAll來獲取期望的結果。

http://yaml.org/spec/1.2/spec.html#id2760844

使用文字塊標量樣式| 而不是折疊的>

        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-----

這樣可以保留換行符。 另請參閱鏈接@clement。

有關引用樣式的概述,您可能需要閱讀這篇文章: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM