This document describes how the default security system in Confluence works, using the Seraph library for HTTP authentication.
Extending the security system by subclassing Seraph's authenticator and configuring the seraph-config.xml
file is outside the scope of this document. Single Sign-on Integration with the Atlassian stack explains one way to integrate Seraph with Atlassian products.
The easiest way to understand Confluence's authentication process is with the following diagrams.
Because the Authenticator.login(request, response, username, password, rememberMe)
method occurs three times, and is slightly complex, it has been broken into its own sub-flowchart.
By default, Confluence allows any attempt with the correct username and password login form attributes through to all action endpoints (for example <base_url>/dashboard.action). For security purposes, if you wish to restrict this behavior you can enable the rejection of these calls. To reject calls to all but a list of specific endpoints, you can provide an allowlist for the login flow.
1 2<init-param> <param-name>login.submit.url</param-name> <param-value>/dologin.action</param-value> </init-param>
In Confluence 7.13.20 and later, your seraph-config.xml
will have the following allowlist parameters by default:
1 2<init-param> <param-name>login.submit.url</param-name> <param-value>/dologin.action</param-value> </init-param>
If you wish to add more paths to the login flow, modify the parameters within the XML file and add more paths using comma separation as shown in this example:
1 2<init-param> <param-name>login.submit.url</param-name> <param-value>/a.action,/b.action,/c.action</param-value> </init-param>
The default Seraph authenticator supports four methods of authentication, as can be seen in the flowchart:
Each method is tried in the order above. A successful login at an earlier method continues without checking the later methods. Failure at one method means continuing with the later methods until all are exhausted. At this point, the user is considered an anonymous user, and treated according to the permissions of an anonymous user in Confluence.
Looking through the source code will show that Seraph supports role-based authentication, but this is only used in Confluence for the /admin/
URL restriction.
From Confluence 7.10 you can no longer use request parameters to log in. If you need quick login for automated tests however, you can add the following system property:
atlassian.allow.insecure.url.parameter.login=true
This will allow you to use os_username
and os_password
request parameters.
Rate this page: