`

Jetty -- 安全认证 -- 三种配置方法

阅读更多
How to Configure Security with Embedded Jetty
This example shows you how to setup web application security programmatically. Firstly, we'll look at how to do it if you use a web.xml file to declare your <security-constraint>s on urls within your webapp. Then, we'll show you how to do it in code instead, so that you don't even need to have a web.xml file.

For both of these examples, we need to configure jetty with a Realm. A Realm represents the runtime security environment - the users, their credentials and their roles. Jetty has a number of different Realm implementations:

org.mortbay.jetty.security.HashUserRealm obtains information from a properties file
org.mortbay.jetty.security.JDBCUserRealm obtains information from a database
org.mortbay.jetty.plus.jaas.JAASUserRealm uses JAAS for authentication and authorization
For these examples, we'll be using the org.mortbay.jetty.security.HashUserRealm. There is an example of a properties file for this Realm type in $jetty.home/etc/realm.properties.

We'll be using BASIC authentication for this example, but you can also set up FORM authentication in a similar way.

Using a web.xml file for security-constraints
If you're able to use a WEB-INF/web.xml file, you should configure it to use BASIC authentication, and to specify some urls that have security constraints. Here's an example:

<web-app>
  ...
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>A Protected Page</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
      <role-name>user</role-name>
      <role-name>moderator</role-name>
    </auth-constraint>
  </security-constraint>

  ...
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>MyRealm</realm-name>
  </login-config>
  ...
</web-app>
It is important to note the <realm-name>MyRealm</realm-name>. This is the linkage to the jetty Realm (a HashUserRealm in this instance). You'll specify this same name when you set up the Realm. Here's the code you need:

Server server = new Server();

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

WebAppContext webappcontext = new WebAppContext();
webappcontext.setContextPath("/mywebapp");
webappcontext.setWar("./path/to/my/war/orExplodedwar");

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

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

server.start();
server.join();
Programmatic security constraints (no web.xml)
If you don't wish to use a web.xml file, you can specify your <security-constraint>s in code instead. Here's how we'd code the same security constraints for the web.xml file above:

import org.mortbay.jetty.security.*;

Server server = new Server();

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

Constraint constraint = new Constraint();
constraint.setName(Constraint.__BASIC_AUTH);;
constraint.setRoles(new String[]{"user","admin","moderator"});
constraint.setAuthenticate(true);

ConstraintMapping cm = new ConstraintMapping();
cm.setConstraint(constraint);
cm.setPathSpec("/*");

SecurityHandler sh = new SecurityHandler();
sh.setUserRealm(new HashUserRealm("MyRealm",System.getProperty("jetty.home")+"/etc/realm.properties"));
sh.setConstraintMappings(new ConstraintMapping[]{cm});

WebAppContext webappcontext = new WebAppContext();
webappcontext.setContextPath("/mywebapp");
webappcontext.setWar("./path/to/my/war/orExplodedwar");
webappcontext.addHandler(sh);

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

server.setHandler(handlers);
server.start();
server.join();
Running
Assuming you deployed a webapp at the context path /mywebapp by running your application, then surfing to:

http://localhost:8080/mywebapp
will cause a dialog box to pop up prompting you for your username and password. This is how BASIC authentication obtains your authentication information.

The example properties file in $jetty.home/etc/realm.properties defines the following users and their roles:

user jetty with role user
user admin with roles server-administrator,content-administrator,admin
Our security constraint only allows users in these roles to access it:

admin
user
moderator
Therefore, using the default $jetty.home/etc/realm.properties, only the users:

jetty
admin
would be able to access any of the pages protected by the <security-constraint> in the webapp.

Therefore, you would log in as either the user jetty or the user admin (with passwords jetty and admin respectively) to be able to access the webapp.
分享到:
评论
1 楼 WHW1984 2012-04-12  
整个工程目录结构是咋样的 兄弟

相关推荐

    maven-jetty-plugin

    9. **安全性**:通过插件配置,可以集成Jetty的安全特性,如用户认证、角色管理和SSL加密,以保护开发环境中的敏感数据。 10. **插件管理**:在Maven的`pom.xml`文件中,可以控制Jetty插件的版本,确保与项目中其他...

    jetty-6.1.26.zip

    9. **安全性**:Jetty提供了安全模块,支持基本的认证机制,如HTTP Basic和Digest,以及SSL/TLS加密,确保数据传输的安全性。 10. **Maven插件**:对于使用Maven构建项目的开发者来说,Jetty还提供了Maven插件,...

    jetty所需jar包

    5. **jetty-security.jar**:用于处理安全性和认证,包含Jaas登录服务、BasicAuthenticator等。 6. **jetty-util.jar**:这是Jetty的一般工具类库,提供了许多实用工具,如异步事件处理、线程池、URL处理等。 7. *...

    jetty-9.4.6

    8. **jetty-security**:提供身份验证和授权功能,支持基本认证、表单认证等安全机制。 9. **jetty-util**:包含各种通用工具类和实用程序,方便开发。 10. **示例和文档**:压缩包中可能还包含一些示例应用程序和...

    jetty-distribution-9.4.31.v20200723_安装包.rar

    7. **安全性和认证**:Jetty提供了强大的安全框架,支持多种认证机制,如基本认证、摘要认证、表单认证等,同时支持SSL/TLS加密,确保数据传输的安全。 8. **模块化设计**:Jetty采用模块化设计,用户可以根据需要...

    jetty-distribution-9.4.5.v20170502

    在安全性方面,Jetty提供了内置的SSL/TLS支持,可以方便地配置和管理证书,确保Web应用的数据传输安全。并且,它与Java的JASPI(Java Authentication and Authorization Service)接口兼容,允许用户集成各种认证和...

    jetty-distribution-9.0.6.v20130930

    - **更好的安全管理**:提供了更完善的用户认证和授权机制,增强了安全性。 3. **使用Jetty在安卓上的应用**: - **移动Web服务**:Jetty可以在安卓设备上搭建本地Web服务器,用于提供API接口或者离线Web应用。 ...

    jetty-7.5 资源包

    6. **安全与认证**:Jetty支持多种安全模型,包括基本认证、Digest认证以及SSL/TLS加密。可以在配置文件中设置角色和用户,以实现Web应用的安全访问。 7. **性能优化**:Jetty提供了很多优化选项,例如调整线程池...

    jetty start 9.2.13 项目所需要的完整jar包,免费。jetty启动调试

    8. **jetty-security-9.2.13.v20150730.jar**:提供了安全相关的功能,如基本认证、表单认证以及SSL/TLS加密。 9. **javax.servlet-api-3.1.0.jar**:这是Servlet 3.1规范的API接口定义,允许在Jetty上运行兼容该...

    最新virgo-jetty-server

    5. **安全性**:Virgo-jetty-server可能包含了安全相关的组件,如用户认证、授权和会话管理,以保护应用免受未经授权的访问。 6. **扩展性**:Virgo服务器和Jetty都具有良好的扩展性,可以通过添加新的模块或插件来...

    jetty-security-9.3.10.M0.zip

    Jetty Security 9.3.10.M0是Jetty服务器的一个版本,专注于安全性方面的功能。...这个特定的版本9.3.10.M0...对于希望深入了解Jetty安全机制或者需要定制相关功能的开发者来说,这个开源项目提供了丰富的资源和可能性。

    jetty-distribution

    6. **安全**:Jetty提供了强大的安全特性,包括基本认证、Digest认证、SSL/TLS支持以及会话管理。默认配置下,用户需要根据自己的需求进行安全设置,以确保应用的安全性。 7. **性能优化**:Jetty以其高效的内存...

    jetty-distribution-8.1.21.v20160908.zip

    安全性方面,Jetty支持基本的认证机制,如HTTP Basic Auth和Form-based Auth,还可以通过集成Spring Security等框架来实现更复杂的权限管理。 总的来说,Jetty 8.1.21作为一个成熟的Web服务器和Servlet容器,提供了...

    jetty-9.0开发包

    7. **安全特性**:该开发包中包含了安全模块,如JAAS(Java Authentication and Authorization Service)支持,用于实现用户认证和权限控制。Jetty还支持HTTPS和SSL/TLS加密,确保数据传输的安全性。 8. **集成性**...

    jetty-distribution-9.4.1

    7. **安全特性**:Jetty支持多种认证机制,如Basic Auth、Digest Auth、Form Auth等,并且提供了SSL/TLS加密功能,保障了通信的安全性。 8. **性能优化**:Jetty团队不断进行性能优化,确保Jetty在处理请求、响应和...

    jetty-distribution-9.0.0.M3.zip

    7. **安全特性**:Jetty 9提供了强大的安全特性,如基本认证、digest认证、SSL/TLS加密以及基于角色的访问控制,确保了Web应用的安全性。 8. **部署与热更新**:Jetty支持war文件的自动部署和热更新,开发者可以...

    jetty-distribution-9.4.6.v20170531

    7. **安全性**:Jetty提供了安全模块,支持多种认证机制,如Basic Auth、Digest Auth和Form Auth,以及SSL/TLS加密,确保了Web应用的数据安全。 8. **WebSocket支持**:Jetty 9.4.6版本支持WebSocket协议,允许双向...

    jetty-distribution-8.1.8.v20121106

    8. **安全特性**:Jetty提供了基本的安全管理,包括角色认证、SSL/TLS支持和基于容器的身份验证。在8.1.8.v20121106中,开发者可以配置这些特性来保护他们的Web应用程序。 9. **JMX支持**:Jetty通过Java ...

    acegi-security-jetty-0.8.2.jar.zip

    使用Acegi Security时,开发者需要配置安全上下文(Security Context),定义访问控制规则,以及设置用户认证和授权的策略。在Jetty环境中,Acegi Security的配置可能涉及到创建自定义的过滤器链,这些过滤器会在...

    acegi-security-jetty-0.7.1.jar.zip

    在实际使用中,开发者需要配置Acegi Security的相关bean以定义安全策略,并在Jetty服务器的启动脚本或配置文件中指定Acegi Security的过滤器,以确保在请求到达Servlet之前进行身份验证和授权检查。此外,可能还需要...

Global site tag (gtag.js) - Google Analytics