Hi Matt,

Why not use Subject.current and Subject.callAs?

On Tue, Jun 10, 2025 at 10:20:06AM -0500, Matt Pavlovich wrote:
> Hi Chaz-
> 
> I started making updates to be able to better support working with extended 
> and custom Principals.
> 
> ref: https://github.com/apache/karaf/pull/1946
> ref: https://github.com/apache/karaf/pull/1944
> 
> NOTE: there is no planned JDK replacement for many of the JAAS operations 
> that you described.
> 
> The recommended approach is to build in your own guard around operations that 
> you to secure with roles.
> 
> -Matt Pavlovich
> 
> > On Jun 10, 2025, at 10:08 AM, apache-karaf-...@pyr3x.com.invalid 
> > <apache-karaf-...@pyr3x.com.INVALID> wrote:
> > 
> > On Tue, Jun 10, 2025 at 10:47:34AM -0400, apache-karaf-...@pyr3x.com wrote:
> >> Hello,
> >> 
> >> I'm using Karaf Service Guard to centralize authc/authz between karaf
> >> commands and my REST interface. Everything is working an expected,
> >> however, using a role with a colon in it is not matching.
> >> 
> >> On the REST side I use Apache Shiro and I have realms that authenticate
> >> to some backend systems who set roles like "group:blah". I convert these
> >> to Karaf JAAS RolePrincipal which works for simple names like "blah".
> >> I have a CXF Interceptor to execute REST methods inside a Subject.doAs
> >> for my DS injected service. However, in the service acl when I have
> >> something like this it fails:
> >> 
> >> service.guard = (objectClass=com.example.MyInterface)
> >> 
> >> * = *
> >> myMethod = admin, viewer, group:blah
> >> 
> >> -- 
> >> Chaz
> > 
> > Update:
> > 
> > Looking at the code for:
> > 
> > https://github.com/apache/karaf/blob/main/util/src/main/java/org/apache/karaf/util/jaas/JaasHelper.java
> > 
> > It looks at the first colon to separate a custom role principal name.
> > 
> > This hack seems to work:
> > 
> > org.apache.karaf.jaas.boot.principal.RolePrincipal:group:blah
> > 
> > When reviewing the code I realized there are likely to be some issues in
> > Java 21, specifically the replacement of Subject.doAs with callAs, and
> > the new Subject.current().
> > 
> > Is this on the roadmap? Also, any thoughts on what to do with
> > Conditional Permission Admin past Java 17? In my module system I like to
> > lock down bundles to where they are allowed to write on the filesystem
> > for example.
> > 
> > -- 
> > Chaz
> 

Reply via email to