/// <summary> /// If not using windows authentication, might want to try running under elevated permissions and giving the farm account write access to the SSS. /// </summary> /// <param name="providerTypeName"></param> /// <param name="applicationId"></param> /// <param name="userName"></param> /// <param name="password"></param> public static void WriteCredentialsToSecureStore(string providerTypeName, string applicationId, string userName, string password) { SPServiceContext context = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default); SecureStoreServiceProxy ssp = new SecureStoreServiceProxy(); ISecureStore iss = ssp.GetSecureStore(context); IList <TargetApplicationField> applicationFields = iss.GetUserApplicationFields(applicationId); IList <ISecureStoreCredential> creds = new List <ISecureStoreCredential>(applicationFields.Count); foreach (TargetApplicationField taf in applicationFields) { switch (taf.CredentialType) { case SecureStoreCredentialType.UserName: case SecureStoreCredentialType.WindowsUserName: creds.Add(new SecureStoreCredential(MakeSecureString(userName), taf.CredentialType)); break; case SecureStoreCredentialType.Password: case SecureStoreCredentialType.WindowsPassword: creds.Add(new SecureStoreCredential(MakeSecureString(password), taf.CredentialType)); break; } } using (SecureStoreCredentialCollection credentials = new SecureStoreCredentialCollection(creds)) { iss.SetCredentials(applicationId, credentials); } }
public static IList <TargetApplicationField> GetTargetApplicationFields(string targetApplicationID) { IList <TargetApplicationField> applicationFields = null; SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite site = new SPSite(SPContext.Current.Site.ID)) { using (SPWeb web = site.OpenWeb()) { SPServiceContext context = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default); SecureStoreServiceProxy ssp = new SecureStoreServiceProxy(); ISecureStore iss = ssp.GetSecureStore(context); applicationFields = iss.GetUserApplicationFields(targetApplicationID); } } }); return(applicationFields); }