我想将安全上下文传递给我的休息服务。
在服务器端,我尝试使用:
public Response postObject(@Context SecurityContext security, JAXBElement<Object> object) {
System.out.println("Security Context: " + security.getUserPrincipal());
.....
但实际上Syso是空的。
在客户端,我正在做:
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter("user", "password"));
那么,我是否必须在我的web.xml中更改一些内容以使其正常工作?
我希望它能在没有在tomcat用户xml中设置静态用户的情况下工作。所以我可以将安全上下文中的用户/密码与位于服务器端的“持久”用户/密码hashmap进行比较。但是当没有tomcat用户xml不能工作时,如何动态地将用户添加到该用户xml?当我有静态用户时,我无法注册新用户。我不想使用这种尝试:http://objecthunter.congrace.de/tinybo/blog/articles/89因为我只想使用像用户/密码的HashMap这样的半持久性。
除了另一个问题:为什么每个人在关于泽西岛的安全性时都会引用Apache HttpClient,当它像我写的那样工作时?
我的尝试是指这篇文章:
答案 0 :(得分:2)
您需要在服务器上设置应用程序,以便它需要基本身份验证。即在应用程序war文件的web.xml中包含类似以下内容的内容 - 否则Tomcat不执行身份验证,也不会填充安全上下文。
<security-constraint>
<display-name>Authentication Constraint</display-name>
<web-resource-collection>
<web-resource-name>all</web-resource-name>
<description/>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>authentication required</description>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>realm_name</realm-name>
</login-config>