如何在C#中实现支持SCIM过滤的REST API

时间:2016-05-19 03:38:19

标签: c# asp.net api rest scim

我需要实现支持将用户作为SCIM过滤规范https://tools.ietf.org/html/rfc7644#section-3.4.2.2查询用户的ASP.NET Web API。

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

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

1 个答案:

答案 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