ibm cloud怎么使用
在云上进行开发的优势吸引了许多组织。 但是,与在私有本地网络中运行的应用程序相比,在可通过Internet访问的公共云中运行的应用程序面临更大的安全风险。
本系列的第1部分介绍了如何配置具有身份传播的服务提供商(SP)启动的SSO。 它展示了如何启用Java™EE安全性以及如何在不同的域上传播经过身份验证的主题。 本部分(第2部分)介绍了如何使用IBM®Cloud设置混合云环境。 您将了解如何使用IBM Cloud Tools for Eclipse在IBM Cloud基础结构上部署应用程序。 您将IBM Secure Gateway服务配置为允许云应用程序调用在本地(本地计算机)网络上运行的服务。 通过使用第1部分中描述的SP发起的SSO模型,您可以在混合云中运行的所有应用程序之间实现SSO。
在完成本部分之前,您必须阅读并完成第1部分中的步骤。 您还需要一个IBM Cloud帐户来访问您的Cloud空间。
试用IBM Cloud 获取安全网关服务
本部分说明如何在IBM Cloud空间上部署第1部分中的两个应用程序-Frontend和CloudServices。 下图说明了此部分的解决方案。
要设置解决方案,请将Frontend Web应用程序和CloudServices Web服务及其服务器配置一起部署到IBM Cloud空间。 LocalServices应用程序和身份提供程序(IdP)仍在您的本地计算机上运行,因为您要模拟不得暴露给Internet的私有服务。
在此解决方案中,您的浏览器会调解SP和IdP之间的交互。 因此,您无需将IdP暴露给云。 另外,由于CloudServices应用程序调用LocalServices Web服务,因此您必须在IBM Cloud空间与本地计算机之间建立通信。 即,您在IBM Cloud上配置Secure Gateway服务,并在本地计算机上配置Secure Gateway客户端。
该解决方案还显示了会话亲缘关系如何在云中工作。 会话关联性是云解决方案的重要方面,因为在实际情况下,您可能希望根据负载来扩展应用程序。
由于安全限制和防火墙,公司Intranet中的本地应用程序和数据库通常无法访问。 IBM Secure Gateway解决方案提供了一种简单,可扩展且安全的方式来双向访问跨云和本地环境的本地资源:从云到本地,从本地到云。
在这一部分中,您将了解如何设置和配置安全网关服务和客户端,以允许CloudServices应用程序调用LocalServices应用程序公开的本地Web服务。 下图说明了连接体系结构。
Secure Gateway客户端在本地网络和IBM Cloud之间建立隧道。 配置安全网关解决方案需要执行以下步骤,本部分其余部分将对此进行说明:
支持的协议为HTTP,HTTPS,TCP和UDP。
由于Secure Gateway客户端打开了隧道,因此在安装它的计算机上不需要公用IP。 在本教程中,您将Secure Gateway客户端安装在本地计算机上。
另外,通过使用安全网关,您可以控制来自云的访问。 也就是说,您可以在网关客户端上设置ACL,以选择要将哪些内部Intranet服务公开给IBM Cloud。 在云方面,您可以通过配置哪些云服务可以访问网关客户端来增强本地服务的安全性。 此配置避免将所有本地服务公开给所有云应用程序。
Secure Gateway服务支持高可用性配置。 要了解详细信息,请参阅《 管理安全网关》 。
Secure Gateway
,然后单击Secure Gateway 。 Sample Gateway
。 现在,您会看到在安全网关仪表板中创建的网关。
在此仪表板中,您会看到有关新创建的网关的基本信息(右侧的灰色框):
要配置客户端而不复制两个字符串,可以将它们导出到文件中。
接下来,您在本地计算机上下载,安装和配置Secure Gateway客户端。 可以使用三种客户端将您的本地网络连接到IBM Cloud网关:
在本教程中,我们使用IBM Installer。 要安装Secure Gateway Client软件,请从“ Secure Gateway Dashboard”页面开始:
打开一个窗口,显示三个客户端选项。 它包括网关ID,网关服务的安全令牌以及“ 软件安装程序”列表中支持的操作系统的可执行安装程序列表。
您可以在可以连接到IBM Cloud的每台机器上安装Secure Gateway客户端。 如前所述,由于安全网关客户端将建立与云空间的连接,因此不需要公共IP地址。
如果将Secure Gateway客户端安装在Microsoft®Windows®计算机上,则向导将逐步指导您,提示您输入有关安装的基本信息,例如路径和语言。 因为安装很简单,所以我们提供了以下有关在Windows上安装Secure Gateway客户端的提示:
如果需要在其他操作系统上安装Secure Gateway客户端,请参阅联机帮助 。
安装成功完成后,启动Secure Gateway客户端。 在Microsoft Windows客户端中,单击开始->所有程序-> IBM文件夹 。 如果将Secure Gateway客户端安装为Windows服务,则可以从“ 服务”面板启动它。
要在您的安全网关客户端上配置ACL,请执行以下操作:
http://localhost:/dashboard
,其中
是您先前配置的。 默认值为9003
。 现在将显示Secure Gateway客户端控制台。
localhost
,端口是9445
。 如果将LocalServices应用程序安装在不同于安装Secure Gateway客户端的计算机上,则Secure Gateway客户端必须能够连接到LocalServices计算机。 否则,LocalServices应用程序公开的Web服务将对云不可见。
启动并连接网关客户端之后,请转到IBM Cloud控制台中的“ 安全网关仪表板 ”,您可以在其中看到连接状态和连接数已更改。
将LocalServices应用程序连接到IBM Cloud之后,您将定义一个目标。
localhost
)和端口( 9445
)。 在我们的示例中,因为安全网关客户端和LocalServices应用程序安装在同一台计算机上,所以我们使用localhost
作为主机名。 端口9445
是运行LocalServices应用程序的LocalServer Liberty配置文件的HTTPS端口。 单击下一步 。 LocalServices
,然后单击Finish 。 现在已创建您的目的地。 您在步骤5中指定的主机名是从客户端而不是从IBM Cloud服务器解析的,这就是我们可以在IBM Cloud目标配置向导中设置localhost
的原因。 另请注意以下几点:
在示例网关仪表板上,单击带有网关名称的灰色按钮时,将看到新创建的目的地。 如果单击齿轮按钮,则会在弹出窗口中看到目的地的详细信息,如下图所示。 在这里,您将看到Cloud Host:Port条目,这是为云中LocalServices目标生成的IBM Cloud服务的URL。 请记住目的地的Cloud Host:端口,因为在本教程的后面部分将需要它。
测试您的目的地:
/LocalServicesEJB/LocalMessageServiceService?wsdl
: https://cap-sg-prd-4.integration.ibmcloud.com:16977/LocalServicesEJB/LocalMessageServiceService?wsdl
如果正确配置了所有内容,则会在浏览器中看到LocalServices应用程序公开的Web服务的WSDL。 查看您启动的网关客户端命令行,然后看到类似以下示例的消息:
Connection #number is being established to localhost:9445
此步骤完成了配置,并使LocalServices应用程序可用于我们在IBM Cloud上部署的CloudServices应用程序。
要将现有应用程序部署到IBM Cloud,可以使用在第1部分中安装的Eclipse开发环境中可用的IBM Cloud Tools。 在此步骤中,您将创建一个新的IBM Cloud服务器并将其配置为在您的云空间中运行。 完成此步骤后,您可以从Eclipse工作区中部署Liberty服务器和应用程序。
现在,您将在已配置服务器的列表中看到IBM Cloud的新条目。
现在,您可以将FrontendServer和CloudServer Liberty概要文件以及在第1部分中在服务器上部署的Java EE应用程序一起部署到IBM Cloud。 通过使用IBM Cloud Tools,您可以将应用程序或整个Liberty服务器部署到IBM Cloud。 您在第1部分中执行的启用SP启动的SSO的配置将安装在IBM Cloud上,从而跨云启用SSO。 首先,部署CloudServer。 在步骤4中,部署FrontendServer。
在部署CloudServer概要文件之前,您必须修改执行对LocalServices应用程序的Web服务调用的Java类。 您执行此步骤是因为您配置了Secure Gateway客户端以将LocalServices Web服务公开给IBM Cloud。 此外,端点URL也从以下更改:
https://localhost:9445/LocalServicesEJB/LocalMessageServiceService
端点URL现在为:
https://Cloud Host : Port/LocalServicesEJB/LocalMessageServiceService
端点URL是您在1d中配置的目标。 将目标添加到Secure Gateway客户端 ,该目标是:
https://cap-sg-prd-4.integration.ibmcloud.com:16977/LocalServicesEJB/LocalMessageServiceService?wsdl
要修改Java类,请在CloudServicesEJB/ejbModule/it.ibm.cs.samples.ejbs
下的工作区中双击CloudMessageService.java类以将其打开。 更改String endpointURL
:
public String callLocalService()
{
LocalMessageServiceService service = new LocalMessageServiceService();
LocalMessageServiceSEI port = service.getLocalMessageServicePort();
BindingProvider bp = (BindingProvider) port;
String endpointURL = "https://cap-sg-prd-4.integration.ibmcloud.com:16977/LocalServicesEJB/LocalMessageServiceService";
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
return port.getLocalMessage();
}
通过从以前用来测试Secure Gateway客户端安装程序的站点中导出证书来导出新的LocalServices证书:
https://Cloud Host : Port/LocalServicesEJB/LocalMessageServiceService?wsdl
在此示例中,我们使用Firefox Web浏览器下载证书。 其他浏览器具有类似的步骤来下载证书。
Cloud Host : Port
替换为您的目的地。 将下载的LocalServices证书导入到CloudServer密钥库中。 首先,打开命令行,然后转到
。 然后,运行以下命令,其中
是在步骤3b中保存PEM文件的位置:
keytool -importcert -file -keystore cloudkey.jks -storepass passw0rd
要将CloudServer应用程序部署到IBM Cloud:
CloudServices
。 由于此名称将用作公共域名CloudService.mybluemix.net的一部分,因此它可能已在使用中。 在这种情况下,请尝试使用其他名称。 对于Buildpack URL,请将该字段留空,因为在本教程中我们不会使用它。 单击下一步 。
在“启动部署”窗口中,您会看到在IBM Cloud中创建的服务器的主机名。 在这种情况下,主机名是CloudService.mybluemix.net
。 您可能必须选择其他主机名,因为它是一个公共域,并且该名称不能重复。 您还可以查看和更改内存限制。 在这种情况下512 MB足够的内存。
在Eclipse控制台视图中,注意有关您的配置活动的所有日志。 部署可能需要几分钟。 部署成功完成后,您会在日志中看到一条消息,指出CloudServices应用程序已启动。
转到IBM Cloud控制台中的仪表板,您会看到新的IBM Cloud服务器已启动并正在运行。 在仪表板上,打开与CloudServices应用程序关联的详细信息。 您会看到服务器实例的数量,分配的内存以及日志文件。 从详细视图中,您还可以执行基本操作,例如停止和启动服务器。
部署FrontendServer概要文件的过程与部署CloudServer概要文件的过程相似。
在FrontendWeb/src/it.ibm.fe.samples.servlets
路径中的AbstractMessageServlet.java
文件中更改String endpointURL
:
protected void doService(HttpServletRequest request, HttpServletResponse response, ServiceResults serviceResults) throws ServletException,
IOException
{
...
String serverName = request.getServerName();
String endpointURL = "https://CloudServices.mybluemix.net/CloudServicesEJB/CloudMessageServiceService";
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
...
}
用您的实际域更改CloudServices.mybluemix.net
。
从以下URL导出证书:
http://CloudServices.mybluemix.net/CloudServicesEJB/CloudMessageServiceService?WSDL
与上一步一样,将CloudServices.mybluemix.net
替换为您的域。
下载CloudServices证书。 同样,我们使用Firefox,但是您可以使用具有类似步骤的其他浏览器来下载证书。
CloudServices.mybluemix.net
。 前端应用程序通过使用HTTPS上的SOAP来调用Web服务。 因此,您必须将CloudServices IBM Cloud证书导入到前端密钥库中。
首先,打开命令行,然后转到
。 然后,输入以下命令,其中
是您在步骤4b中保存PEM文件的位置:
keytool -importcert -file -keystore frontendkey.jks -storepass passw0rd
要将FrontendServer部署到IBM Cloud,请重复3d中为CloudServer配置文件完成的步骤。 区别在于域。 对于这种情况,我们使用FrontendServices.mybluemix.net
。 您可能需要选择其他域,因为此域名是公共域名,并且不能在全球范围内重复。
两台服务器(一个用于CloudServer概要文件,一个用于FrontendServer概要文件)现已安装在IBM Cloud上。
要测试解决方案,请输入以下URL,在其中将FrontendServices.mybluemix.net
替换为在IBM Cloud上部署时为FrontendServer概要文件选择的域名:
https://FrontendServices.mybluemix.net/FrontendWeb
输入alice
作为用户名,并输入passw0rd
作为密码。 现在,您将看到主页。
在左侧导航窗格中,单击“ 受限服务”链接。 如果正确完成了设置,则在页面正文中会看到来自LocalServices应用程序的消息。
在群集解决方案中,您必须考虑会话亲缘关系。 考虑一下我们在此解决方案中采用的SSO模型。 您根据身份提供者进行身份验证。 身份提供商将生成一个SAML令牌,并将其发布回服务提供商。 服务提供者使用SAML令牌中的信息来创建安全上下文。 服务提供商会记住SAML令牌,因为它需要SAML令牌将用户身份传播到Web服务。
在传统的群集环境(不在云中运行)中,通过启用会话亲缘关系,可以避免多次启动新的SSO进程的风险。 如果您有许多服务器实例,并且启用了会话亲缘关系,则群集前面的HTTP服务器会生成一个亲缘关系令牌(群集中服务器实例的字符串标识符)并将其附加到会话cookie。 这样,您的浏览器发出的每个请求都始终位于群集的同一应用程序服务器实例上。 在IBM Cloud中,我们没有集群,那么我们如何解决这个问题呢?
Cloud Foundry(CF)规范引入了多实例云环境中的HTTP路由和会话亲缘关系的概念。 我们在FrontendWeb应用程序项目中实现了会话亲和力。 要查看启用会话关联的代码,请从Eclipse工作区中打开/FrontendWeb/WebContent/affinitySetup.jsp
文件。 以下代码段中显示的该代码已经过修改,可以在IBM Cloud上运行。
boolean sessionfound = false;
Cookie[] cs = request.getCookies();
if (cs != null)
{
for (int index = 0; index < cs.length; index++)
{
Cookie c = cs[index];
if (c != null)
{
if (c.getName() == null)
continue;
else if (c.getName().equalsIgnoreCase("JSESSIONID"))
{
sessionfound=true;
break;
} else if (c.getName().equalsIgnoreCase("__VCAP_ID__"))
{
sessionfound=true;
break;
}
}
}
}
if (!sessionfound)
{
request.getSession(true);
}
您已经实现了安全的SSO架构,并将其部署到IBM®IBM Cloud实施中。 您还配置了安全隧道,以使用IBM Secure Gateway将私有Intranet服务公开给在云中运行的公共服务。 您学习了如何在多实例应用程序中实现会话关联。 在本系列的第3部分中,您将使用简单和受保护的GSS-API协商机制(SPNEGO)和Active Directory域服务,在云上扩展SSO场景以集成Microsoft Windows身份验证。
翻译自: https://www.ibm.com/developerworks/library/mw-1703-maurip2-bluemix/index.html
ibm cloud怎么使用