我正在使用Metro和Tomcat堆栈开发Java的Web服务,我的问题在于用户身份验证。我了解Tomcat可以使用多个外部身份验证领域,例如JDBCRealm或JNDIRealm,我希望我的最终用户为他们各自的领域配置他们的Tomcat安装。
现在,我在webservice-methods中需要的是用户用来登录的用户名(或id,一些独特的东西),无论具体领域如何。我从哪里得到它?显然我到目前为止搜索了错误的关键词 - 我想要使用的概念是否有特定的名称?
提前致谢!
答案 0 :(得分:2)
WebServiceContext#getUserPrincipal()
可以使用已登录的用户,该用户返回Principal
个实例,该实例又有getName()
方法。
E.g。
@Resource
private WebServiceContext context;
@WebMethod
public String hello() {
Principal user = context.getUserPrincipal();
return (user != null) ? user.getName() : "(not logged in)";
}
顺便说一下,这是HttpServletRequest#getUserPrincipal()
获得的封面。