我使用Citrix的示例代码作为基础,并试图让它生成ICA文件,指导客户端使用他们的安全网关(CSG)提供程序。我的配置是将ICA文件的服务器地址替换为CSG票证,并强制将流量转到CSG。
挑战在于Citrix App (在1494年提供ICA会话)和CSG必须通过安全票证管理局(STA)进行协调。这意味着我的代码在创建ICA文件时需要与STA对话,因为STA持有CSG需要嵌入ICA文件的票证。令人困惑?好的!但它更安全。
前CSG代码如下所示:
AppLaunchInfo launchInfo = (AppLaunchInfo)userContext.launchApp(appID, new AppLaunchParams(ClientType.ICA_30));
ICAFile icaFile = userContext.convertToICAFile(launchInfo, null, null);我试着向国际协力事业团提供SSLEnabled信息,但这还不够。这是密码:
launchInfo.setSSLEnabled(true);
launchInfo.setSSLAddress(new ServiceAddress("CSG URL", 443));现在,在配置我的农场时,我似乎需要注册STA:
ConnectionRoutingPolicy policy = config.getDMZRoutingPolicy();
policy.getRules().clear();
//Set the Secure Ticketing Authorities (STAs).
STAGroup STAgr = new STAGroup();
STAgr.addSTAURL(@"http://CitrixAppServerURL/scripts/ctxsta.dll");
//creat Secure Gateway conenction
SGConnectionRoute SGRoute = new SGConnectionRoute(@"https://CSGURL");
SGRoute.setUseSessionReliability(false);
SGRoute.setGatewayPort(80);
SGRoute.setTicketAuthorities(STAgr);
// add the SGRoute to the policy
policy.setDefault(SGRoute);这是基于我在Citrix论坛上找到的代码;然而,它破坏了我与农场连接并获取应用程序列表的能力!
有人能给我举一个代码的例子吗?还是一份参考文件?
发布于 2009-03-30 21:08:17
问题中的代码基本上是正确的,但我试图将配置注入启动ICA生成器。
注意:使用WebInterface.conf文件作为指导是确定正确配置设置的好方法。即使代码是正确的,配置也是非常敏感的!
大多数Citrix安全网关(CSG) /安全票证管理局(STA)魔术发生在建立到农场的初始连接策略时。具体来说,在Global.asax.cs中,必须有以下代码块:
1)您必须有一个有效的STAGroup:
//Set the Secure Ticketing Authorities (STAs).
STAGroup STAgr = new STAGroup();
STAgr.addSTAURL(@"http://[STA URL]/scripts/ctxsta.dll");2)您必须创建一个CSG连接(映射了STA ):
//create Secure Gateway conenction
SGConnectionRoute SGRoute = new SGConnectionRoute(@"[CSG FQDN without HTTPS]");
SGRoute.setUseSessionReliability(false);
SGRoute.setGatewayPort(443);
SGRoute.setTicketAuthorities(STAgr);3)需要设置策略默认值
// Create a DMZ routing policy
ConnectionRoutingPolicy policy = config.getDMZRoutingPolicy();
policy.getRules().clear();
policy.setDefault(SGRoute);4)您需要告诉launchInfo您希望启用CGP:
launchInfo.setCGPEnabled(true);警告: SSL已启用为红鲱鱼。
发布于 2009-04-03 18:19:04
还有一种更干净、更可配置的方法。可以设置代码以使用默认使用的webinterface.conf文件。
下面的代码应该替换上面示例中的所有farmConfig、STAGroup、ConnectionRoutinePolcy、mess。
InputStream inputStream = new FileInputStream(@"C:\temp\WebInterface.conf");
CtxConfig configInput = new CtxConfig(inputStream);
Map settingsMap = configInput.getSettingsMap();
WIConfiguration wiConfiguration = ConfigurationParser.buildWIConfiguration(settingsMap);
com.citrix.wing.config.Configuration config = new com.citrix.wing.config.Configuration();
config.setGlobalConfig(wiConfiguration.getGlobalConfig());
config.setMPSFarmConfigs(wiConfiguration.getMPSFarmConfigs());
config.setDMZRoutingPolicy(wiConfiguration.getDMZRoutingPolicy());
config.setClientProxyPolicy(wiConfiguration.getClientProxyPolicy());
// Create a StaticEnvironmentAdaptor instance.
WIASPNetStaticAdaptor staticEnvAdaptor = new WIASPNetStaticAdaptor(this);
// Create a WebPNBuilder instance.
WebPNBuilder builder = WebPNBuilder.getInstance();
Application["WebPNBuilder"] = builder;
// Create a WebPN instance from the configuration.
WebPN webPN = builder.createWebPN(config, staticEnvAdaptor);
Application["WebPN"] = webPN;发布于 2009-04-09 16:19:36
关于此问题的另一个注意事项是使用带有内部证书的JICA客户端(不受信任的根)。
JICA客户端不允许您接受来自不受信任的根的证书,因此需要将证书添加到Java存储区。把它添加到Windows商店没有任何好处!
获取dev根CA,然后导航到最新Java安装的bin目录(通常在c:\program \java\jre*下)
执行以下命令:
keytool -import -trustcacerts -keystore "..\lib\security\cacerts" -file "c:\temp\root.cer" -alias myroot 我会让你谷歌的密码,因为你应该改变它。
https://stackoverflow.com/questions/603682
复制相似问题