我需要实现支持将用户作为SCIM过滤规范https://tools.ietf.org/html/rfc7644#section-3.4.2.2查询用户的ASP.NET Web API。
最快的方法是什么?我知道我需要实现一个可以解析过滤表达式的解析器,然后用专用的用户存储库执行该表达式并返回所选的实体,但是从头开始实现该解析器是一项巨大的工作,对吧?
是否有更快的方式或更标准的方式来支持SCIM过滤?
答案 0 :(得分:1)
请参阅https://github.com/PowerDMS/Owin.Scim
我已实现它,以便Owin.Scim获取过滤字符串,无论是查询过滤器还是补丁过滤器,对其进行规范化,然后构造一个表达式树/ lambda谓词,您可以在linq中使用它。
尚未实现的是如何支持SCIM的root-query查询 - 您可以同时过滤多种资源类型。
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
&amp; ScimFilterParser
。