Exemple #1
0
        /// <summary>
        /// Updates Solution User details. This operation is suitable to update solution user certificate before it gets expired.
        /// This operation requires administrator privileges for SSO
        /// </summary>
        /// <param name="authorizationUsername">User with administrator privileges</param>
        /// <param name="authorizationPassword">Password for the authorizationUsername</param>
        /// <param name="userName">Requested solution user username</param>
        /// <param name="certificate">Certificate fo the solution user. This will be the signing certificate which will be used by the solution user to authorize SSO operations (e.g. acquire HoK SAML token from STS service)</param>
        /// <param name="description">Description of the solution user.</param>
        /// <returns>PrincipalId in format "username@domainname"</returns>
        public string UpdateLocalSolutionUser(string authorizationUsername,
                                              SecureString authorizationPassword,
                                              string userName,
                                              X509Certificate2 certificate,
                                              string description)
        {
            // Create Authorization Invocation Context
            var authorizedInvocationContext =
                CreateAuthorizedInvocationContext(
                    authorizationUsername,
                    authorizationPassword);

            // Invoke SSO Admin CreateLocalSolutionUser operation
            var ssoPrincipalId = authorizedInvocationContext.
                                 InvokeOperation(() =>
                                                 _ssoAdminClient.UpdateLocalSolutionUserDetailsAsync(
                                                     new ManagedObjectReference {
                type  = "SsoAdminPrincipalManagementService",
                Value = "principalManagementService"
            },
                                                     userName,
                                                     new SsoAdminSolutionDetails {
                certificate = Convert.ToBase64String(certificate.RawData),
                description = description
            })).Result;

            return($"{ssoPrincipalId.name}@{ssoPrincipalId.domain}");
        }