With "BASIC" the same.

2020-05-15T18:20:39,881 | INFO  | CM Configuration Updater (Update: 
pid=org.ops4j.pax.web.context.f4d0bd8c-6751-447f-8067-2da2e2b7c45a) | 
HttpContextProcessing            | 264 - org.ops4j.pax.web.pax-web-runtime - 
7.2.14 | Updated configuration for 
pid=org.ops4j.pax.web.context.f4d0bd8c-6751-447f-8067-2da2e2b7c45a
2020-05-15T18:20:39,883 | INFO  | paxweb-context-4-thread-5 | 
HttpContextProcessing            | 264 - org.ops4j.pax.web.pax-web-runtime - 
7.2.14 | Found bundle "api.xml", scheduling customization of its WebContainer
2020-05-15T18:20:39,884 | INFO  | paxweb-context-4-thread-5 | 
HttpContextProcessing            | 264 - org.ops4j.pax.web.pax-web-runtime - 
7.2.14 | HTTP Context Processor {bundle=api.xml [290]}: Restoring WebContainer 
for bundle api.xml/0.0.0
2020-05-15T18:20:39,885 | INFO  | paxweb-context-4-thread-5 | 
CamelHttpTransportServlet        | 132 - org.apache.camel.camel-servlet - 3.2.0 
| Destroyed CamelHttpTransportServlet[MyServlet]
2020-05-15T18:20:39,885 | INFO  | paxweb-context-4-thread-5 | ContextHandler    
               | 229 - org.eclipse.jetty.util - 9.4.22.v20191022 | Stopped 
HttpServiceContext{httpContext=DefaultHttpContext [bundle=api.xml [290], 
contextID=default]}
2020-05-15T18:20:39,886 | INFO  | paxweb-context-4-thread-5 | 
HttpServiceContext               | 262 - org.ops4j.pax.web.pax-web-jetty - 
7.2.14 | registering JasperInitializer
2020-05-15T18:20:40,117 | INFO  | paxweb-context-4-thread-5 | 
CamelHttpTransportServlet        | 132 - org.apache.camel.camel-servlet - 3.2.0 
| Initialized CamelHttpTransportServlet[name=MyServlet, contextPath=]
2020-05-15T18:20:40,117 | INFO  | paxweb-context-4-thread-5 | ContextHandler    
               | 229 - org.eclipse.jetty.util - 9.4.22.v20191022 | Started 
HttpServiceContext{httpContext=DefaultHttpContext [bundle=api.xml [290], 
contextID=default]}
2020-05-15T18:20:40,118 | INFO  | paxweb-context-4-thread-5 | 
HttpContextProcessing            | 264 - org.ops4j.pax.web.pax-web-runtime - 
7.2.14 | Customizing WebContainer for bundle api.xml/0.0.0
2020-05-15T18:20:40,130 | INFO  | paxweb-context-4-thread-5 | 
HttpContextProcessing            | 264 - org.ops4j.pax.web.pax-web-runtime - 
7.2.14 | Registering login configuration in WebContainer for bundle "api.xml": 
method=BASIC, realm=karaf
2020-05-15T18:20:40,130 | INFO  | paxweb-context-4-thread-5 | 
CamelHttpTransportServlet        | 132 - org.apache.camel.camel-servlet - 3.2.0 
| Destroyed CamelHttpTransportServlet[MyServlet]
2020-05-15T18:20:40,131 | INFO  | paxweb-context-4-thread-5 | ContextHandler    
               | 229 - org.eclipse.jetty.util - 9.4.22.v20191022 | Stopped 
