# Stash Latest (2.12) : Connecting Stash to Crowd

Created and last modified by pwatson on Mar 04, 2014

You can configure Stash to use Atlassian Crowd for user and group management, and for authentication.

Atlassian Crowd is an application security framework that handles authentication and authorisation for your web-based applications. With Crowd you can integrate multiple web applications and user directories, with support for single sign-on (SSO) and centralised identity management. See the Crowd Administration Guide.

Connect to Crowd if you want to use Crowd to manage existing users and groups in multiple directory types, or if you have users of other web-based applications.

See also this information about deleting users and groups in Stash.

Icon

Connecting Atlassian Stash to your external directory is not sufficient to allow your users to log in to Stash. You must explicitly grant them access to Stash in the global permission screen.

We recommend that you use groups instead of individual accounts when granting permissions. However, be careful not to add more users to those groups that your Stash license allows. If the license limit is exceeded, your develope rs will not be able to push commits to repositories, and Stash will display a warning banner. See this FAQ.

On this page:

To connect Stash to Crowd:

1. Log in as a user with 'Admin' permission.
2. In the Stash administration area, click User Directories (under 'Accounts').
3. Click Add Directory and select Atlassian Crowd.
4. Enter settings, as described below.
5. Test and save the directory settings.
6. Define the directory order, on the 'User Directories' screen, by clicking the blue up- and down-arrows next to each directory. The directory order has the following effects:
   - The order of the directories is the order in which they will be searched for users and groups.
   - Changes to users and groups will be made only in the first directory where the application has permission to make changes.

## Server settings

Setting | Description
--- | ---
Name | A meaningful name that will help you to identify this Crowd server amongst your list of directory servers. Examples: `Crowd Server` `Example Company Crowd`
Server URL | The web address of your Crowd console server. Examples: `http://www.example.com:8095/crowd/` `http://crowd.example.com`
Application Name | The name of your application, as recognised by your Crowd server. Note that you will need to define the application in Crowd too, using the Crowd administration Console. See the Crowd documentation on adding an application.
Application Password | The password which the application will use when it authenticates against the Crowd framework as a client. This must be the same as the password you have registered in Crowd for this application. See the Crowd documentation on adding an application.

## Crowd permissions

Stash offers Read Only permissions for Crowd directories. The users, groups and memberships in Crowd directories are retrieved from Crowd and can only be modified from Crowd. You cannot modify Crowd users, groups or memberships using the Stash administration screens.

For local Stash directories, Read Only and Read/Write permissions are available.

## Advanced settings

Setting | Description
--- | ---
Enable Nested Groups | Enable or disable support for nested groups. Before enabling nested groups, please check to see if the user directory or directories in Crowd support nested groups. When nested groups are enabled, you can define a group as a member of another group. If you are using groups to manage permissions, you can create nested groups to allow inheritance of permissions from one group to its sub-groups.
Synchronisation Interval (minutes) | Synchronisation is the process by which the application updates its internal store of user data to agree with the data on the directory server. The application will send a request to your directory server every x minutes, where 'x' is the number specified here. The default value is 60 minutes.

## Single sign-on (SSO) with Crowd

Once the Crowd Directory has been set up, you can enable Crowd SSO integration by adding the following setting to `<STASH_HOME>/stash-config.properties`:

stash-config.properties

    # Whether SSO support should be enabled or not. Regardless of this setting SSO authentication
    # will only be activated when a Crowd directory is configured in Stash that is configured
    # for SSO.
    plugin.auth-crowd.sso.enabled=true

Please note that you will need to correctly set up the domains of the applications involved in SSO. See Crowd SSO Domain examples

In addition to this property, Crowd SSO integration can be tuned through the following properties, all set in `stash-config.properties`. The configuration properties and their default values are displayed below:

Property | Description | Default
--- | --- | ---
    plugin.auth-crowd.sso.session.validationinterval
| The number of minutes to cache authentication validation in the session. If this value is set to 0, the SSO session will be validated with the Crowd server for every HTTP request. | 3
    plugin.auth-crowd.sso.http.max.connections
| The maximum number of HTTP connections in the connection pool for communication with the Crowd server. | 20
    plugin.auth-crowd.sso.http.proxy.host
| The name of the proxy server used to transport SOAP traffic to the Crowd server. | (none)
    plugin.auth-crowd.sso.http.proxy.port
| The connection port of the proxy server (must be specified if a proxy host is specified). | (none)
    plugin.auth-crowd.sso.http.proxy.username
| The username used to authenticate with the proxy server (if the proxy server requires authentication). | (none)
    plugin.auth-crowd.sso.http.proxy.password
| The password used to authenticate with the proxy server (if the proxy server requires authentication). | (none)
    plugin.auth-crowd.sso.http.timeout
| The HTTP connection timeout (milliseconds) used for communication with the Crowd server. A value of zero indicates that there is no connection timeout. | 5000
    plugin.auth-crowd.sso.socket.timeout
| The socket timeout in milliseconds. You may wish to override the default value if the latency to the Crowd server is high. | 20000