This chapter describes how to configure and maintain user authorization and also describes the theory behind how authentication and authorization work in AEM.
This section deals with the various entities and related concepts in more detail to help you configure an easy to maintain user management concept.
Users will log in to AEM with their account. Each user account is unique and holds the basic account details, together with the privileges assigned.
Users are often members of Groups, which simplify the allocation of these permissions and/or privileges.
Groups are collections of users and/or other groups; these are all called Members of a group.
Their primary purpose is to simplify the maintenance process by reducing the number of entities to be updated, as a change made to a group is applied to all members of the group. Groups often reflect:
a role within the application; such as someone who is allowed to surf the content, or someone who is allowed to contribute content.
your own organization; you may want to extend the roles to differentiate between contributors from different departments when they are restricted to different branches in the content tree.
Therefore groups tend to remain stable, whereas users come and go more frequently.
With planning and a clean structure, the use of groups can reflect your structure, giving you a clear overview and an efficient mechanism for updates.
AEM WCM installs a number of users and groups. These can be seen when you first access the Security Console after installation.
The following tables list each item together with:
- a short description
- any recommendations about necessary changes
Please change all default passwords (if you do not delete the account itself in certain circumstances).
Default password: admin
System administration account and member of the administrator group, with full access rights.
This account is used for the connection between AEM WCM and CRX.
If you accidentally delete this account, it will be re-created upon repository restart (in the default setup).
The admin account is a requirement of the AEM platform. As a consequence, this account cannot be deleted.
Adobe strongly recommends that the password for this user account be changed from the default.
Preferably upon installation, though it can be done afterwards.
Note: This account is not to be confused with the admin account of the CQ Servlet Engine.
Holds the default rights for unauthenticated access to an instance. Per default this holds the minimum access rights.
If you accidentally delete this account, it will be re-created upon startup. It cannot be permanently deleted, but it can be disabled.
|Please avoid deleting or disabling this account, as it will negatively impact the functioning of author instances. If there are security requirements that mandate you to delete it, make sure you properly test the effects it has on your systems first.|
Default password: author
A author account allowed to write to /content. Encompasses contributor and surfer privileges.
Can be used as a webmaster as it has access to the entire /content tree.
This is not a built-in user, but another geometrixx demo user
Adobe recommends that either the account is deleted completely, or the password changed from the default.
Preferably upon installation, though it can be done afterwards.
Group that gives administrator rights to all its members. Only admin is allowed to edit this group.
Has full access rights.
|If you set a 'deny-everyone' on a node, the administrators will
only have access if it is enabled again for that group.
Group responsible for content editing. Requires read, modify, create and delete permissions.
|You can create your own content-author group(s) with project specific access rights, provided you add read, modify, create and delete permissions.|
Basic privileges which allow the user to write content (as in functionality only).
Does not allocate any privileges to the /content tree - these must be specifically allocated for the individual groups or users.
|dam-users||Group||Out-of-the-box reference group for a typical AEM Assets user. Members of this group have appropriate privileges to enable uploading/sharing of assets and collections.|
Every user in AEM is a member of the group everyone, even though you may not see the group or the membership relation in all tools.
This group can be thought of as the default rights as it can be used to apply permissions for everyone, even users that will be created in the future.
Do not modify or delete this group.
Modifying this account has additional security implications.
|tag-administrators||Group||Group that is allowed to edit tags.|
|user-administrators||Group||Authorizes user administration, that is, the right to create users and groups.
|workflow-editors||Group||Group that is allowed to create and modify workflow models.|
A user participating in a workflow must be member of group workflow-users. This gives him or her full access to: /etc/workflow/instances so that he or she can update the workflow instance.
The group is included in the standard installation, but you must manually add your users to the group.
AEM uses ACLs to determine what actions a user or group and can take and where it can perform those actions.
Permissions define who is allowed to perform which actions on a resource. The permissions are the result of access control evaluations.
You can change the permissions granted/denied to a given user by selecting or clearing the checkboxes for the individual AEM actions. A check mark indicates that an action is allowed. No checkmark indicates that an action is denied.
Where the checkmark is located in the grid also indicates what permissions users have in what locations within AEM (that is, which paths).
Actions can be performed on a page (resource). For each page in the hierarchy, you can specify which action the user is allowed to take on that page. Permissions enable you to allow or deny an action.
|Read||The user is allowed to read the page and any child pages.|
The user can:
At the JCR level, users can modify a resource by modifying its properties, locking, versioning, nt-modifications, and they have complete write permission on nodes defining a jcr:content child node, for example cq:Page, nt:file, cq:Asset.
The user can:
If modify is denied the subtrees below jcr:content are specifically excluded because the creation of jcr:content and its child nodes are considered a page modification. This only applies to nodes defining a jcr:content child node.
The user can:
If modify is denied any subtrees below jcr:content are specifically excluded as removing jcr:content and its child nodes is considered a page modification. This only applies to nodes defining a jcr:content child node.
|Read ACL||The user can read the access control list of the page or child pages.|
|Edit ACL||The user can modify the access control list of the page or any child pages.|
|Replicate||The user can replicate content to another environment (for example, the Publish environment). The privilege is also applied to any child pages.|
AEM automatically generates user groups for role-assignment (Owner, Editor, Viewer) in Collections. However, manually adding ACLs for such groups can introduce security vulnerabilities within AEM. Adobe recommends that you avoid adding ACLs manually.
AEM WCM uses Access Control Lists (ACLs) to organize the permissions being applied to the various pages.
Access Control Lists are made up of the individual permissions and are used to determine the order in which these permissions are actually applied. The list is formed according to the hierarchy of the pages under consideration. This list is then scanned bottom-up until the first appropriate permission to apply to a page is found.
There are ACLs that are included with the samples. It is recommended that you review and determine what is appropriate for your applications. To review the ACLs that are included, go to CRXDE and select the Access Control tab for the following nodes:
/etc/cloudservices/facebookconnect/geometrixx-outdoorsfacebookapp: Allows everyone read access.
/etc/cloudservices/twitterconnect/geometrixx-outdoors-twitter-app: Allows everyone read access.
/home/users/geometrixx-outdoors: Allows everyone read access for */profile* and
Your custom application may set access for other relationships, such as */social/relationships/friend/* or */social/relationships/pending-following/*.
When you create ACLs specific to communities, members joining those communities may be granted additional permissions. For example, this could be the case when users join the communities at /content/geometrixx-outdoors/en/community/hiking or /content/geometrixx-outdoors/en/community/winter-sports.
For CQ 5.3 users:
In contrast to previous CQ versions, create and delete should no longer be granted if a user only needs to modify pages. Instead, grant the modify action only if you want users to be able to create, modify, or delete components on existing pages.
For backwards compatibility reasons, the tests for actions does not take the special treatment of nodes defining jcr:content into account.
|Allow (Check mark)||AEM WCM allows the user to perform the action on this page or on any child pages.|
|Deny (No checkmark)||AEM WCM does not allow the user to perform the action on this page nor on any child pages.|
If a permission is not inherited from the parent node but has at least one local entry for it, then the following symbols are appended to the check box. A local entry is one that is created in the CRX 2.2 interface (Wildcard ACLs currently can only be created in CRX.)
For an action at a given path:
|* (asterisk)||There is at least one local entry (either effective or ineffective). These wildcard ACLs are defined in CRX.
|! (exclamation mark)||There is at least one entry that currently has no effect.|
When you hover over the asterisk or exclamation mark, a tooltip provides more details about the declared entries. The tooltip is split into two parts:
Lists the effective entries.
|Lower part||Lists the noneffective entries that may have an effect somewhere else in the tree (as indicated by a special attribute present with the corresponding ACE limiting the scope of the entry). Alternatively, this is an entry whose effect has been revoked by another entry defined at the given path or at an ancestor node.|
If no permissions are defined for a page then all actions are denied.
The following are recommendations about managing access control lists:
- Do not assign permissions directly to users. Assign them only to groups.
This will simplify the maintenance, as the number of groups is much smaller than the number of users, and also less volatile.
- If you want a group/user to be able only to modify pages, do not grant them create or deny rights. Only grant them modify and read rights.
Use Deny sparingly. As far as possible use only Allow.
Using deny can cause unexpected effects if the permissions are applied in a different order than the order expected. If a user is a member of more than one group, the Deny statements from one group may cancel the Allow statement from another group or vice versa. It is hard to keep an overview when this happens and can easily lead to unforeseen results, whereas Allow assignments do not cause such conflicts.
Adobe recommends that you work with Allow rather than Deny see Best Practices.
Before modifying either permission, be sure you understand how they work and inter-relate. See the CRX documentation to illustrate how AEM WCM evaluates access rights and examples on setting up access control lists.
Permissions give users and groups access to AEM functionality on AEM pages.
You browse permissions by path by expanding/collapsing the nodes and you can track the permission inheritance up to the root node.
You allow or deny permissions by selecting or clearing the appropriate check boxes.
Along with the grid view, AEM provides a detailed view of permissions for a selected user/group at a given path. The detail view provides additional information.
In addition to viewing information, you can also include or exclude the current user or group from a group. See Adding Users or Groups while Adding Permissions. Changes made here are immediately reflected in the upper portion of the detailed view.
To access the Detail view, in the Permissions tab, click Details for any selected group/user and path.
Repeats the information you see in the tree grid. For each action, an icon shows whether the action is allowed or denied:
Shows the grid of users and groups that does the following:
With the Impersonate functionality a user can work on behalf of another user.
This means that a user account can specify other accounts that can operate with their account. In other words, if user-B is allowed to impersonate user-A, then user-B can take actions using the full account details of user-A.
This allows the impersonator accounts to complete tasks as if they were using the account they are impersonating; for example, during an absence or to share an excessive load short-term.
In order for impersonating to work for non-admin users, the impersonator (in the above case user-B) is required to have READ permissions in the /home/users path.
For more information on how to achieve this, see Permissions in AEM.
If one account impersonates another it is very difficult to see. An entry is made in the audit log when the impersonation starts and ends, but the other log files (such as the access log) hold no information about the fact that impersonation has occurred on the events. So if user-B is impersonating user-A all events will look as if they were performed by user-A personally.
Locking a page can be performed when impersonating a user. However a page locked in this way can only then be unlocked as the user who was impersonated or a user with administrator privileges.
Pages can not be unlocked by impersonating the user who locked the page.
Avoid assigning access rights on a user-by-user basis. There are several reasons for this:
You have many more users than groups, so groups simplify the structure.
Groups help provide an overview over all accounts.
Inheritance is simpler with groups.
Users come and go. Groups are long-term.
Always use Allow statements to specify the group’s rights (wherever possible). Avoid using a Deny statement.
Groups are evaluated in order, and the order may be defined differently per user.
In other words: You may have little control over the order in which the statements are implemented and evaluated. If you use only Allow statements, the order does not matter.
|Keep It Simple||
Investing some time and thought when configuring a new installation will be well repaid.
Applying a clear structure will simplify the ongoing maintenance and administration, ensuring that both your current colleagues and/or future successors can easily understand what is being implemented.
|Test||Use a test installation to practice and ensure that you understand the relationships between the various users and groups.|
|Default Users/Groups||Always update the Default Users and Groups immediately after installation to help prevent any security issues.|
You access all users, groups, and associated permissions using the Security console. All the procedures described in this section are performed in this window.
To access AEM WCM security, do one of the following:
- Navigate directly to http://<server>:<port>/useradmin. Be sure you log into AEM as an administrator.
The left tree lists all the users and groups currently in the system. You can select the columns you want displayed, sort the contents of the columns, and even change the order in which the columns are displayed by dragging the column-header to a new position.
|Filter box||A mechanism for filtering the users and/or groups listed. See Filtering Users and Groups.|
|Hide Users||A toggle switch which will hide all users listed, leaving only groups. See Hiding Users and Groups.|
|Hide Groups||A toggle switch which will hide all groups listed, leaving only users. See Hiding Users and Groups.|
|Edit||A menu allowing you to create and delete as well activate and deactivate users or groups. See Creating Users and Groups and Deleting Users and Groups.|
|Properties||Lists information about the user or group that can include email information, a description, and name information. Also allows you to change a user's password. See Creating Users and Groups, Modifying User and Group Properties and Changing a User Password.|
|Groups||Lists all groups that the selected user or group belongs to. You can assign the selected user or groups to additional groups or remove them from groups. See Groups.|
|Members||Available for groups only. Lists the members of a particular group. See Members.|
You can allocate permissions to a user or group. Lets you control the following:
|Impersonators||Lets another user impersonate the account. Useful when you need a user to act on behalf of another user. See Impersonating Users.|
|Preferences||Sets preferences for the group or user. For example, language preferences.
You can filter the list by entering a filter expression, which hides all the users and groups that do not match the expression. You can also hide users and groups by using the Hide User and Hide Group buttons.
To filter users or groups:
Hiding users or groups is another way to filter the list of all users and groups in a system. There are two toggle mechanisms. Clicking Hide User hides all users from view and clicking Hide Groups hides all groups from view (you cannot hide both users and groups at the same time). To filter the list by using a filter expression, see Filtering users and groups.
To hide users and groups:
To delete a user or group:
In the Security console, select the user or group you want to delete. If you want to delete multiple items, Shift+click or Control+click to select them.
Click Edit, then select Delete. AEM WCM asks whether you want to delete the user or group.
Click OK to confirm or Cancel to cancel your action.
The path of the user is displayed at the bottom of the user properties. It cannot be modified.
You cannot use the Security console to change the admin password. To change the password for the admin account, use the Users console that Granite Operations provides.
AEM offers three different ways to add users or groups to an existing group:
- When you are in the group, you can add members (either users or groups).
- When you are in the member, you can add members to groups.
- When you are working on Permissions, you can add members to groups.
The Groups tab shows you which groups the current account belongs to. You can use it to add the selected account to a group:
The Members tab only works for groups and shows you which users and groups belong to the current group. You can used it to add accounts to a group:
AEM offers three different ways to remove users or groups from a group:
- When you are in the group profile, you can remove members (either users or groups).
- When you are in the member profile, you can remove members from groups.
- When you are working on Permissions, you can remove members from groups.
Permissions allow users to perform certain actions on resources at certain paths. It also includes the ability to create or delete pages.
To add, modify, or delete permissions:
- Any replication rights applied to a group apply to all the users in that group.
- A user's replication privileges supersedes a group's replication privileges.
- The Allow replication rights have a higher precedence than the Deny replication rights. See Permissions in AEM for more information.
When adding or removing permissions, you can either browse or search for the node.
There are two different types of path search:
- Path search - If the search string starts with a "/" then the search will search for the direct sub-nodes of the given path:
|Right arrow key
||Selects a sub-node in the search result|
|Down arrow key||Starts the search again.|
|Enter (Return) key||Selects a subnode and loads it in the treegrid|
- FullText search - If the search string does not start with a "/" then a fulltext search is executed on all the nodes under the path "/content."
You can specify one or more users that are allowed to impersonate the current user. This means they can switch their account settings to those of the current user and act on behalf of this user.
Use this function with caution as it may allow users to perform actions that their own user cannot. When impersonating a user, users are notified that they are not logged in as themselves.
There are various scenarios when you may want to use this functionality, including:
If you are out of the office, you can let another person impersonate you while you are away. By using this feature, you can make sure that somebody has your access rights and you do not need to modify a user profile or give out your password.
You can use it for debugging purposes. For example, to see how the Web site looks for a user with restricted access rights. Also, if a user complains about technical problems, you can impersonate that user to diagnose and fix the problem.
To impersonate an existing user:
If you plan to implement application-specific privileges, the following information describes what you need to know to implement a custom privilege and how to enforce it throughout CQ:
The hierarchy-modification privilege is covered by a combination of jcr-privileges. The replication privilege is named crx:replicate that is stored/evaluated along with other privileges on the jcr repository. It is, however, not enforced on the jcr level.
The definition and registration of custom privileges is officially part of the Jackrabbit API as of version 2.4 (see also JCR-2887). Further usage is covered by JCR Access Control Management such as definedby JSR 283 (section 16). In addition, the Jackrabbit API defines a couple of extensions.
The privilege registration mechanism is reflected in the UI under Repository Configuration.
The registration of new (custom) privileges is itself protected by a built-in privilege that must be granted on the repository level (in JCR: passing 'null' as the 'absPath' parameter in the ac mgt api, see jsr 333 for details). By default, admin and all members of administrators have that privilege granted.
While the implementation takes care of validating and evaluating custom privileges, it cannot enforce them unless they are aggregates of built-in privileges.