I can’t actually take credit for this particular command – in fact I’ve never configured SSO so I personally don’t know much about it. I got the code from Stef van Hooijdonk who graciously provided the code he produced.

I made a few minor changes to Stef’s code just to bring it in line with the rest of my code but otherwise it’s as was provided to me – as such I’m not really prepared to support this command as I didn’t personally create it but it’s really straightforward. One word of caution – the code uses a class which has been flagged as being meant for internal use only and not for use in custom code – specifically the Microsoft.SharePoint.Portal.SignleSignon.Configuration class. Here’s the code:

  1#if MOSS
  2using System;
  3using System.Collections.Specialized;
  4using System.Text;
  5using Lapointe.SharePoint.STSADM.Commands.OperationHelpers;
  6using Lapointe.SharePoint.STSADM.Commands.SPValidators;
  7using Microsoft.SharePoint.Portal.SingleSignon;
  8using System.Diagnostics;
  9 
 10namespace Lapointe.SharePoint.STSADM.Commands.Security
 11{
 12    public class ConfigureSso : SPOperation
 13    {
 14        /// <summary>
 15        /// Initializes a new instance of the <see cref="ConfigureSso"/> class.
 16        /// </summary>
 17        public ConfigureSso()
 18        {
 19            SPParamCollection parameters = new SPParamCollection();
 20            parameters.Add(new SPParam("adminaccount", "admin", true, string.Empty, new SPNonEmptyValidator()));
 21            parameters.Add(new SPParam("enterpriseapplicationaccount", "eaa", true, string.Empty, new SPNonEmptyValidator()));
 22            parameters.Add(new SPParam("sqlserver", "sql", true, string.Empty, new SPNonEmptyValidator()));
 23            parameters.Add(new SPParam("database", "db", true, string.Empty, new SPNonEmptyValidator()));
 24            parameters.Add(new SPParam("tickettimeout", "tick", false, "2", new SPIntRangeValidator(1, 60), "Please specify minutes between 1 and 60"));
 25            parameters.Add(new SPParam("auditlogs", "logs", false, "10", new SPIntRangeValidator(1, 90), "Please specify days between 1 and 90."));
 26 
 27            StringBuilder sb = new StringBuilder();
 28            sb.Append("\r\n\r\nConfigure the SSO Service in the Farm. \r\n\r\nParameters:");
 29            sb.Append("\r\n\t-admin <admin account or group that will admininster the SSO Service>");
 30            sb.Append("\r\n\t-eaa <admin account or group that will administer the enterprise applications>");
 31            sb.Append("\r\n\t-sql <sql server for the SSO Database>");
 32            sb.Append("\r\n\t-db <database name for the SSO Storage>");
 33            sb.Append("\r\n\t[-tick] <minutes a sso ticket is valid, defaults to 2>");
 34            sb.Append("\r\n\t[-logs] <days to keep logs, defaults to 10>");
 35 
 36            Init(parameters, sb.ToString());
 37        }
 38 
 39        #region ISPStsadmCommand Members
 40 
 41        /// <summary>
 42        /// Gets the help message.
 43        /// </summary>
 44        /// <param name="command">The command.</param>
 45        /// <returns></returns>
 46        public override string GetHelpMessage(string command)
 47        {
 48            return HelpMessage;
 49        }
 50 
 51        /// <summary>
 52        /// Runs the specified command.
 53        /// </summary>
 54        /// <param name="command">The command.</param>
 55        /// <param name="keyValues">The key values.</param>
 56        /// <param name="output">The output.</param>
 57        /// <returns></returns>
 58        public override int Execute(string command, StringDictionary keyValues, out string output)
 59        {
 60            output = string.Empty;
 61 
 62            string adminAccount = Params["adminaccount"].Value;
 63            string eaDefAccount = Params["eaa"].Value;
 64            string sqlServer = Params["sqlserver"].Value;
 65            string database = Params["database"].Value;
 66 
 67            uint ticketTimeout = 2;
 68            if (Params["tickettimeout"].UserTypedIn)
 69                ticketTimeout = uint.Parse(Params["tickettimeout"].Value);
 70 
 71            uint auditLogs = 10;
 72            if (Params["auditlogs"].UserTypedIn)
 73                auditLogs = uint.Parse(Params["auditlogs"].Value);
 74 
 75            Configure(adminAccount, eaDefAccount, sqlServer, database, ticketTimeout, auditLogs);
 76 
 77            return OUTPUT_SUCCESS;
 78        }
 79 
 80        #endregion
 81 
 82        /// <summary>
 83        /// Configures the SSO settings.
 84        /// </summary>
 85        /// <param name="adminAccount">The admin account.</param>
 86        /// <param name="eaDefAccount">The ea def account.</param>
 87        /// <param name="sqlServer">The SQL server.</param>
 88        /// <param name="database">The database.</param>
 89        /// <param name="ticketTimeout">The ticket timeout.</param>
 90        /// <param name="auditLogs">The audit logs.</param>
 91        private static void Configure(string adminAccount, string eaDefAccount, string sqlServer, string database, uint ticketTimeout, uint auditLogs)
 92        {
 93            try
 94            {
 95                Log("Connecting to {0}", sqlServer);
 96                Configuration.ConfigureSecretServer(
 97                    adminAccount,
 98                    eaDefAccount,
 99                    sqlServer,
100                    database,
101                    ticketTimeout,
102                    auditLogs);
103                Log("SSO Configured succesfull.");
104            }
105            catch (Exception exc)
106            {
107                if (exc.Message.Contains("-2147023143"))
108                    Log("Error occured in setting the SSO Server settings. Is the SSOService configured to run as a domain account?", EventLogEntryType.Error);
109                throw;
110            }
111 
112            Log("Generating MasterSecret..");
113            Configuration.GenerateMasterSecret(false);
114            Log("Master Secret Key set.");
115        }
116 
117    }
118}
119#endif

The help for the command is shown below:

C:\>stsadm -help gl-configuresso

stsadm -o gl-configuresso

Configure the SSO Service in the Farm.

Parameters:
        -admin <admin account or group that will administer the SSO Service>
        -eaa <admin account or group that will administer the enterprise applications>
        -sql <sql server for the SSO Database>
        -db <database name for the SSO Storage>
        [-tick] <minutes a sso ticket is valid, defaults to 2>
        [-logs] <days to keep logs, defaults to 10>

The following table summarizes the command and its various parameters:

Command NameAvailabilityBuild Date
gl-configuressoMOSS 2007Released: 4/17/2009
Parameter NameShort FormRequiredDescriptionExample Usage
adminaccountadminYesAdmin account or group that will administer the SSO service.-adminaccount domain\spadmin, -admin domain\spadmin
enterpriseapplicationaccounteaaYesAdmin account or group that will administer the enterprise application.-enterpriseapplicationaccount domain\spadmin, -eaa domain\spadmin
sqlserversqlYesSQL Server name for the SSO database.-sqlserver sql1, -sql sql1
databasedbYesDatabase name for the SSO storage.-database SSODB, -db SSODB
tickettimeouttickNoMinutes an SSO ticket is valid, defaults to 2.-tickettimeout 2, -tick 2
auditlogslogsNoDay to keep logs, defaults to 10.-auditlogs 10, -logs 10

The following is an example of how to configure SSO:

stsadm -o gl-configuresso –adminaccount domain\spadmin –enterpriseapplicationaccount domain\spadmin –sqlserver sql1 –database ssodb –tickettimeout 2 –auditlogs 10