HttpServiceContext{httpContext=DefaultHttpContext [bundle=api.xml [290], 
contextID=default]}
2020-05-15T18:20:40,131 | INFO  | paxweb-context-4-thread-5 | 
HttpContextProcessing            | 264 - org.ops4j.pax.web.pax-web-runtime - 
7.2.14 | Registering security mappings in WebContainer for bundle "api.xml": 
SecurityConstraintsMapping{name='constraint.1', url='/camel/api/*', 
roles=[admin]}
2020-05-15T18:20:40,132 | INFO  | paxweb-context-4-thread-5 | 
HttpServiceContext               | 262 - org.ops4j.pax.web.pax-web-jetty - 
7.2.14 | registering JasperInitializer
2020-05-15T18:20:40,290 | INFO  | paxweb-context-4-thread-5 | 
CamelHttpTransportServlet        | 132 - org.apache.camel.camel-servlet - 3.2.0 
| Initialized CamelHttpTransportServlet[name=MyServlet, contextPath=]
2020-05-15T18:20:40,290 | INFO  | paxweb-context-4-thread-5 | ContextHandler    
               | 229 - org.eclipse.jetty.util - 9.4.22.v20191022 | Started 
HttpServiceContext{httpContext=DefaultHttpContext [bundle=api.xml [290], 
contextID=default]}
2020-05-15T18:20:50,256 | WARN  | qtp1611313605-201 | SecurityHandler           
       | 229 - org.eclipse.jetty.util - 9.4.22.v20191022 | No authenticator 
for: {RoleInfo,C[admin],None}

etc/jetty.xml looks like

<?xml version="1.0"?>

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
"http://www.eclipse.org/jetty/configure_9_0.dtd";>

<Configure id="Server" class="org.eclipse.jetty.server.Server">

    <!-- =========================================================== -->
    <!-- Set connectors -->
    <!-- =========================================================== -->
    <!-- One of each type! -->
    <!-- =========================================================== -->

    <!-- Use this connector for many frequently idle connections and for 
        threadless continuations. -->
        <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
                <Set name="secureScheme">https</Set>
                <Set name="securePort">
                        <Property name="jetty.secure.port" default="8443" />
                </Set>
                <Set name="outputBufferSize">32768</Set>
                <Set name="requestHeaderSize">8192</Set>
                <Set name="responseHeaderSize">8192</Set>
                <Set name="sendServerVersion">true</Set>
                <Set name="sendDateHeader">false</Set>
                <Set name="headerCacheSize">512</Set>
        </New>

    <Call name="addBean">
        <Arg>
            <New class="org.eclipse.jetty.jaas.JAASLoginService">
                <Set name="name">karaf</Set>
                <Set name="loginModuleName">karaf</Set>
                <Set name="roleClassNames">
                    <Array type="java.lang.String">
                        <Item>org.apache.karaf.jaas.boot.principal.RolePrincipal
                        </Item>
                    </Array>
                </Set>
            </New>
        </Arg>
    </Call>
    <Call name="addBean">
        <Arg>
            <New class="org.eclipse.jetty.jaas.JAASLoginService">
                <Set name="name">default</Set>
                <Set name="loginModuleName">karaf</Set>
                <Set name="roleClassNames">
                    <Array type="java.lang.String">
                        <Item>org.apache.karaf.jaas.boot.principal.RolePrincipal
                        </Item>
                    </Array>
                </Set>
            </New>
        </Arg>
    </Call>

</Configure>

etc/org.ops4j.pax.web.cfg looks like


org.osgi.service.http.enabled=true
org.osgi.service.http.port=8181
 
org.ops4j.pax.web.session.cookie.httpOnly=true
org.osgi.service.http.secure.enabled=true
org.osgi.service.http.port.secure=8443
org.ops4j.pax.web.ssl.keystore=${karaf.etc}/keystore.p12
org.ops4j.pax.web.ssl.password=xxxxx
org.ops4j.pax.web.ssl.keypassword=xxxxx

javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp
org.ops4j.pax.web.config.file=${karaf.etc}/jetty.xml
org.apache.karaf.features.configKey = org.ops4j.pax.web

Best
- Gerald

