2011-03-16 181 views
11

我有一个由Jetty提供支持的网站。码头网络服务器安全

我想使网站密码受保护(或类似)。

有没有一种方法可以通过单独配置来完成此操作(不需要触摸代码)。

所有帮助非常感谢。

+2

这一切都在文档中(http://wiki.eclipse.org/Jetty)。不幸的是,这些文档的组织很糟糕。 – skaffman 2011-03-16 10:21:37

回答

21

一种方法是为您的应用程序设置基本身份验证。你只应该这样做,如果你使用ssl,但是没有ssl的登录无论如何都不安全,所以我想你已经有了。

有多种方式码头要做到这一点,而这仅是其中之一。

首先,你必须确定你定义的所有用户,密码,角色等在码头的默认设置已经定义了一个名为“测试服”的境界境界。领域在文件/etc/jetty-testrealm.xml中定义。你可以使用这个领域或创建一个新领域。如果你定义了一个新的,你可以在同一个文件或单独的文件中定义它。如果您创建一个单独的文件,请记得在start.ini中包含该文件。

的/etc/jetty-testrealm.xml具有/etc/realm.properties的参考。这是您创建用户的地方。如果您只想使用测试领域,请记住删除已在realm.properties中定义的默认用户。

还有其他种类的领域实现,即使用用户数据的数据库。

接下来,打开/etc/webdefault.xml文件,并在底部添加这样的事情:

<security-constraint> 
    <web-resource-collection> 
    <url-pattern>/*</url-pattern>  <!--The url that should be protected --> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>admin</role-name>  <!--The required roles for accessing the url --> 
    <role-name>user</role-name> 
    <role-name>moderator</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>BASIC</auth-method>  <!-- Use http basic authentication --> 
    <realm-name>Test Realm</realm-name> <!-- Users are defined in this realm --> 
</login-config> 
+0

您还应该通过您的应用程序包含defaultDescriptor。上下文文件:/etc/webdefault.xml maximdim 2012-01-21 23:58:14

0

我发现,码头分布提供了非常有用的例子。 要使用来自文本文件的用户帐户使用基本身份验证,请查看您的{jetty.home}/demo-base/etc目录。将这两个文件复制到您的{} jetty.base/etc文件夹:realm.properties,测试realm.xml

码头,除非你告诉它不能正确加载这些文件。这可以通过添加下面的文字到start.ini或任何* .ini文件在您{} jetty.base夹/start.d来完成:

# Create and configure the test realm 
etc/test-realm.xml 
jetty.demo.realm=etc/realm.properties 

最后,创建一个web.xml文件(如果还没有完成),并在前面的答案中插入@ sstendal/@ Torsten提供的示例。它使用与jetty发行版的demo-base示例中相同的实名,因此它应该可以工作。 重新启动jetty并尝试访问您的任何Web资源。您的浏览器或客户端应询问您的凭据。例如,用户用户/密码。