2009-03-02 2 views
2

저는 Citrix의 샘플 코드를 기반으로하고 클라이언트가 자신의 Secure Gateway (CSG) 공급자를 사용하도록 지시하는 ICA 파일을 생성하려고합니다. 필자의 구성은 ICA 파일의 서버 주소가 CSG 티켓으로 대체되고 트래픽이 CSG로 이동해야한다는 것입니다.CSG (Secure Gateway)를 사용하도록 Citrix 웹 사이트를 코딩하는 방법은 무엇입니까?

문제는 Citrix App Server (1494에서 ICA 세션을 제공함)와 CSG가 모두 Secure Ticket Authority (STA)를 통해 조정해야한다는 것입니다. 즉, STA는 CSA가 ICA 파일에 임베드해야하는 티켓을 보유하고 있기 때문에 내 코드가 ICA 파일을 생성 할 때 STA와 통화해야한다는 의미입니다. 혼란스러워? 확실한! 그러나 훨씬 더 안전합니다.

AppLaunchInfo launchInfo = (AppLaunchInfo)userContext.launchApp(appID, new AppLaunchParams(ClientType.ICA_30)); 
ICAFile icaFile = userContext.convertToICAFile(launchInfo, null, null); 

내가 ICA 세대에 SSLEnabled 정보를했지만, 그것은 충분하지 :

은 사전 CSG의 코드는 다음과 같습니다. 여기에 코드입니다 : 이제

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 Forums에서 찾을 코드를 기반으로; 그러나 팜과 연결하여 내 응용 프로그램 목록을 얻을 수있는 능력이 떨어집니다!

누군가가 작동하는 코드 예제를 가르쳐 줄 수 있습니까? 또는 참조 문서?

답변

1

문제의 코드는 기본적으로 옳았습니다. 그러나 시작 ICA 생성기에 구성을 주입하기가 너무 어려웠습니다.

참고 : WebInterface.conf 파일을 사용하여 올바른 설정을 결정하는 것이 좋습니다. 코드가 옳다하더라도 설정은 매우 민감합니다!

CSG (Citrix Secure Gateway)/STA (Secure Ticket Authority) 마술의 대부분은 팜에 처음 연결하기위한 정책이 설정 될 때 발생합니다. (

//Set the Secure Ticketing Authorities (STAs). 
STAGroup STAgr = new STAGroup(); 
STAgr.addSTAURL(@"http://[STA URL]/scripts/ctxsta.dll"); 

2) 당신이 CSG 연결을 만들어야합니다

1) 유효한 STAGroup이 있어야합니다 특히, Global.asax.cs에 , 당신은 다음과 같은 코드 블록이 있어야합니다 매핑 된 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) 당신은 당신이 CGP가 활성화되고 싶어하는 launchInfo을 알려줄 필요가 :

launchInfo.setCGPEnabled(true); 

경고 : 붉은 청어로 활성화 된 SSL을.

0

더 깨끗하고 구성 가능한이 작업을 수행하는 또 다른 방법이 있습니다. 이 코드는 기본 Citrix 웹 인터페이스에서 사용하는 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; 
0

내부 인증서 (신뢰할 수없는 루트)와 함께 JICA 클라이언트를 사용할 경우의이 문제점에 대한 또 다른 참고 사항입니다.

JICA 클라이언트는 신뢰할 수없는 루트의 인증서를 허용하지 않으므로 인증서를 Java CA 저장소에 추가해야합니다. Windows 스토어에 추가하면 아무런 효과가 없습니다!

dev에 루트 CA를 가져 오기, 다음 (C에서 일반적 : \ 프로그램 파일 \ 자바 \의 JRE ***)를 설치 최신 자바의 bin 디렉토리로 이동 :

keytool -import -trustcacerts -keystore "..\lib\security\cacerts" -file "c:\temp\root.cer" -alias myroot 

다음 명령을 실행

당신이 [sic]으로 변경해야하기 때문에 Google에 비밀번호를 알려 드리겠습니다.

관련 문제