Partager via


Ways to pass security credentials to web service call

[1]

    1:  WS.Credentials = new System.Net.NetworkCredential(userName, password, domain);

If you want to pass explicit credentials and filter the record after that.

 

[2]

https://support.microsoft.com/kb/813834

    1:  myProxy.Credentials = System.Net.CredentialCache.DefaultCredentials

It will pick up the current logged in users’ credentials and return the data for him/her.

 

[3]

Using SharePoint object model, setting up our custom web service on SharePoint box and access it.

    1:              SPUser spUser = null;
    2:              string authError = "Could not authenticate user";
    3:              try
    4:              {
    5:                  spUser = web.AllUsers[impUser];
    6:                  if (spUser == null)
    7:                  {
    8:                      writer.Write(string.Format("spUser = web.AllUsers[impUser]; failed<br/>"));
    9:                      throw new UnauthorizedAccessException(authError);
   10:                  }
   11:              }
   12:   
   13:                  SPUserToken token = spUser.UserToken;
   14:              using (SPSite impSite = new SPSite(SPContext.Current.Site.ID, token))
   15:              {
   16:                  impSite.CatchAccessDeniedException = false;
   17:                  using (SPWeb impWeb = impSite.OpenWeb(SPContext.Current.Web.ID))
   18:                  {
   19:                      writer.Write(string.Format("Success with impersonated site context. {0}:<br/>", impWeb.CurrentUser.LoginName));
   20:                      SPList list = null;
   21:                      
   22:                      try
   23:                      {
   24:                          list = web.Lists[this.ListName];
   25:                      }
   26:                      catch (ArgumentException ex)
   27:                      {
   28:                          writer.Write(string.Format("Couldn't access list web.Lists[this.ListName]<br/>"));
   29:                          writer.Write(ex.ToString());
   30:                          writer.Write(string.Format("<br/>"));    
   31:                      }
   32:   
   33:                      try
   34:                      {
   35:                          list.CheckPermissions(SPBasePermissions.ViewListItems);
   36:                          context.Response.Write("<p>OK! :) Succesfully checked permissions.</p>");
   37:                      }
   38:                      catch(Exception ex)
   39:                      {
   40:                          context.Response.Write("Security check failed.<br/>");
   41:                          context.Response.Write(string.Format("Current user: {0}<br/>", list.ParentWeb.CurrentUser.LoginName));
   42:                          context.Response.Write(ex.ToString());
   43:                          context.Response.Write("<br/>");
   44:                      }
   45:                      return;
   46:                  }
   47:              }

[4]

    1:  SPSite oSite1 = new SPSite("https://eka:9001");
    2:  SPWebApplication oWebApp = oSite1.WebApplication;
    3:  SPApplicationPool oAppPool = oWebApp.ApplicationPool;
    4:              
    5:  string[] strUserIno = oAppPool.Username.Split('\\');
    6:  string strDomain = strUserIno[0].ToString();
    7:  string strUserName = strUserIno[1].ToString();
    8:  string strPassword = oAppPool.Password;