Как устранить исключение «URL-адрес Azure Key Vault имеет неверный формат»

Я клонировал проект — https://github.com/Microsoft/Partner-Center-Java-Samples/tree/master/secure-app-model/keyvault из GIT в свой локальный Eclipse.

Добавлен сервер tomcat, и когда я запускаю проект partnerconsent, я получаю это исключение

SEVERE: Exception starting filter [AuthenticationFilter]
java.lang.IllegalArgumentException: The Azure Key Vault url is malformed.
    at com.azure.security.keyvault.secrets.SecretClientBuilder.vaultUrl(SecretClientBuilder.java:177)
    at com.microsoft.store.samples.partnerconsent.security.KeyVaultProvider.getKeyVaultClient(KeyVaultProvider.java:68)
    at com.microsoft.store.samples.partnerconsent.security.KeyVaultProvider.<init>(KeyVaultProvider.java:33)
    at com.microsoft.store.samples.partnerconsent.security.AuthenticationFilter.init(AuthenticationFilter.java:236)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:272)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:253)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4613)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5256)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
Caused by: java.net.MalformedURLException: Cannot invoke "String.length()" because "spec" is null
    at java.base/java.net.URL.<init>(URL.java:708)
    at java.base/java.net.URL.<init>(URL.java:569)
    at java.base/java.net.URL.<init>(URL.java:516)
    at com.azure.security.keyvault.secrets.SecretClientBuilder.vaultUrl(SecretClientBuilder.java:175)
    ... 36 more
Caused by: java.lang.NullPointerException: Cannot invoke "String.length()" because "spec" is null
    at java.base/java.net.URL.<init>(URL.java:614)
    ... 39 more

Я добавил значение keyvault_base_url в web.xml, и оно правильно сформировано. Итак, не уверен, почему исключение все еще происходит.

Правильно ли сформирован URL-адрес хранилища ключей? Должно быть что-то вроде https://some-name.vault.azure.net/

k314159 20.02.2023 16:25

Да, он правильно сформирован и соответствует указанному вами формату.

ab.it.gcp 20.02.2023 16:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в коде репозитория. Создан вопрос для владельцев репозитория GIThub, чтобы внести изменения.

Оператор со стрелкой (на изображении) должен располагаться над приведенным ниже оператором, потому что метод getKeyVaultClient использует переменную vaultBaseUrl.

клиент = получитьKeyVaultClient();

Другие вопросы по теме