CheckSecurityConsistency

CheckSecurityConsistency

  • Method: GET or optionally POST.

Checks the security consistency in the subtree of the requested content. WARNING! The operation can be slow so use it only in justified cases and with a scope as small as possible.

Compares the security cache and the main database. the investigation covers the parallelism of the entity vs content structure, membership vs content-references, and entity-identity existence in security entries. If the security data is consistent, the response is the following (the comments are not part of the response):

{
"IsConsistent": true, // aggregated all categories validity
"IsMembershipConsistent": true, // aggregated membership category validity
"IsEntityStructureConsistent": true, // aggregated entity structure category validity
"IsAcesConsistent": true, // aggregated ACE category validity
"ElapsedTime": "00:00:00.0087222", // time of investigation
"MissingEntitiesFromRepository": [], // entity structure category (SecurityEntityInfo[])
"MissingEntitiesFromSecurityDb": [], // entity structure category (SecurityEntityInfo[])
"MissingEntitiesFromSecurityCache": [], // entity structure category (SecurityEntityInfo[])
"MissingMembershipsFromCache": [], // membership category (SecurityMembershipInfo[])
"UnknownMembershipInSecurityDb": [], // membership category (SecurityMembershipInfo[])
"MissingMembershipsFromSecurityDb": [], // membership category (SecurityMembershipInfo[])
"UnknownMembershipInCache": [], // membership category (SecurityMembershipInfo[])
"MissingRelationFromFlattenedUsers": [], // membership category (SecurityMembershipInfo[])
"UnknownRelationInFlattenedUsers": [], // membership category (SecurityMembershipInfo[])
"InvalidACE_MissingEntity": [], // ACE category (StoredAceDebugInfo[])
"InvalidACE_MissingIdentity": [] // ACE category (StoredAceDebugInfo[])
}

In case of invalid state, at least one of the categories contains one or more sub-items. Here is an example for every item type.

SecurityEntityInfo example (an item in MissingEntitiesFromRepository, MissingEntitiesFromSecurityDb, MissingEntitiesFromSecurityCache)

{
"Id": 1,
"ParentId": 5,
"OwnerId": 1,
"Path": "/Root/IMS/BuiltIn/Portal/Admin"
}

SecurityMembershipInfo example (an item in MissingMembershipsFromCache, UnknownMembershipInSecurityDb, MissingMembershipsFromSecurityDb, UnknownMembershipInCache, MissingRelationFromFlattenedUsers, UnknownRelationInFlattenedUsers)

{
"GroupId": 5,
"MemberId": 9,
"GroupPath": "/Root/IMS/BuiltIn/Portal",
"MemberPath": "/Root/IMS/BuiltIn/Portal/Owners"
}

StoredAceDebugInfo example (an item in InvalidACE_MissingEntity, InvalidACE_MissingIdentity)

{
"EntityId": 2,
"IdentityId": 7,
"LocalOnly": false,
"AllowBits": 524287,
"DenyBits": 0,
"StringView": "(2)|Normal|+(7):_____________________________________________+++++++++++++++++++"
}

Request example:

GET /odata.svc/Root/...('targetContent')/CheckSecurityConsistency

The targetContent can be any content type

Parameters:

There are no parameters.

Return value:

The SecurityConsistencyResult instance. (Type: SecurityConsistencyResult).

Requirements:

  • AllowedRoles: Administrators, Developers