Knime OpenID соединяется с Azure B2C - PullRequest
0 голосов
/ 12 июля 2020

Я настраиваю сервер Knime (4.10.3) с Azure B2 C в качестве поставщика удостоверений, следуя шагам, описанным в документации Knime Я настроил конечные точки на основе хорошо известных Страница конфигурации openid пользовательского потока в Azure B2 C. Когда я обращаюсь к серверу Knime, я получаю следующую ошибку -

java.lang.NullPointerException
com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)
com.google.common.cache.LocalCache.getIfPresent(LocalCache.java:4127)
com.google.common.cache.LocalCache$LocalManualCache.getIfPresent(LocalCache.java:5047)
com.knime.enterprise.tomcat.authenticator.oidc.KnimeOAuthUserinfo.getUserinfoString(KnimeOAuthUserinfo.java:106)
com.knime.enterprise.tomcat.authenticator.oidc.KnimeOAuthUserinfo.getUserinfoToken(KnimeOAuthUserinfo.java:84)
com.knime.enterprise.tomcat.authenticator.oidc.KnimeOAuthRequestAuthenticator.resolveCode(KnimeOAuthRequestAuthenticator.java:250)
org.keycloak.adapters.OAuthRequestAuthenticator.authenticate(OAuthRequestAuthenticator.java:280)
org.keycloak.adapters.RequestAuthenticator.authenticate(RequestAuthenticator.java:139)
org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.authenticateInternal(AbstractKeycloakAuthenticatorValve.java:203)
org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve.authenticate(KeycloakAuthenticatorValve.java:50)
com.knime.enterprise.tomcat.authenticator.KnimeServerAuthenticator.doAuthenticate(KnimeServerAuthenticator.java:453)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:575)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1699)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1050)
org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$4.completed(Nio2Endpoint.java:630)
org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$4.completed(Nio2Endpoint.java:608)
org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:960)
org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:889)
sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
sun.nio.ch.Invoker$2.run(Invoker.java:218)
sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)

Поскольку класс KnimeOAuthUserinfo непрозрачен, я не уверен, почему он внутренне не работает. URL-адрес с сообщением об ошибке выглядит примерно так:

https://<URL>/knime/state=5ace006d-934c-41a0-836c-eeeff445c5ea&..

Я хочу добиться того, чтобы аутентификатор Knime использовал основной атрибут из утверждения токена, а не вызывал конечную точку userinfo (поскольку B2 C не поддерживает конечную точку userinfo, альтернативой является использование графического API). Мой knime-oidc-config.json выглядит как

additional-authorization-endpoint-parameters": "",
"additional-scopes": "openid",
"principal-attribute": "name",
"use-userinfo-for-principal": "false"

Итак, мой вопрос -

  1. Почему Userinfo не работает без токена? (хотя я вижу в инструменте разработки браузера, что токен доступен)

  2. Что мне здесь не хватает в конфигурации?

...