I did crack the .war file open - it looks like this is a JSF application
that uses basic auth. The app uses a @RequestScoped bean which uses @Inject
to get a Principal:
@Named
@RequestScoped
public class PrincipalTest {
@Inject
private Principal principal;
public String userName() {
return this.principal.getName();
}
}
I suspect (but guessing) the MP-JWT Principal injection is having an impact
on this.
Jon
On Mon, Oct 14, 2019 at 12:44 PM Zowalla, Richard <
[email protected]> wrote:
> Hi,
>
> I tested the attached WAR with M2,M3 and RELEASE, results below:
>
> - M2: works as stated by the user
> - M3: Exception as stated below by the user
> - Release: same as M3 (exception as stated below).
>
> Source-code would be beneficial for debug purpose :)
>
> Best,
> Richard
>
>
>
> Am Montag, den 14.10.2019, 06:11 -0500 schrieb Richard Monson-Haefel:
>
> It would be great if someone in the community could take a quick look at
>
> this and report back. It seems to be a bug, but I'm not sure.
>
>
> Anyone?
>
>
> ---------- Forwarded message ---------
>
> From: makkus <[email protected]>
>
> Date: Mon, Oct 14, 2019 at 5:14 AM
>
> Subject: CDI Principal injection: object is not an instance of declaring
>
> class
>
> To: <[email protected]>
>
>
>
> Hi Folks,
>
>
> in TomEE 8.0.0 there seems to be something wrong with the Principal
>
> injection: The follwoing code works fine in M2:
>
>
> package leaktest;
>
>
> import java.security.Principal;
>
> import javax.enterprise.context.RequestScoped;
>
> import javax.inject.Inject;
>
> import javax.inject.Named;
>
>
> @Named
>
> @RequestScoped
>
> public class PrincipalTest {
>
>
> @Inject
>
> private Principal principal;
>
>
> public String userName(){
>
> return principal.getName();
>
> }
>
> }
>
>
> Inside a JSF page I can use "User Name: #{principalTest.userName()}" to
>
> display the user name. (See attached leak2.war
>
> <http://tomee-openejb.979440.n4.nabble.com/file/t376354/leak2.war> or
>
> https://1drv.ms/u/s!AlHB9FAlFWW_iLJlTcyBEqApE_UAvQ?e=HODheK for example. )
>
>
>
> In 8.0.0. this is code will produce an IllegalArgumentException:
>
>
> java.lang.IllegalArgumentException: object is not an instance of declaring
>
> class
>
>
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>
> Method)
>
>
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> java.base/java.lang.reflect.Method.invoke(Method.java:566)
>
>
> org.apache.openejb.cdi.ManagedSecurityService$PrincipalInvocationHandler.invoke(ManagedSecurityService.java:183)
>
> com.sun.proxy.$Proxy72.getName(Unknown Source)
>
> leaktest.PrincipalTest.userName(PrincipalTest.java:25)
>
>
> leaktest.PrincipalTest$$OwbNormalScopeProxy0.userName(leaktest/PrincipalTest.java)
>
>
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>
> Method)
>
>
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
>
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> java.base/java.lang.reflect.Method.invoke(Method.java:566)
>
> javax.el.BeanELResolver.invoke(BeanELResolver.java:158)
>
> ...
>
>
>
> Doese someone kow if this code is unsupported in 8.0.0 ? How can I get a
>
> reference to the principal name in 8.0.0.
>
>
> Best Regards,
>
> Marcus
>
>
>
>
>
> --
>
> Sent from:
>
> http://tomee-openejb.979440.n4.nabble.com/TomEE-Users-f979441.html
>
>
>
>
> --
>
> Richard Zowalla, M.Sc.
> Research Associate, PhD Student | Medical Informatics
>
>
>
> Hochschule Heilbronn – University of Applied Sciences
> Max-Planck-Str. 39
> D-74081 Heilbronn
> phone: +49 7131 504 6791
> mail: [email protected]
> web: http://www.mi.hs-heilbronn.de/
>