Java apachekaraf中的基本身份验证
我有一个Java apachekaraf中的基本身份验证,java,osgi,cxf,basic-authentication,apache-karaf,Java,Osgi,Cxf,Basic Authentication,Apache Karaf,我有一个OSGi捆绑包,它部署在apachekaraf2.2.8中。在这个捆绑包中,我使用的是CXF和Camel路由。我编写了一个CXF拦截器,它执行基本身份验证:从数据库中获取所有现有用户并进行验证 问题是当调用方法handleMessage时,AuthorizationPolicy对象为空。它不提供任何凭据。这是我的密码: @Override public void handleMessage(Message message) throws Fault { A
OSGi
捆绑包,它部署在apachekaraf2.2.8
中。在这个捆绑包中,我使用的是CXF
和Camel
路由。我编写了一个CXF
拦截器,它执行基本身份验证:从数据库中获取所有现有用户并进行验证
问题是当调用方法handleMessage
时,AuthorizationPolicy
对象为空。它不提供任何凭据。这是我的密码:
@Override
public void handleMessage(Message message)
throws Fault {
AuthorizationPolicy policy = message.get(AuthorizationPolicy.class);
if (users == null) {
setLastAccessedTime(Calendar.getInstance());
}
if (!wasRecentlyAccessed()) {
users = this.loadUsers();
setLastAccessedTime(Calendar.getInstance());
}
for (String user : users.values()) {
LOGGER.debug("Existing user: " + user);
}
if (policy == null) {
LOGGER.error("User attempted to log in with no credentials");
sendErrorResponse(message, HttpURLConnection.HTTP_UNAUTHORIZED);
return;
}
String password = users.get(policy.getUserName());
if (password == null || !policy.getPassword().equals(password)) {
LOGGER.error("Invalid login authentication for user: " + policy.getUserName());
sendErrorResponse(message, HttpURLConnection.HTTP_FORBIDDEN);
}
}
我是否可以用Karaf为特定端点设置基本身份验证参数?是否有某种配置文件或其他东西?我在网上找不到任何东西…请看这里:
本文非常清楚地解释了如何使用apachekaraf
和Camel-Jetty
进行基本身份验证。稍后,您可以在apachekaraf
中部署的每个捆绑包上使用它