Jakarta ee 如果用户尚未对Java EE中的web模块进行身份验证,EJBContext#getCallerPrincipal()将返回什么?

Jakarta ee 如果用户尚未对Java EE中的web模块进行身份验证,EJBContext#getCallerPrincipal()将返回什么?,jakarta-ee,authentication,servlets,ejb,userprincipal,Jakarta Ee,Authentication,Servlets,Ejb,Userprincipal,为了让Servlet获得web用户的主体,他将调用HttpServletRequest#getUserPrincipal()。根据,如果用户尚未对自己进行身份验证,此方法将返回null。有道理 如果企业java bean(EJB)想要获取用户的主体,他将调用EJBContext\getCallerPrincipal()。但是,根据,此方法从不返回null 那么它会返回什么呢?虽然很遗憾,我无法参考任何类型的文档来确切说明为未经身份验证的用户调用EJBContext#getCallerPrinci

为了让Servlet获得web用户的
主体
,他将调用
HttpServletRequest#getUserPrincipal()
。根据,如果用户尚未对自己进行身份验证,此方法将返回
null
。有道理

如果企业java bean(EJB)想要获取用户的主体,他将调用
EJBContext\getCallerPrincipal()
。但是,根据,此方法从不返回null


那么它会返回什么呢?虽然很遗憾,我无法参考任何类型的文档来确切说明为未经身份验证的用户调用
EJBContext#getCallerPrincipal()
时会发生什么,但我使用Glassfish 3.1.2.2(构建5)进行了实验。它表明getCallerPrincipal()确实将返回一个
主体
,并且调用该主体的toString()或getName()都将返回字符串匿名。这也许是个好消息