public virtual object GetUserToken(HttpContext context)
        {
            HttpClientContext clientContext = ((HttpClientContext)HttpClientContext.Adapt(context
                                                                                          ));
            Principal userPrincipal   = null;
            AuthState targetAuthState = clientContext.GetTargetAuthState();

            if (targetAuthState != null)
            {
                userPrincipal = GetAuthPrincipal(targetAuthState);
                if (userPrincipal == null)
                {
                    AuthState proxyAuthState = clientContext.GetProxyAuthState();
                    userPrincipal = GetAuthPrincipal(proxyAuthState);
                }
            }
            if (userPrincipal == null)
            {
                HttpConnection conn = clientContext.GetConnection();
                if (conn.IsOpen() && conn is ManagedHttpClientConnection)
                {
                    SSLSession sslsession = ((ManagedHttpClientConnection)conn).GetSSLSession();
                    if (sslsession != null)
                    {
                        userPrincipal = sslsession.GetLocalPrincipal();
                    }
                }
            }
            return(userPrincipal);
        }