If you're opening a browser for the user, and the page will be requested over HTTPS, then the easiest way would be to add a Basic Authorization header to the initial request, and have your page go off of that.
In C#, the code to pull out the name/password would be like so:
string authHeader = application.Request.Headers["Authorization"];
if (authHeader.ToUpper().Contains("BASIC"))
{
//get the user's name/password
string decodedResponseString = Encoding.Default.GetString(Convert.FromBase64String(authHeader.Substring(6)));
int dividerIndex = decodedResponseString.IndexOf(':');
userName = decodedResponseString.Substring(0, dividerIndex);
password = decodedResponseString.Substring(dividerIndex + 1);
Creating the header in the desktop application would be the above, but reversed (i.e. addheader('authorization', 'basic (username:password encrypted in base 64)').
Using the header like so would be the standard way to do this, but in reality you could probably just make your own header (or cookie) with a custom login algorithm information
edit:
Actually this might not work; I'm not sure if you'd have enough control over the browser to alter the headers when requesting a page