如何在C#中实现支持SCIM过滤的RESTAPI?

How to implement REST API that supports SCIM filtering in C#?

我需要实现一个 ASP.NET Web API 支持查询用户作为​​ SCIM 过滤规范 https://www.rfc-editor.org/rfc/rfc7644#section-3.4.2.2

最快的方法是什么?我知道我需要实现一个可以解析过滤表达式的解析器,然后使用专用用户存储库和 return 选定实体执行该表达式,但从头开始实现该解析器是一项巨大的工作,对吗?

是否有更快或更标准的方法来支持 SCIM 过滤?

请参阅https://github.com/PowerDMS/Owin.Scim

我已经实现它 Owin.Scim 获取过滤器字符串,无论是查询过滤器还是补丁过滤器,对其进行规范化,然后构造一个表达式树/lambda 谓词,您可以在 linq 中使用它。

尚未实现的是如何支持 SCIM 的根查询 - 您可以同时过滤多种资源类型。

ScimFilter 规范化字符串,支持资源扩展。 修补是一个完全独立的过程,它使用自定义 json.net 合同解析器。在撰写本文时,ScimFilter 将为您提供 PathFilterExpressions 列表。 (如果您要查询,则只有一个)。

您可以使用扩展方法获取 PathFilterExpression 并取回强类型谓词 (Func<Resource, bool>)。参见:https://github.com/PowerDMS/Owin.Scim/blob/master/source/Owin.Scim/Extensions/PathFilterExpressionExtensions.cs

或者,您可以获取 alpha Owin.Scim.Antlr dll。 https://github.com/PowerDMS/Owin.Scim/tree/master/source/lib

这将为您提供 ScimFilterLexer & ScimFilterParser