Well, anyone can invoke such a method in it's own code. The point is where the 
doPrivileged block is opened.


If a method is annotated with this newly proposed @LocalPrivileged then this 
method itself would NOT get wrapped with doPrivileged. But instead a private 
method with a doPrivileged block will get added to the callers class and the 
invocation will get replaced with that method. 


Maybe I miss something, but for me that sounds safe.

LieGrue,
strub





>________________________________
> From: Matt Benson <gudnabr...@gmail.com>
>To: Commons Developers List <dev@commons.apache.org>; Mark Struberg 
><strub...@yahoo.de> 
>Sent: Wednesday, November 21, 2012 4:22 PM
>Subject: Re: [privilizer] new sandbox component
> 
>
>
>
>
>
>
>On Wed, Nov 21, 2012 at 4:57 AM, Mark Struberg <strub...@yahoo.de> wrote:
>
>Oki, let me explain what I meant.
>>Currently the methods must be private to be really secure. But having a 
>>public method is not a problem if it does NOT contain any doPrivileged but if 
>>this wrapper is generated as private method of the caller. So people will
>>
>>
>>As example please consider the following method in a SecurityUtils helper 
>>class:
>>
>>public static ClassLoader getCurrentClassLoader(Class referencePoint) { .. }
>>
>>
>>and in another class you will have a single lined method
>>
>>@Privileged
>>private ClassLoader getCurrentClassLoader(Class refPoint) {
>>  return SecurityUtils.getCurrentClassLoader(refPoint);
>>}
>>
>>
>>If someone calls the SecurityUtil method directly from outside (and does not 
>>use the commons-privilizer in his project or manualy wraps it with 
>>doPrivileged), then this method will throw a SecurityException as the 
>>SecurityManager will not allow this call.
>>
>>
>>What I was proposing is to generate the private helper method in the caller 
>>class for the user automatically. We could e.g. do this by introducing a 2nd 
>>annotation, e.g. @LocalPrivileged.
>>
>>Writing 
>>
>>@LocalPrivileged
>>
>>public static ClassLoader getCurrentClassLoader(Class referencePoint) { .. }
>>
>>
>>and using the commons-privilizer in the project could do that. That's of 
>>course more work to do than the current approach, but could be worth looking 
>>at. That could be done in a v2 release as well.
>>
>>
>
>The problem with this is that the privileged APIs work such that SecurityUtils 
>would still have to have full privileges; i.e., the PrivilegedAction call only 
>insulates backward in the call stack, not forward.  It took me ages to get my 
>head around that, and ages more once I had stepped away for a couple of 
>months.  If SecurityUtils still has privileges graned, anyone can call its 
>methods and we're back to square one.
>
>Glad to be proven wrong...
>
>Matt
> 
>LieGrue,
>>strub
>>
>>
>>
>>>________________________________
>>> From: Matt Benson <gudnabr...@gmail.com>
>>>To: Commons Developers List <dev@commons.apache.org>; Mark Struberg 
>>><strub...@yahoo.de>
>>>Sent: Tuesday, November 20, 2012 5:31 PM
>>
>>>Subject: Re: [privilizer] new sandbox component
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>On Tue, Nov 20, 2012 at 10:12 AM, Mark Struberg <strub...@yahoo.de> wrote:
>>>
>>>Heh, the other option has been 'privilator'
>>>>
>>>>Catchy as well, and would have given a nice slogan: 'Privilator - I'll be 
>>>>secure, baby'
>>>>
>>>>It's a bit less self-explaining though.
>>>>
>>>>
>>>>We are looking forward to use it in Apache BVal, OpenWebBeans, DeltaSpike 
>>>>and probably MyFaces for now.
>>>>
>>>>One thing I like to give a try is to generate private method wrappers in 
>>>>all _caller_ classes. That would even allow for public helper methods which 
>>>>are perfectly save.
>>>>
>>>>
>>>
>>>This is a point on which Mark and I differ, so if this is implemented I 
>>>prefer to do it as an option, perhaps using a different annotation, e.g. 
>>>@RequiresPrivileges.  My concern is that there could be any number of 
>>>callers, so the task of finding and weaving them all is a large one (I 
>>>wouldn't even know what existing libraries will perform for me a search for 
>>>all callers of method Foo#bar(), and what about reflection-based 
>>>invocations?), and it means you can't simply distribute a library and call 
>>>it "privilized."  :)  Of course, none of this is anything you can't do with 
>>>e.g. AspectJ, but as mentioned in the overview the [privilizer] code adds no 
>>>runtime dependencies (not even its own API jar!).
>>>
>>>Matt
>>> 
>>>LieGrue,
>>>>strub
>>>>
>>>>
>>>>
>>>>----- Original Message -----
>>>>> From: Matt Benson <gudnabr...@gmail.com>
>>>>> To: Commons Developers List <dev@commons.apache.org>
>>>>> Cc:
>>>>> Sent: Tuesday, November 20, 2012 6:40 AM
>>>>> Subject: Re: [privilizer] new sandbox component
>>>>>
>>>>>G lad to hear it, Phil!  I was originally calling it "privileged method
>>>>
>>>>> weaver" but that's a little long for a Commons component.  Mark
>>>>> Struberg
>>>>> came up with "privilizer" for me--short, but still fairly suggestive
>>>>> of the
>>>>> component's purpose.
>>>>>
>>>>> Matt
>>>>>
>>>>>
>>>>> On Mon, Nov 19, 2012 at 8:04 PM, Phil Steitz <phil.ste...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>>  On 11/19/12 2:42 PM, Matt Benson wrote:
>>>>>>  > Hi all,
>>>>>>  >   I have recently been working on some code to simplify the task of
>>>>>>  working
>>>>>>  > with the Java security APIs and an ASF colleague convinced me that the
>>>>>>  > package had a chance of being a viable Commons component.  I have
>>>>> added
>>>>>>  it
>>>>>>  > to the sandbox and it is available on the website by now as well.
>>>>>>  > Typically code that is too "done" doesn't fare too well
>>>>> at the ASF in
>>>>>>  > general; one obvious improvement that might be made would be the
>>>>>>  > replacement of Javassist with ASM or perhaps BCEL, but the existing
>>>>>>  > implementation represented a path of least resistance for me.  Anyway,
>>>>>>  I'd
>>>>>>  > be glad for any feedback, questions, or tomatoes.
>>>>>>  >
>>>>>>  > Thanks,
>>>>>>  > Matt
>>>>>>  >
>>>>>>  Sweet!  I recently had need for exactly this.  Lets argue about the
>>>>>>  name - or not ;)  I love it!
>>>>>>
>>>>>>  Phil
>>>>>>
>>>>>>  ---------------------------------------------------------------------
>>>>>>  To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>  For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>For additional commands, e-mail: dev-h...@commons.apache.org
>>>>
>>>>
>>>
>>>
>>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>For additional commands, e-mail: dev-h...@commons.apache.org
>>
>>
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to