Pages: 1
- Forum Index
- » General Adobe Connect Topics
- » SWF parameters/traffic when proxying under different domain/URI
#1 2008-12-02 06:28:12
- Peter.Kehl
- Member Rank:
New Member
What's This - Posts: 3
SWF parameters/traffic when proxying under different domain/URI
RESOLVED
Issues when reverse-proxying Adobe Connect, and with single sign-on via Novell iChain
Update: I solved this, see the reply to this post.
The issue original issue in short: I'd like to have /common/meeting/launcher/openmeeting.swf and /common/meeting/shell/shell_sgn.swf work through reverse proxy. The external domain name is different than internal domain of the Adobe Connect server. The Connect server knows itself only under the internal domain. How can I do that, please?
Long story:
I'd like to use same Adobe Connect instance for employees and for unauthenticated guests, but under different domains or URIs (due to different single sign-on policies). I wanted to use that with Apache 2 mod_proxy in Reverse-Proxy mode and some business logic in between.
I have that working for Connect HTTP and non-HTTP traffic, but only if the external and internal domain names and URIs are the same. E.g.: connect.happysmile.com/meeting-name on internet -> same domain and url on mod_proxy -> same domain and url on internal Adobe Connect server.
When I proxy from connectguest.happysmile.com/meeting-name, I sign the guests in by internal call to /system/login-guest and then I send them the cookie. I rewrite URIs to internal connect.happysmile.com and the response HTTP redirects back to external connectguest.happysmile.com. But it fails after the browser invokes following SWF files: openmeeting.swf and shell_sgn.swf (when via Adobe Connect Add-In). I also modify following of their parameters to contain connectguest.happysmile.com: swfUrl, aicc_url, htmlUrl, host. But that still doesn't help - SWF just still contacts original server connect.happysmile.com. I use a different domain name (e.g. happymeeting.com) for RTMPS or non-HTTP traffic.
How could I fix that? I see those SWFs use the multiple parameters - are they documented anywhere, please? In addition to rewriting swfUrl, aicc_url, htmlUrl and host I changed proxy%3Dfalse to proxy%3Dtrue but that didn't help.
/common/meeting/launcher/openmeeting.swf:
swfUrl=http://connect.happysmile.com/common/meeting/shell/shell.swf%3Froom%3D67166;session%3DMyBreezeCookie%26ticket%3Dn7tf5479p9xi%26proxy%3Dfalse%26appInstance%3D7/67166/%26aicc_url%3Dhttp%3A%2F%2Fconnect.happysmile.com%2Fservlet%2Fverify%3Fsco-id%3D67166%26host%3Dconnect.happysmile.com%26path%3D/petes1%26sco-id%3D67166%26ticket%3Dn7tf5479p9xi%26transcript-id%3D69717%26protos%3Drtmps:443%26origins%3Dlocalhost:8506%26edges%3Dhappymeeting.com%26lang%3Den%26account_id%3D7&htmlUrl=http://connect.happysmile.com/petes1%3Flauncher%3Dfalse&mode=auto&msg=&lang=en&close_meeting=
/common/meeting/shell/shell_sgn.swf:
/common/meeting/shell/shell_sgn.swf?room=67166;session=MyBreezeCookie&ticket=n7tf5479p9xi&proxy=false&appInstance=7/67166/&aicc_url=http://connect.happysmile.com/servlet/verify?sco-id=67166&host=connect.happysmile.com&path=/petes1&sco-id=67166&ticket=n7tf5479p9xi&transcript-id=69717&protos=rtmps:443&origins=localhost:8506&edges=happymeeting.com&lang=en&account_id=7
Version: Adobe Connect Pro 700_r712
Last edited by Peter.Kehl (2008-12-10 05:59:43)
Offline
#2 2008-12-10 04:55:00
- Peter.Kehl
- Member Rank:
New Member
What's This - Posts: 3
Re: SWF parameters/traffic when proxying under different domain/URI
ACCEPTED SOLUTION
My findings and work-around limitations of Adobe Connect when reverse-proxying it
- external and internal server name of the Connect service must be the same. Otherwise the client (SWF or Add-In) learns from the server what the server calls itself, and it tries to talk to the server under that (internal) name.
--- When I've tried to have different external and internal names, I also replaced all references to the internal server name from URI of HTTP requests (at least the references I could see). I've done it by Apache RewriteRules. But even then the client learned about the internal name and used it.
- it's OK to SSL-ize on the reverse proxy, i.e. use https for external protocol and http for internal protocol. The client works fine.
About single-signing via Novell iChain
If you use Novell iChain (reverse proxy, SSLizer and a single sign-on manager) and you turn on passing authorization header, then beware
- for users with Connect login and password, it's OK to pass iChain Authorize headers to the Connect server. The header is ignored.
- when a guest accesses a meeting, then do not pass iChain Authorize headers to the Connect server. Otherwise you'll get a HTTP authentication form mentioning 'Durin'. That's after I logged the guest in using /system/login-guest API call and the guest already has BREEZESESSION cookie. (This happens only while testing guest access via a fully password-protected iChain; my real guests don't have iChain passwords).
My solution with Novell iChain
Requirements:
iChain-based single-sign on for employees
nice guest form for external guests
Solution: A proxy with business logic that single-signs on and redirects employee meeting links.
Use Apache2 with mod_rewrite, mod_proxy, mod_headers and mod_setenvif, mod_php and PHP5. Note that Connect URIs get very long, and Apache2 core/rewrite logs truncate the log lines after c.a. 1240 letters! Ethereal/tcpdump/wireshark is very handy to check both long URIs and HTTP headers.
Have 2-3 iChain rules:
/internal/* is password-protected
You may want to password-protect /admin. Anything else is public.
Employees use links like connect.myhappycompany.com/meeting-name. Guests use links like connect.myhappycompany.com/guest/meeting-name.
Then I have several Apache rules in a vhost config:
#outside <Directory> - otherwise RewriteRules work differently
RewriteEngine on
browser-redirect to /internal/meeting-name
# Capture requests coming from the Windows Or Mac (or any) Connect Add-in
RewriteCond %{HTTP_REFERER} ^.*connectaddin.*$ [nocase]
RewriteRule (.*) http://connect.myhappycompany.com$1 [P,L]
# Following is only when testing guess access via fully password-protected iChain accelerator:
# Following RewriteRule doesn't change any URL. I just use it for its side effect - to set
# HAS_BREEZE_SESSION.
# We need to set HAS_BREEZE_SESSION to control the following RequestHeader. But
# we can't set HAS_BREEZE_SESSION in SetEnvIf, because we can't use cookies
# in condition part of SetEnvIf. Therefore we use RewriteRule
# only for its side effect - to set an environment variable based on Cookie.
RewriteCond %{HTTP_COOKIE} BREEZESESSION [nocase]
RewriteRule .* - [env=HAS_BREEZE_SESSION:TRUE]
RequestHeader unset Authorization env=HAS_BREEZE_SESSION
# We need to rewrite this to itself and also to actually have favicon.ico under webroot.
# If we didn't rewrite it then it was handled by another rule that rewrote it to /internal/favicon.ico.
# If we rewrite /favicon.ico to itself but there was no favicon.ico under webroot, then
# Apache tried to invoke /error/HTTP_NOT_FOUND.html.var which later on redirected to
# http(s)://connect.myhappycompany.com/internal/error/HTTP_NOT_FOUND.html.var - before I used ErrorDocument
# That made things very confusing when testing without iChain
RewriteRule ^/favicon.ico$ /favicon.ico [QSA,L]
# Redirect / to /internal/admin/home so that admin interface is iChain-protected
# and single-signed on. Must not have trailing / - Connect requirement.
RewriteRule ^/?$ https://connect.myhappycompany.com/internal/admin/home [R,L]
# /internal/.* request - already authorized by iChain - but no cookie.
# We call set_breeze_cookie.php which logs
# the user on to Connect via its API and passes the cookie to the browser. Then it redirects them
# to the page they requested - /meeting-name.
RewriteRule ^/internal/(.*) /internal/set_breeze_cookie.php?/$1 [L]
# Similar to how we handle /internal/* just above
RewriteCond %{HTTP_COOKIE} !BREEZESESSION [nocase]
RewriteRule ^/admin/(.*) /internal/set_breeze_cookie.php?/admin/$1 [L]
# Some rules to handle special URLs under /guest
# When a guest visits /guest/meeting-name for the 1st time - with no cookie, then the above
# mechanism kicks in and it redirects to /meeting-name which works fine.
# But if the guests visits /guest/meeting-name again and with a cookie, then the above does
# not activate. If we didn't have the following rule then it would proxy to
# http://connect.myhappycompany.com/guest/meeting-name which would not work!
# Therefore here we client-redirect the guest to /meeting-name
RewriteCond %{HTTP_COOKIE} BREEZESESSION [nocase]
RewriteRule ^/guest/(.*) https://connect.myhappycompany.com/$1 [R,L]
RewriteCond %{HTTP_COOKIE} !BREEZESESSION [nocase]
RewriteRule ^/guest/(.*) /guest/login_form.php?room=$1 [QSA,L]
RewriteCond %{HTTP_COOKIE} !BREEZESESSION [nocase]
# Request with no cookie and other than /internal or /guest or /admin - so it
# must be /meeting-name, therefore let's client-redirect
# them to /internal/meeting-name. Here we specify https, because if we
# just redirected to /internal$1 Apache would generate the redirection
# link as http!
RewriteRule (.*) https://connect.myhappycompany.com/internal$1 [R,L]
# Any other requests have the cookie set already - so just pass to the Connect server
RewriteRule (.*) http://connect.myhappycompany.com$1 [P,L]
Last edited by Peter.Kehl (2008-12-10 06:28:53)
Offline
#3 2009-06-11 02:08:55
- jheyne
- Member Rank:
Participant
What's This - Posts: 7
Re: SWF parameters/traffic when proxying under different domain/URI
Hello Peter,
i am trying to run connect pro via Apache Reverse proxy. Fiirst only HTTP and later HTTPS.
Could you tell me how you did it?
Do you use ProxyPass oder modrewrite?
thanks and best regards
Joerg Heyne
Last edited by jheyne (2009-06-11 02:09:32)
Offline
#4 2009-06-11 04:03:28
- Peter.Kehl
- Member Rank:
New Member
What's This - Posts: 3
Re: SWF parameters/traffic when proxying under different domain/URI
Joerg,
I've used Apache mod_proxy in the reverse proxy mode. I've also used mod_rewrite, but that was for our extra functionality. All the details that I can provide are on this thread already and I'm not on the project anymore. For SSL (HTTPS) my company used Novell iChain, no idea on details.
Offline
Pages: 1
- Forum Index
- » General Adobe Connect Topics
- » SWF parameters/traffic when proxying under different domain/URI

