00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 using System;
00013 using System.Net;
00014 using Mcs.Epm.MicrosoftProject.mpFx.LoginWindowsWebService;
00015 using Microsoft.Office.Project.Server.Library;
00016
00017 namespace Mcs.Epm.MicrosoftProject.mpFx.Proxies
00018 {
00019 public class LoginWindowsProxy : LoginWindows
00020 {
00021 private static string _ContextString = string.Empty;
00022
00023 public static string ContextString
00024 {
00025 get { return _ContextString; }
00026 set { _ContextString = value; }
00027 }
00028
00029 protected override WebRequest GetWebRequest(Uri uri)
00030 {
00031 WebRequest webRequest = base.GetWebRequest(uri);
00032
00033 if (!string.IsNullOrEmpty(_ContextString))
00034 {
00035 webRequest.UseDefaultCredentials = true;
00036
00037 webRequest.Credentials = CredentialCache.DefaultNetworkCredentials;
00038
00039 webRequest.Headers.Add("PjAuth", _ContextString);
00040 webRequest.Headers.Add("ForwardedFrom", @"/" + ServicePaths.StatusingWebService);
00041
00042 webRequest.PreAuthenticate = true;
00043 }
00044
00045 return webRequest;
00046 }
00047
00048 public static void SetImpersonationContext(bool isWindowsUser,
00049 String userAccount,
00050 Guid userGuid,
00051 Guid trackingGuid,
00052 Guid siteId,
00053 String lcid)
00054 {
00055 _ContextString = GetImpersonationContext(isWindowsUser,
00056 userAccount,
00057 userGuid,
00058 trackingGuid,
00059 siteId,
00060 lcid);
00061 }
00062
00063 private static String GetImpersonationContext(bool isWindowsUser,
00064 String userAccount,
00065 Guid userGuid,
00066 Guid trackingGuid,
00067 Guid siteId,
00068 String lcid)
00069 {
00070 var contextInfo = new PSContextInfo(isWindowsUser,
00071 userAccount,
00072 userGuid,
00073 trackingGuid,
00074 siteId,
00075 lcid);
00076
00077 string contextString = PSContextInfo.SerializeToString(contextInfo);
00078 return contextString;
00079 }
00080 }
00081 }