Hi Paul,

This could be an omission on my part. When I worked on the command
security I didn't really focus at the client command, but mainly
worked with the bin/karaf command and SSH access.

I can look into this. Would you like to file a bug for it?

In the mean time, if you need the bin/client command to access Karaf,
you can use it with the shell commands RBAC disabled. You can disable
it by commenting out the following line in etc/system.properties:
  karaf.secured.services = (&(osgi.command.scope=*)(osgi.command.function=*))

Cheers,

David

On 15 January 2014 12:54, Paul Spencer <pau...@apache.org> wrote:
> JB,
> I have seen the error with other commands while developing a bundle, although 
> I focused on the bundle:uninstall.
>
> In addition to connecting to Karaf with ssh, the use case succeeds when 
> connection  with bin/karaf.
>
> Paul Spencer
> On Jan 15, 2014, at 7:15 AM, Jean-Baptiste Onofré <j...@nanthrax.net> wrote:
>
>> Let me try to reproduce the issue using bin/client. It's weird as bin/client 
>> is a ssh client, so it's basically the same as ssh.
>>
>> Did you see the issue with other commands ?
>>
>> I think that the ACL can be enhanced: instead of checking the -f option, it 
>> should check the bundle level. It's not so easy as bundle:uninstall accept 
>> bundle ID, bundle name, etc.
>>
>> Regards
>> JB
>>
>> On 01/15/2014 12:45 PM, Paul Spencer wrote:
>>> JB,
>>> If is connect to Karaf vis SSH, the use case works, but if I connect via 
>>> bin/client the use case fails.
>>>
>>> Why does the command uninstall without -f generate the log message “Current 
>>> user does not have required roles ([manager]) for service” when connected 
>>> to Karaf via bin/client?
>>>
>>>
>>> ***
>>> * Role definition in etc/system.properties
>>> ***
>>> sparrow-2:apache-karaf-3.0.0 paul$ grep local etc/system.properties
>>> # Roles to use when logging into a local Karaf console.
>>> karaf.local.roles = admin,manager,viewer
>>> sparrow-2:apache-karaf-3.0.0 paul$
>>>
>>> ***
>>> * Log of connecting to Karaf via SSH then bin/client
>>> ***
>>> sparrow-2:apache-karaf-3.0.0 paul$ ssh karaf@127.0.0.1 -p 8101
>>> Authenticated with partial success.
>>> Authenticated with partial success.
>>> Password authentication
>>> Password:
>>>         __ __                  ____
>>>        / //_/____ __________ _/ __/
>>>       / ,<  / __ `/ ___/ __ `/ /_
>>>      / /| |/ /_/ / /  / /_/ / __/
>>>     /_/ |_|\__,_/_/   \__,_/_/
>>>
>>>   Apache Karaf (3.0.0)
>>>
>>> Hit '<tab>' for a list of available commands
>>> and '[cmd] --help' for help on a specific command.
>>> Hit 'system:shutdown' to shutdown Karaf.
>>> Hit '<ctrl-d>' or type 'logout' to disconnect shell from current session.
>>>
>>> karaf@root()> list
>>> START LEVEL 100 , List Threshold: 50
>>> ID | State     | Lvl | Version        | Name
>>> ----------------------------------------------------------------------
>>> 80 | Installed | 100 | 1.0.0.SNAPSHOT | APMS/EWM SAP File Distribution
>>> karaf@root()> uninstall 80
>>> karaf@root()> install 
>>> mvn:com.intekon.customer.kc.ewm.web-service/ewm-sap-dist/1.0-SNAPSHOT
>>> Bundle ID: 81
>>> karaf@root()> uninstall 81
>>> karaf@root()> logout
>>> Connection to 127.0.0.1 closed.
>>> sparrow-2:apache-karaf-3.0.0 paul$ bin/client
>>> Logging in as karaf
>>> 566 [pool-2-thread-2] WARN 
>>> org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at 
>>> /0.0.0.0:8101 presented unverified key:
>>>         __ __                  ____
>>>        / //_/____ __________ _/ __/
>>>       / ,<  / __ `/ ___/ __ `/ /_
>>>      / /| |/ /_/ / /  / /_/ / __/
>>>     /_/ |_|\__,_/_/   \__,_/_/
>>>
>>>   Apache Karaf (3.0.0)
>>>
>>> Hit '<tab>' for a list of available commands
>>> and '[cmd] --help' for help on a specific command.
>>> Hit 'system:shutdown' to shutdown Karaf.
>>> Hit '<ctrl-d>' or type 'logout' to disconnect shell from current session.
>>>
>>> karaf@root()> install 
>>> mvn:com.intekon.customer.kc.ewm.web-service/ewm-sap-dist/1.0-SNAPSHOT
>>> Bundle ID: 82
>>> karaf@root()> uninstall 82
>>> Error executing command: Insufficient credentials.
>>> karaf@root()> list
>>> START LEVEL 100 , List Threshold: 50
>>> ID | State     | Lvl | Version        | Name
>>> ----------------------------------------------------------------------
>>> 82 | Installed |  80 | 1.0.0.SNAPSHOT | APMS/EWM SAP File Distribution
>>> karaf@root()> logout
>>> sparrow-2:apache-karaf-3.0.0 paul$
>>>
>>> ***
>>> * From data/log/karaf.log
>>> ***
>>> 2014-01-15 06:34:25,902 | INFO  | e ssh user karaf | GuardProxyCatalog      
>>>           | 42 - org.apache.karaf.service.guard - 3.0.0 | Current user does 
>>> not have required roles ([manager]) for service 
>>> [org.apache.karaf.shell.console.CompletableFunction, 
>>> org.apache.karaf.shell.console.commands.BlueprintCommand, 
>>> org.apache.karaf.shell.commands.CommandWithAction, 
>>> org.apache.felix.service.command.Function, 
>>> org.apache.karaf.shell.commands.basic.AbstractCommand] method public 
>>> java.lang.Object 
>>> org.apache.karaf.shell.commands.basic.AbstractCommand.execute(org.apache.felix.service.command.CommandSession,java.util.List)
>>>  throws java.lang.Exception and/or arguments
>>> 2014-01-15 06:34:25,902 | ERROR | e ssh user karaf | ShellUtil              
>>>           | 47 - org.apache.karaf.shell.console - 3.0.0 | Exception caught 
>>> while executing command
>>> java.lang.SecurityException: Insufficient credentials.
>>>         at 
>>> org.apache.karaf.service.guard.impl.GuardProxyCatalog$ProxyInvocationListener.preInvoke(GuardProxyCatalog.java:527)
>>>         at 
>>> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:52)
>>>         at 
>>> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
>>>         at 
>>> org.apache.karaf.shell.console.commands.$BlueprintCommand1069614474.execute(Unknown
>>>  Source)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>>>         at 
>>> org.apache.karaf.shell.console.impl.jline.ConsoleImpl$DelegateSession.execute(ConsoleImpl.java:497)
>>>         at 
>>> org.apache.karaf.shell.console.impl.jline.ConsoleImpl.run(ConsoleImpl.java:198)
>>>         at java.lang.Thread.run(Thread.java:724)[:1.7.0_25]
>>>         at 
>>> org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.doRun(ConsoleFactoryService.java:118)[47:org.apache.karaf.shell.console:3.0.0]
>>>         at 
>>> org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3$1.run(ConsoleFactoryService.java:109)
>>>         at java.security.AccessController.doPrivileged(Native 
>>> Method)[:1.7.0_25]
>>>         at 
>>> org.apache.karaf.jaas.modules.JaasHelper.doAs(JaasHelper.java:47)[48:org.apache.karaf.jaas.modules:3.0.0]
>>>         at 
>>> org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.run(ConsoleFactoryService.java:107)[47:org.apache.karaf.shell.console:3.0.0]
>>>
>>>
>>> On Jan 15, 2014, at 12:37 AM, Jean-Baptiste Onofré <j...@nanthrax.net> 
>>> wrote:
>>>
>>>> Hi Pauln
>>>>
>>>> it's not a regression: command, services, and JMX security don't exist at 
>>>> all in 2.3.x, it's a new feature from 3.0.0.
>>>>
>>>> The local roles are define in etc/system.properties:
>>>>
>>>> karaf.local.roles = admin,manager,viewer
>>>>
>>>> It's the roles used by the "local" console. When you use remote console 
>>>> (via ssh), Karaf use the role of the user.
>>>>
>>>> If you take a look on etc/org.apache.karaf.command.acl.bundle.cfg, you can 
>>>> see:
>>>>
>>>> uninstall[/.*[-][f].*/] = admin
>>>> uninstall = manager
>>>>
>>>> If you are manager, you can use uninstall for non system bundle (with 
>>>> start level greater than 80, so without requiring the -f option). To 
>>>> uninstall system bundle, you have to be admin (who can use the -f option 
>>>> for system bundle).
>>>>
>>>> Regards
>>>> JB
>>>>
>>>> On 01/14/2014 10:34 PM, Paul Spencer wrote:
>>>>> JB,
>>>>> - The use case is successful in 2.3.x, to this sounds like a regression 
>>>>> issue.
>>>>>
>>>>> - Per etc/system.properties, the local user has admin and manage roles.
>>>>>
>>>>> karaf@root()> jaas:realm-manage --index 1
>>>>> karaf@root()> jaas:user-list
>>>>> User Name | Group      | Role
>>>>> --------------------------------
>>>>> karaf     | admingroup | admin
>>>>> karaf     | admingroup | manager
>>>>> karaf     | admingroup | viewer
>>>>> karaf@root()>
>>>>>
>>>>>
>>>>> - The way I am reading etc/org.apache.karaf.command.acl.bundle.cfg, a 
>>>>> user in the admin group can “install” a bundle and needs to be in the 
>>>>> manager group to “uninstall” without the “-f” option.
>>>>>
>>>>> karaf@root()> bundle:uninstall 79
>>>>> Error executing command: Insufficient credentials.
>>>>> karaf@root()> bundle:uninstall -f 79
>>>>> karaf@root()>
>>>>>
>>>>> So why is the “bundle:uninstall” command failing when the local user has 
>>>>> the manager role?
>>>>>
>>>>> Paul Spencer
>>>>>
>>>>>
>>>>>
>>>>> On Jan 14, 2014, at 2:29 PM, Jean-Baptiste Onofré <j...@nanthrax.net> 
>>>>> wrote:
>>>>>
>>>>>> Hi Paul,
>>>>>>
>>>>>> take a look in the documentation:
>>>>>>
>>>>>> http://karaf.apache.org/manual/latest/users-guide/security.html
>>>>>>
>>>>>> in the console section.
>>>>>>
>>>>>> You will the explanations about 
>>>>>> etc/org.apache.karaf.command.acl.<scope>.cfg files.
>>>>>>
>>>>>> Regards
>>>>>> JB
>>>>>>
>>>>>> On 01/14/2014 07:14 PM, Paul Spencer wrote:
>>>>>>> Karaf 3.0.0 running on Apple OSX Maverick (10.9.1)
>>>>>>>
>>>>>>> I am getting a "java.lang.SecurityException: Insufficient credentials.” 
>>>>>>> error when executing various commands on a newly installed Karaf 3.0.0. 
>>>>>>>  The use case below is for uninstalling a bundle.
>>>>>>>
>>>>>>> Is there a configuration change I need to make?
>>>>>>>
>>>>>>> ***
>>>>>>> * Use case
>>>>>>> ***
>>>>>>> 1) unzipped the distribution
>>>>>>> 2) Start the Karaf server with bin/start
>>>>>>> 3) Tail the log file until the JMX OSGi Agent is finished registering 
>>>>>>> objects (about 30 seconds)
>>>>>>> 4) Start the Karaf client with bin/client
>>>>>>> 5) Install a bundle
>>>>>>> 6) Uninstall the newly installed bundle
>>>>>>>
>>>>>>>
>>>>>>> ***
>>>>>>> * Command output
>>>>>>> ***
>>>>>>> karaf@root()> install 
>>>>>>> mvn:com.intekon.customer.kc.ewm.web-service/ewm-sap-dist/1.0-SNAPSHOT
>>>>>>> Bundle ID: 79
>>>>>>> karaf@root()> uninstall 79
>>>>>>> Error executing command: Insufficient credentials.
>>>>>>> karaf@root()>
>>>>>>>
>>>>>>>
>>>>>>> ***
>>>>>>> * From karaf.log (I can post the full 28K log if necessary)
>>>>>>> ***
>>>>>>> 2014-01-14 12:50:07,960 | INFO  | e ssh user karaf | GuardProxyCatalog  
>>>>>>>               | 42 - org.apache.karaf.service.guard - 3.0.0 | Current 
>>>>>>> user does not have required roles ([manager]) for service 
>>>>>>> [org.apache.karaf.shell.console.CompletableFunction, 
>>>>>>> org.apache.karaf.shell.console.commands.BlueprintCommand, 
>>>>>>> org.apache.karaf.shell.commands.CommandWithAction, 
>>>>>>> org.apache.felix.service.command.Function, 
>>>>>>> org.apache.karaf.shell.commands.basic.AbstractCommand] method public 
>>>>>>> java.lang.Object 
>>>>>>> org.apache.karaf.shell.commands.basic.AbstractCommand.execute(org.apache.felix.service.command.CommandSession,java.util.List)
>>>>>>>  throws java.lang.Exception and/or arguments
>>>>>>> 2014-01-14 12:50:07,960 | ERROR | e ssh user karaf | ShellUtil          
>>>>>>>               | 47 - org.apache.karaf.shell.console - 3.0.0 | Exception 
>>>>>>> caught while executing command
>>>>>>> java.lang.SecurityException: Insufficient credentials.
>>>>>>>  at 
>>>>>>> org.apache.karaf.service.guard.impl.GuardProxyCatalog$ProxyInvocationListener.preInvoke(GuardProxyCatalog.java:527)
>>>>>>>  at 
>>>>>>> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:52)
>>>>>>>  at 
>>>>>>> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
>>>>>>>  at 
>>>>>>> org.apache.karaf.shell.console.commands.$BlueprintCommand474733692.execute(Unknown
>>>>>>>  Source)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
>>>>>>>  at 
>>>>>>> org.apache.karaf.shell.console.impl.jline.ConsoleImpl$DelegateSession.execute(ConsoleImpl.java:497)
>>>>>>>  at 
>>>>>>> org.apache.karaf.shell.console.impl.jline.ConsoleImpl.run(ConsoleImpl.java:198)
>>>>>>>  at java.lang.Thread.run(Thread.java:724)[:1.7.0_25]
>>>>>>>  at 
>>>>>>> org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.doRun(ConsoleFactoryService.java:118)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3$1.run(ConsoleFactoryService.java:109)
>>>>>>>  at java.security.AccessController.doPrivileged(Native 
>>>>>>> Method)[:1.7.0_25]
>>>>>>>  at 
>>>>>>> org.apache.karaf.jaas.modules.JaasHelper.doAs(JaasHelper.java:47)[48:org.apache.karaf.jaas.modules:3.0.0]
>>>>>>>  at 
>>>>>>> org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.run(ConsoleFactoryService.java:107)[47:org.apache.karaf.shell.console:3.0.0]
>>>>>>>
>>>>>>> Paul Spencer
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Jean-Baptiste Onofré
>>>>>> jbono...@apache.org
>>>>>> http://blog.nanthrax.net
>>>>>> Talend - http://www.talend.com
>>>>>
>>>>
>>>> --
>>>> Jean-Baptiste Onofré
>>>> jbono...@apache.org
>>>> http://blog.nanthrax.net
>>>> Talend - http://www.talend.com
>>>
>>
>> --
>> Jean-Baptiste Onofré
>> jbono...@apache.org
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>

Reply via email to