Creating a Personal Dynamic Channel on MyUW

Introduction

General Requirements and Guidelines

  1. Your web server and program

  2. The request MyUW sends

  3. The response from your program to MyUW

  4. Caching channel content

  5. Marketing your channel

  6. Taking care of your channel (Maintenance)

Procedure for Establishing a Personal Dynamic Channel

  1. Initial communication

  2. Set up the channel

  3. Go live!

Resources

Acknowledgments

Introduction

A "Personal Dynamic Channel" permits any web application/service to provide personalized information via a MyUW channel to the user who has authenticated to the MyUW session. This is accomplished by MyUW querying the service using the authenticated ID (UW NetID) of the user, and displaying the results in a channel. This specification will give departmental developers basic guidelines on how to set up their web applications to become channels on MyUW. Please direct any questions regarding this document to myuw@u.washington.edu.

General Requirements and Guidelines

1. Your web server and program

Your web application can be written in any programming language and running on any platform. The web server your program runs on must have a valid SSL certificate, which enables MyUW to access your application programmatically over https.

For security, we use X.509 certificate based two-way SSL authentication, where MyUW (the SSL client application) verifies the identity of your application (the SSL server application), and your application verifies the identity of the MyUW application. You need to configure your web server to require the client certificates of MyUW servers. The identity that MyUW uses is an UW Certificate Authority issued certificate. MyUW also accepts the UW CA certificate of your application.

Some of the services use the backdoor connections without SSL authentication due to performance and load issues. In this case, to protect your server from denial of service attacks, you must set up address-based protection by configuring your server to only serve requests from the corresponding backdoor IP addresses of MyUW servers. MyUW team will send you an email notification before adding machines or changing addresses. You need to update your settings within 24 hours of the notification.

MyUW is obliged to assert the user ID to your program. This may expose your server to large-scale abuse if any MyUW server is compromised. Therefore, you should keep an access log. If there is any security incident on MYUW server that could affect your channel, we will inform you the time frame and possibly the users affected. As you choose to populate personalized information, you accept MyUW's assertion of the user's authenticated identity. Furthermore, we recommend that the personal dynamic channels are read-only, and the data displayed should not be particularly sensitive.

We recommend that you have two application sites on your servers, one for testing and one for production. The MyUW test server (http://myuwtest.u.washington.edu) would point to your test site and the MyUW production server (http://myuw.washington.edu/) would point to your production site. This would give you full control of your releases. Once you have fully tested a new update on your test site via MyUW test, you can deploy it to the production site without any involvement of the MyUW team.

2. The request MyUW sends

If a user has subscribed to your channel on the MyUW page that the user is about to see/load on their browser, MyUW will send an https request to your program in the following format:

https://<your server host>/<your app path>/<your app name>?<the query string>

<the query string> : id=<the UWNetID of the user>&timestamp=<adecimal value of the system time in millisecond>

(i.e., id=whoishe&timestamp=1026769365762)

The timestamp indicates when MyUW sends the request. Your program may use the timestamp to determine if the request is worth a reply. For instance, some web servers can occasionally get confused and hold requests for a long time before presenting them to your program. To prevent servicing stale requests, check the timestamp and close the connection on any request older than n seconds. Your system needs to maintain accurate (to seconds) system time (i.e. synchronize it to time.u.washington.edu on Windows systems ) in order to use the timestamp.

Upon special request, MyUW can also send student number, student system key, employee number, or alumni advance ID in the query string if SSL is used.

3. The response from your program to MyUW

When your program receives the request from MyUW, it will return an HTML fragment that goes in the channel box on MyUW based on the following guidelines:

Your server and service must be robust. Your program should respond within a second under normal load. When generating a page, MyUW will wait for your content until a display timeout (which is set based on the longest average response time) occurs. If the content is not ready, MyUW would display this message in your channel:

"Waiting for content ... during busy times the wait may be longer.
Click the Reload button on the channel box to refresh."

In the meantime, MyUW continue waits for your response until it arrives or a socket read timeout (20 seconds) occurs. In later case, MyUW would display the error message in your channel at the next page load:

"The content is not available at this time. Please try again later.  Explainer"

This error message would also be displayed when MyUW receives an unsuccessful HTTP response code from your server or the response body contains invalid HTML.

To mitigate the customer impact of an outage, we recommend that you provide an alternative access to your service. If that is implemented, instead of displaying "Please try again later..." the link titled "Access the service directly" will be displayed.

The Reload button on the channel box serves two purposes:

  1. Reload the page when the channel is waiting for content, and anchor the page on the channel.
  2. Send a new request to your server to refresh the content in the channel and anchor the page on the channel.

4. Caching channel content

Once MyUW has received the content of a channel, it caches the content in the HTTP session. This reduces traffic to your server(s) and allows for quicker loading of the page - accelerate the user experience. When an user hits the Reload button on the channel box, MyUW will requests a fresh copy of the content from your server. If your server supports the conditional GET, we recommend that you configure the Last-Modified response header. MyUW would then use the If-Modified-Since header in the next request to pass the last-modified date back to your server for comparison. If a 304 status code is returned, it will use the cached copy instead.

5. Marketing your channel

If needed, we can subscribe your channel for your target users if they can be identified by their Whatami affiliations. Otherwise, you would need to notify them yourself (via email or an announcement on your departmental web site) when your channel is initially released on MyUW. You may also provide instructions to your users about how to subscribe it on MyUW page.

6. Taking care of your channel (Maintenance)

Since MyUW is a 24X7 service, as a trusted content provider you will ensure the stability and correctness of your channel. Once the channel is in production, MyUW will email a daily error report to the contact person for your channel. Please let MyUW know (myuw@u.washington.edu) if you have regular maintenance down time. You program is expected to return a user friendly error message during maintenance time.

Procedure for Establishing a Personal Dynamic Channel

1. Initial communication

Send an email to myuw@u.washington.edu with a general specification on the content you want to provide, a HTML mock-up page of the intended content, and when you plan to set up the channel.

2. Set up the channel

The MyUW team may arrange a meeting with you before setting up the channel on the MyUW test server. Please prepare the following information:

The placement of your channel (its position on the MyUW pages) may be determined in the meeting.

3. Go live!

MyUW releases are scheduled on Tuesday at around 8am. The normal time frame for establishing a personal dynamic channel is about a couple of weeks (mostly on testing the connection, authentication and adjusting the content format).

Resources

Acknowledgments

Thanks to Dan Boren and Scott Rose (Department of Computer Science and Engineering) for reviewing this document and providing valuable feedback.


Last updated: 10/7/2008
Contact MyUW
Copyright© 1998-2008, University of Washington.
MyUW® is a registered trademark of the University of Washington.