Java: проблемы с чтением открытого ключа из файла конфигурации yaml - PullRequest
0 голосов
/ 11 мая 2018

У меня есть файл конфигурации 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"

, и я могу получить к нему доступ следующим образом: 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 ведет себятак же, как жестко закодированный?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Используйте скалярный стиль буквального блока | вместо сложенного >:

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

Для обзора стилей цитирования вы можете прочитать эту статью: http://blogs.perl.org/users/tinita/2018/03/strings-in-yaml---to-quote-or-not-to-quote.html

0 голосов
/ 11 мая 2018

Совершенно уверен, что использование ">" в YAML даст вам кучу строк, соединенных пробелами вместо перевода строки, вы можете распечатать полученный ключ, чтобы увидеть, что вы на самом деле получаете.

Если это так, вы можете применить replaceAll, чтобы получить ожидаемый результат.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...