1

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

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

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

4

1 回答 1

3

请参阅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

于 2016-05-25T15:42:50.743 回答