如何识别非人类用户

本文关键字:非人类 用户 识别 何识别 | 更新日期: 2023-09-27 17:54:23

列出系统中的所有用户,我注意到其中一些是系统用户,并且根本没有例如工作时间。目前,我只是列出它们并将其排除在循环之外,因为这是一种Q&D方法,我更喜欢正确的方法。

我没有在systemuser实体上找到任何具体的信息,告诉我某个是真实的配置文件(即在Office 365门户中创建的)还是默认提供我的MS的配置文件。

Q&D代码如下:

QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... };
IEnumerable<Entity> users = service.RetrieveMultiple(userQuery).Entities;
IEnumerable<String> automatics = new[] { "INTEGRATION", "Support User", "SYSTEM" };
  foreach (Entity user in users.Where(element
    => !automatics.Contains(element.GetAttributeValue<String>("fullname")))) { ... }

第二个最好的解决方案是,如果没有办法确定谁在自动列表中,谁是真正的家伙,那就是制作一个详尽的例外情况综合列表。再一次,我的google-fu失败了,因为我没有找到关于实体systemuser自动创建实例的完整列表的任何文档。

如何识别非人类用户

检查CreatedBy字段;用户SYSTEMINTEGRATIONNULL。对于CRM管理员用户,该字段也是NULL,因此,如果admin用户正在被人类积极使用,则应该考虑排除该用户。

FilterExpression humanFilter = new FilterExpression();
humanFilter.AddCondition(new ConditionExpression("createdby", ConditionOperator.NotNull));
if (retrieveAdminUser)
{
  humanFilter.FilterOperator = LogicalOperator.Or;
  humanFilter.AddCondition(
    new ConditionExpression("domainname", ConditionOperator.Equal, "admin@crm"));
}
userQuery.Criteria.AddFilter(humanFilter);