无论身份验证领域如何,都可以获取用户名

时间:2011-07-26 00:38:15

标签: java authentication jax-ws

我正在使用Metro和Tomcat堆栈开发Java的Web服务,我的问题在于用户身份验证。我了解Tomcat可以使用多个外部身份验证领域,例如JDBCRealm或JNDIRealm,我希望我的最终用户为他们各自的领域配置他们的Tomcat安装。

现在,我在webservice-methods中需要的是用户用来登录的用户名(或id,一些独特的东西),无论具体领域如何。我从哪里得到它?显然我到目前为止搜索了错误的关键词 - 我想要使用的概念是否有特定的名称?

提前致谢!

1 个答案:

答案 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()获得的封面。