2013-07-16 52 views
0

我使用基本身份驗證碼頭,我需要在我的單元測試來驗證我的客戶,但我得到這個:碼頭認證JDBC

WARN: AUTH FAILURE: user admin 
Failed : HTTP error code : 401 

我不明白什麼是錯的。

如果我使用屬性文件這樣它的作品:

realm.properties

admin: adminpwd,admin,user 

但是,如果使用的屬性從我的數據庫中的信息文件,我得到了錯誤401

realm.properties

jdbcdriver = org.postgresql.Driver 
url = jdbc:postgresql://localhost:5432/test 
username = postgres 
password = test 
usertable = admins_users 
usertablekey = id 
usertableuserfield = user 
usertablepasswordfield = userpdw 
roletable = roles 
roletablekey = id 
roletablerolefield = role_name 
userroletable = users_roles 
userroletableuserkey = user_id 
userroletablerolekey = role_id 
cachetime = 300 

如何使用此文件驗證我的客戶端?爲什麼我的數據庫中的用戶被忽略?

我啓動碼頭服務器這樣的:

private Server server; 

@Before 
public void before() throws Exception { 
    server = new Server(); 

    Connector connector = new SelectChannelConnector(); 
    connector.setPort(8080); 
    server.setConnectors(new Connector[] { connector }); 

    WebAppContext webappcontext = new WebAppContext(); 
    webappcontext.setContextPath("/upload"); 
    webappcontext.setWar("/home/user/upload.war"); 

    HandlerCollection handlers = new HandlerCollection(); 
    handlers.setHandlers(new Handler[] { webappcontext, 
      new DefaultHandler() }); 

    server.setHandler(handlers); 
    HashUserRealm myrealm = new HashUserRealm("MyRealm", 
      "/home/user/realm.properties"); 
    server.setUserRealms(new UserRealm[] { myrealm }); 

    try { 
     server.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

回答

0

您所配置的JDBCLoginService這裏所提到的,對不對?

http://www.eclipse.org/jetty/documentation/current/configuring-security.html#jdbc-login-service

您還可以編輯的jetty.xml文件並啓用dumpOnServerStart選項,你應該看到的東西是如何配置的列表,這將確保你有正確的映射到位。

更多的轉儲功能在這裏:

http://www.eclipse.org/jetty/documentation/current/jetty-dump-tool.html

+0

是在JDBCLoginService和我的數據庫都不錯。但是我沒有使用jetty.xml,因爲在我的項目中沒有檢測到這個文件。然後,我用的web.xml從我的web服務和代碼: 這有可能使與代碼轉儲? – John

+0

你怎麼發射碼頭呢? maven插件?你的jdbcloginservice在哪裏定義? –

+0

我編輯我的第一篇文章與java代碼 – John