> Alex Soto <alex.s...@envieta.com> hat am 15. Mai 2020 18:38 geschrieben:
> 
> 
> I’m not sure what is happening, but I noticed, you have ‘basic’ as lowercase, 
> maybe it is case sensitive. Try uppercase:
> 
> 
> login.config.authMethod = BASIC
> 
> 
> Also, what is in your 'etc/jetty.xml’ and ‘etc/org.ops4j.pax.web.cfg’ files ?
> 
> 
> Best regards,
> Alex soto
> 
> 
> 
> 
> 
> > On May 15, 2020, at 11:22 AM, Gerald Kallas <catsh...@mailbox.org> wrote:
> > Hi Alex,
> > 
> > yes, I'm passing the HTTP "Authorization" header for basic authentication.
> > 
> > My users.properties looks like
> > 
> > karaf = xxx,_g_:admingroup
> > _g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
> > 
> > username1 = password1,admin
> > 
> > I'm testing with the username1 password1 combination, the request looks like
> > 
> > curl --insecure --location --request GET 
> > 'https://localhost:8443/camel/api/say/hello' \
> > --header 'Authorization: Basic dXNlcm5hbWUxOnBhc3N3b3JkMQ=='
> > 
> > With or without the Authorization header I'm always getting a HTTP 403 
> > response.
> > 
> > While trying to access I'm getting a log entry
> > 
> > 2020-05-15T15:20:34,031 | WARN | qtp1611313605-186 | SecurityHandler | 229 
> > - org.eclipse.jetty.util - 9.4.22.v20191022 | No authenticator for: 
> > {RoleInfo,C[admin],None}
> > 
> > Again my org.ops4j.pax.web.context-admin.cfg, it looks like
> > 
> > bundle.symbolicName=api.xml
> > login.config.authMethod=Basic
> > login.config.realmName=karaf
> > context.id (http://context.id)=default
> > 
> > security.constraint.1.url = /camel/api/*
> > security.constraint.1.method = *
> > security.constraint.1.roles = admin
> > 
> > And my route (Blueprint DSL "api.xml") again as well
> > 
> > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
> >  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> >  xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
> >  https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
> > 
> > <reference id="httpService" interface="org.osgi.service.http.HttpService" />
> > 
> > <bean id="camelServlet" 
> > class="org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
> > 
> > <bean class="org.apache.camel.component.osgi.OsgiServletRegisterer"
> >  init-method="register"
> >  destroy-method="unregister">
> > <property name="servletName" value="MyServlet" />
> > <property name="alias" value="/camel/api" />
> > <property name="httpService" ref="httpService" />
> > <property name="servlet" ref="camelServlet" />
> > </bean>
> > 
> > <bean id="servlet" 
> > class="org.apache.camel.component.servlet.ServletComponent" />
> > 
> > <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
> > <restConfiguration
> > component="servlet"
> > bindingMode="json"
> > enableCORS="false"
> > skipBindingOnErrorCode="false"
> > clientRequestValidation="true">
> > 
> > <componentProperty key="matchOnUriPrefix" value="true" />
> > 
> > <endpointProperty key="servletName" value="MyServlet" />
> > <endpointProperty key="disableStreamCache" value="true" />
> > 
> > <dataFormatProperty key="contentTypeHeader" value="false" />
> > <dataFormatProperty key="baseUri" value ="/came/api" />
> > </restConfiguration >
> > 
> > <rest path="/say">
> > <get uri="/hello">
> > <to uri="direct:hello"/>
> > </get>
> > </rest>
> > 
> > <route>
> > <from uri="direct:hello"/>
> > <transform>
> > <constant>Hello World</constant>
> > </transform>
> > </route>
> > 
> > </camelContext>
> > 
> > </blueprint>
> > 
> > Best
> > - Gerald
> > 
> > 
> > > Alex Soto <alex.s...@envieta.com> hat am 15. Mai 2020 14:35 geschrieben:
> > > 
> > > 
> > > Are passing the BASIC Authentication header with user name and password?
> > > 
> > > The user names and roles are defined in the 'etc/users.properties’ file, 
> > > check Karaf documentation 
> > > https://karaf.apache.org/manual/latest/#_security_2 
> > > <https://karaf.apache.org/manual/latest/#_security_2>
> > > 
> > > 
> > > The 'security.constraint.1.* entries' in your file 
> > > 'org.ops4j.pax.web.context-admin.cfg’ define the permissions for each 
> > > route, just need to add new ones replacing 1 with 2, and so on, the url 
> > > matching the Camel route.
> > > 
> > > 
> > > 
> > > 
> > > > On May 14, 2020, at 5:17 PM, Gerald Kallas <catsh...@mailbox.org> wrote:
> > > > 
> > > > Thanks Alex,
> > > > 
> > > > the API now is working after removing the "httpRegistry" part.
> > > > 
> > > > Now I've the next issue. My org.ops4j.pax.web.context-admin.cfg looks 
> > > > like
> > > > 
> > > > bundle.symbolicName=api.xml
> > > > login.config.authMethod=BASIC
> > > > login.config.realmName=karaf
> > > > context.id (http://context.id)=default
> > > > 
> > > > security.constraint.1.url = /camel/api/*
> > > > security.constraint.1.method = *
> > > > security.constraint.1.roles = admin
> > > > 
> > > > Saving this creates the log file entries as below.
> > > > 
> > > > The return code with this file is now always a HTTP 403 (forbidden). 
> > > > What might be wrong now?
> > > > 
> > > > And .. where can I define the roles, users and passwords for each of 
> > > > the routes with a servlet consumer?
> > > > 
> > > > Best
> > > > - Gerald
> > > > 
> > > > 2020-05-14T21:15:18,817 | INFO | 
> > > > fileinstall-/opt/apache-karaf-4.2.7/etc | fileinstall | 10 - 
> > > > org.apache.felix.fileinstall - 3.6.4 | Updating configuration from 
> > > > org.ops4j.pax.web.context-admin.cfg
> > > > 2020-05-14T21:15:18,819 | INFO | CM Configuration Updater (Update: 
> > > > pid=org.ops4j.pax.web.context.1448dbe9-6e82-4f5f-8176-f306ab16640f) | 
> > > > HttpContextProcessing | 258 - org.ops4j.pax.web.pax-web-runtime - 
> > > > 7.2.11 | Updated configuration for 
> > > > pid=org.ops4j.pax.web.context.1448dbe9-6e82-4f5f-8176-f306ab16640f
> > > > 2020-05-14T21:15:18,821 | INFO | paxweb-context-4-thread-22 | 
> > > > HttpContextProcessing | 258 - org.ops4j.pax.web.pax-web-runtime - 
> > > > 7.2.11 | Found bundle "api.xml", scheduling customization of its 
> > > > WebContainer
> > > > 2020-05-14T21:15:18,822 | INFO | paxweb-context-4-thread-22 | 
> > > > HttpContextProcessing | 258 - org.ops4j.pax.web.pax-web-runtime - 
> > > > 7.2.11 | HTTP Context Processor {bundle=api.xml [326]}: Restoring 
> > > > WebContainer for bundle api.xml/0.0.0
> > > > 2020-05-14T21:15:18,822 | INFO | paxweb-context-4-thread-22 | 
> > > > CamelHttpTransportServlet | 288 - org.apache.camel.camel-servlet - 
> > > > 3.0.0 | Destroyed CamelHttpTransportServlet[MyServlet]
> > > > 2020-05-14T21:15:18,822 | INFO | paxweb-context-4-thread-22 | 
> > > > ContextHandler | 223 - org.eclipse.jetty.util - 9.4.20.v20190813 | 
> > > > Stopped HttpServiceContext{httpContext=DefaultHttpContext 
> > > > [bundle=api.xml [326], contextID=default]}
> > > > 2020-05-14T21:15:18,823 | INFO | paxweb-context-4-thread-22 | 
> > > > HttpServiceContext | 256 - org.ops4j.pax.web.pax-web-jetty - 7.2.11 | 
> > > > registering JasperInitializer
> > > > 2020-05-14T21:15:18,902 | INFO | paxweb-context-4-thread-22 | 
> > > > CamelHttpTransportServlet | 288 - org.apache.camel.camel-servlet - 
> > > > 3.0.0 | Initialized CamelHttpTransportServlet[name=MyServlet, 
> > > > contextPath=]
> > > > 2020-05-14T21:15:18,905 | INFO | paxweb-context-4-thread-22 | 
> > > > ContextHandler | 223 - org.eclipse.jetty.util - 9.4.20.v20190813 | 
> > > > Started HttpServiceContext{httpContext=DefaultHttpContext 
> > > > [bundle=api.xml [326], contextID=default]}
> > > > 2020-05-14T21:15:18,905 | INFO | paxweb-context-4-thread-22 | 
> > > > HttpContextProcessing | 258 - org.ops4j.pax.web.pax-web-runtime - 
> > > > 7.2.11 | Customizing WebContainer for bundle api.xml/0.0.0
> > > > 2020-05-14T21:15:18,906 | INFO | paxweb-context-4-thread-22 | 
> > > > HttpContextProcessing | 258 - org.ops4j.pax.web.pax-web-runtime - 
> > > > 7.2.11 | Registering login configuration in WebContainer for bundle 
> > > > "api.xml": method=BASIC, realm=karaf
> > > > 2020-05-14T21:15:18,908 | INFO | paxweb-context-4-thread-22 | 
> > > > CamelHttpTransportServlet | 288 - org.apache.camel.camel-servlet - 
> > > > 3.0.0 | Destroyed CamelHttpTransportServlet[MyServlet]
> > > > 2020-05-14T21:15:18,908 | INFO | paxweb-context-4-thread-22 | 
> > > > ContextHandler | 223 - org.eclipse.jetty.util - 9.4.20.v20190813 | 
> > > > Stopped HttpServiceContext{httpContext=DefaultHttpContext 
> > > > [bundle=api.xml [326], contextID=default]}
> > > > 2020-05-14T21:15:18,909 | INFO | paxweb-context-4-thread-22 | 
> > > > HttpContextProcessing | 258 - org.ops4j.pax.web.pax-web-runtime - 
> > > > 7.2.11 | Registering security mappings in WebContainer for bundle 
> > > > "api.xml": SecurityConstraintsMapping{name='constraint.1', 
> > > > url='/camel/api/*', roles=[admin]}
> > > > 2020-05-14T21:15:18,909 | INFO | paxweb-context-4-thread-22 | 
> > > > HttpServiceContext | 256 - org.ops4j.pax.web.pax-web-jetty - 7.2.11 | 
> > > > registering JasperInitializer
> > > > 2020-05-14T21:15:19,003 | INFO | paxweb-context-4-thread-22 | 
> > > > CamelHttpTransportServlet | 288 - org.apache.camel.camel-servlet - 
> > > > 3.0.0 | Initialized CamelHttpTransportServlet[name=MyServlet, 
> > > > contextPath=]
> > > > 2020-05-14T21:15:19,003 | INFO | paxweb-context-4-thread-22 | 
> > > > ContextHandler | 223 - org.eclipse.jetty.util - 9.4.20.v20190813 | 
> > > > Started HttpServiceContext{httpContext=DefaultHttpContext 
> > > > [bundle=api.xml [326], contextID=default]}
> > > > 
> > > > 
> > > > > Alex Soto <alex.s...@envieta.com> hat am 14. Mai 2020 18:42 
> > > > > geschrieben:
> > > > > 
> > > > > 
> > > > > Looks good to me: '/camel/api/say/hello' should be correct.
> > > > > 
> > > > > The only difference I see is that in my case I am not using the 
> > > > > ‘httpRegistry'; try removing that part.
> > > > > 
> > > > > 
> > > > > Best regards,
> > > > > Alex soto
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > > > On May 14, 2020, at 12:21 PM, Gerald Kallas <catsh...@mailbox.org> 
> > > > > > wrote:
> > > > > > Thanks Alex.
> > > > > > 
> > > > > > I'm still struggling upfront. I was copying your example and have 
> > > > > > combined the parts in one Blueprint DSL.
> > > > > > 
> > > > > > See my complete Blueprint DSL file below. I'm always getting a HTTP 
> > > > > > 404 (not found).
> > > > > > 
> > > > > > I'm assuming that the URL
> > > > > > 
> > > > > > https://localhost:8443/camel/api/say/hello
> > > > > > 
> > > > > > should be the one to call. Do I still miss something? Many thanks 
> > > > > > in advance.
> > > > > > 
> > > > > > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
> > > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > > > > xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
> > > > > > https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
> > > > > > 
> > > > > > <reference id="httpService" 
> > > > > > interface="org.osgi.service.http.HttpService" />
> > > > > > 
> > > > > > <bean id="camelServlet" 
> > > > > > class="org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
> > > > > > 
> > > > > > <bean 
> > > > > > class="org.apache.camel.component.servlet.osgi.OsgiServletRegisterer"
> > > > > > init-method="register"
> > > > > > destroy-method="unregister">
> > > > > > <property name="servletName" value="MyServlet" />
> > > > > > <property name="alias" value="/camel/api" />
> > > > > > <property name="httpService" ref="httpService" />
> > > > > > <property name="servlet" ref="camelServlet" />
> > > > > > </bean>
> > > > > > 
> > > > > > <bean id="httpRegistry" 
> > > > > > class="org.apache.camel.component.servlet.DefaultHttpRegistry" />
> > > > > > 
> > > > > > <bean id="servlet" 
> > > > > > class="org.apache.camel.component.servlet.ServletComponent">
> > > > > > <property name="httpRegistry" ref="httpRegistry" />
> > > > > > </bean>
> > > > > > 
> > > > > > <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
> > > > > > <restConfiguration
> > > > > > component="servlet"
> > > > > > bindingMode="json"
> > > > > > enableCORS="false"
> > > > > > skipBindingOnErrorCode="false"
> > > > > > clientRequestValidation="true">
> > > > > > 
> > > > > > <componentProperty key="matchOnUriPrefix" value="true" />
> > > > > > 
> > > > > > <endpointProperty key="servletName" value="MyServlet" />
> > > > > > <endpointProperty key="disableStreamCache" value="true" />
> > > > > > 
> > > > > > <dataFormatProperty key="contentTypeHeader" value="false" />
> > > > > > <dataFormatProperty key="baseUri" value ="/came/api" />
> > > > > > </restConfiguration >
> > > > > > 
> > > > > > <rest path="/say">
> > > > > > <get uri="/hello">
> > > > > > <to uri="direct:hello"/>
> > > > > > </get>
> > > > > > </rest>
> > > > > > 
> > > > > > <route>
> > > > > > <from uri="direct:hello"/>
> > > > > > <transform>
> > > > > > <constant>Hello World</constant>
> > > > > > </transform>
> > > > > > </route>
> > > > > > 
> > > > > > </camelContext>
> > > > > > 
> > > > > > </blueprint>
> > > > > > 
> > > > > > Best
> > > > > > - Gerald
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > > Alex Soto <alex.s...@envieta.com> hat am 14. Mai 2020 14:55 
> > > > > > > geschrieben:
> > > > > > > 
> > > > > > > 
> > > > > > > Hi Gerald,
> > > > > > > 
> > > > > > > I would put the Servlet in the same bundle; I don’t see the need 
> > > > > > > to separate it for reuse.
> > > > > > > Looks like you are missing security constraint in the 
> > > > > > > 'etc/org.ops4j.pax.web.context-admin.cfg' file
> > > > > > > 
> > > > > > > security.constraint.1.url = /camel/services/*
> > > > > > > security.constraint.1.method = *
> > > > > > > security.constraint.1.roles = admin
> > > > > > > 
> > > > > > > 
> > > > > > > Best regards,
> > > > > > > Alex soto
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > > On May 13, 2020, at 7:02 PM, Gerald Kallas 
> > > > > > > > <catsh...@mailbox.org> wrote:
> > > > > > > > <property name="alias" value="/camel/services" />
> > > > > > > 
> > > > > 
>

Reply via email to