gpt4 book ai didi

web-services - 在本地主机上的 glassfish 4.0 上实现 ssl

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:49 25 4
gpt4 key购买 nike

我正在使用 glassfish 服务器并实现可从 Web 或移动客户端使用的 Rest Web 服务。我现在想使用 ssl 证书保护这些 web 服务,并在客户端和服务器之间创建一个 session 。我还没有购买任何域名或服务器空间并试图在我的本地机器上构建它。如何在我的本地主机上为 glassfish 配置免费的 ssl 证书。

谢谢,帕万

最佳答案

Hotcoder24,

据我从您的问题和评论中了解到的问题,您希望通过 HTTPS 与您的服务进行通信。当您使用应用程序服务器时,这是小菜一碟。事实上,这是通过 web.xml 文件中的配置完成的。

让我们从一个使用 maven 原型(prototype) 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")

公共(public)类 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”的组。

如果您部署该应用程序,则在您输入 URL 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>

我们添加了树元素:

  • security-constraint 描述了要保护的 URL 模式,列出了允许访问它的角色,对您的问题来说最重要的是 user-data-constraint 元素,在我们的例子中它会打开 HTTPS。
  • login-config 元素指示服务器使用最简单的身份验证机制,这意味着当您尝试使用浏览器访问资源时,会显示一个对话框提示您输入登录名和密码;你的国名也供奉于此;
  • 最后一个元素定义了您使用的角色。

现在有必要将组链接到角色。这是使用特定于容器的 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 元素,情况就不是这样了。 .

关于web-services - 在本地主机上的 glassfish 4.0 上实现 ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com