我正在使用glassfish服务器并实现可以从Web或移动客户端使用的Rest webservices。 我现在想要使用ssl证书保护这些web服务并在客户端和服务器之间创建会话。我还没有购买任何域名或服务器空间,并尝试在我的本地计算机上构建它。 如何在本地主机上为glassfish配置免费的ssl证书。
谢谢, 帕
答案 0 :(得分:2)
Hotcoder24,
据我了解您的问题和评论中的问题,您希望通过HTTPS与您的服务进行通信。使用应用程序服务器时,这很容易。实际上,这是通过web.xml文件中的配置完成的。
让我们从使用maven archetype jersey-quickstart-webapp创建的简单Web应用程序开始,如Jersey tutorial中所述。
mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false -DgroupId=com.example -DartifactId=simple-service-webapp -Dpackage=com.example -DarchetypeVersion=2.14
这将创建一个包含单个资源的Web应用程序,该资源可以部署到Glassfish服务器(生成war文件)。
@Path("myresource")
公共类MyResource {
/**
* Method handling HTTP GET requests. The returned object will be sent
* to the client as "text/plain" media type.
*
* @return String that will be returned as a text/plain response.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it!";
}
}
首先,您应该创建一个用户并使用Glassfish控制台(http://localhost:4848/
)将其添加到组中。最简单的方法是使用文件领域。该过程描述为here。让我们创建一个名为“user”的用户和名为“users”的组。
如果您部署了该应用程序,则在您输入网址http://localhost:8080/simple-service-webapp/webapi/myresource
时,该资源将在您的浏览器中可用。在我们在项目的xml文件中完成任何配置之前,资源是免费提供的。
现在让我们在web.xml文件中添加一些元素。
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--Some elements go here-->
<security-constraint>
<web-resource-collection>
<web-resource-name>GetIt</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>users</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
<security-role>
<role-name>users</role-name>
</security-role>
我们添加了树元素:
现在有必要将组链接到角色。这是使用特定于容器的glassfish-web.xml完成的。
<glassfish-web-app error-url="">
<security-role-mapping>
<role-name>users</role-name>
<group-name>users</group-name>
</security-role-mapping>
<!--some elements go here-->
现在,如果您将浏览器定向到http:// URL,那么您将切换到https://,如果没有带有<transport-guarantee>CONFIDENTIAL</transport-guarantee>
的user-data-constraint元素,情况就不是这样。