2009-03-02 8 views
2

私はCitrixのサンプルコードをベースとして、クライアントにSecure Gateway(CSG)プロバイダを使用するように指示するICAファイルを生成させようとしています。私の設定は、ICAファイルのサーバアドレスがCSGチケットに置き換えられ、トラフィックが強制的にCSGに送られることです。Secure Gateway(CSG)を使用するCitrix Webサイトのコーディング方法を教えてください。

Citrix App Server(1494でICAセッションを提供する)とCSGの両方がSecure Ticket Authority(STA)を通じて調整する必要があります。つまり、私のコードは、STAがICAファイルに埋め込まれる必要があるチケットをSTAに保持するため、ICAファイルを作成するときにSTAと対話する必要があります。混乱している?確かに!しかし、はるかに安全です。

前CSGコードは次のようになります。

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

私はICAの世代に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 Forumsで見つけたコードに基づいています。しかし、それは私の農場と接続し、私のアプリケーションリストを取得する能力を壊す!

誰かが動作するコードの例を私に指摘できますか?または参考資料ですか?

答えて

1

問題のコードは基本的には正しいですが、起動するICAジェネレータに設定を注入するのが難しかったです。

注:WebInterface.confファイルをガイダンスに使用することは、適切な設定を決定する良い方法です。たとえコードが正しかったとしても、設定は非常に面倒です!

ほとんどのCitrix Secure Gateway(CSG)/ Secure Ticket Authority(STA)の魔法は、ファームへの初期接続のポリシーが確立されたときに発生します。 (

//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); 

WARNING:赤ニシンとして有効にSSLを。

0

これを行うもう1つの方法は、よりクリーンで設定可能な方法です。このコードは、デフォルトのCitrix Web Interfaceが使用する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クライアントを使用することによるこの問題に関するもう1つの注意点。

JICAクライアントでは、信頼されていないルートから証明書を受け入れることができないため、証明書をJava CAストアに追加する必要がありました。それをWindowsストアに追加しても何の効果もありません!

あなたのdevのルートCAを取得し、その後、(Cの下で、通常:\プログラムファイル\のJava \のJRE ***)をインストールする最新のJavaのbinディレクトリに移動します。

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

次のコマンドを実行

私はあなたにあなたのためにパスワードを教えてあげます。[sic]

関連する問題