如何:创建声明提供程序

上次修改时间: 2011年3月23日

适用范围: SharePoint Foundation 2010

声明提供程序发布声明并将其封装到安全令牌中。声明提供程序具有两种角色:增加和选取。

声明增加让应用程序能够将其他声明增加到用户令牌中。例如,对于基于 Windows 的登录,Active Directory 目录服务可将一名用户的所有安全组增加到该用户的 Windows 令牌中。对于基于声明的登录,客户关系管理 (CRM) 应用程序可从 CRM 数据库增加角色。通过将这些声明加入用户的令牌,可以针对这些声明为资源授权。即这些声明用于确定特定用户是否对特定资源有访问权限。

通过声明选取,可在人员选取器控件中显示声明。声明选取使应用程序能够在人员选取器中呈现声明,例如配置 SharePoint 网站或 SharePoint 服务的安全性时。此功能使您能够实现声明的搜索、解析和友好显示。

备注

具有声明选取功能的人员选取器有时称为声明选取器。

若要编写声明提供程序,第一步是创建一个派生自 SPClaimProvider 类的类。

提示提示

有关代码示例以及关于SPClaimProvider 类及其成员的详细信息,请参阅 SPClaimProvider

必需的实现

以下是编写声明提供程序必需的方法和属性。

必需属性

以下 Name 属性是必需属性。名称在服务器场中应为唯一。

public abstract String Name
      

声明选取器的必需方法

通过声明选取,可在人员选取器控件中显示声明。如果要在人员选取器控件中实现声明选取,SPClaimProvider 类中的以下方法是必需方法。

protected abstract void FillSchema(SPProviderSchema schema);
     protected abstract void FillClaimTypes(List<String> claimTypes);
     protected abstract void FillClaimValueTypes(List<String> claimValueTypes);
     protected abstract void FillEntityTypes(List<String> entityTypes);

声明增加的必需方法

在用户的安全令牌中包含其他声明时,即为增加声明。如果要增加声明,您必须实现 SPClaimProvider 类中的以下方法。

public abstract bool SupportsEntityInformation
      protected abstract void FillClaimsForEntity(Uri context, SPClaim entity, List<SPClaim> claims);

在声明选取器的左窗格上显示层次结构的必需方法

如果要在声明选取器的左窗格上显示层次结构,您必须实现 SPClaimProvider 类中的以下方法。

public abstract bool SupportsHierarchy
     protected abstract void FillHierarchy(Uri context, String[] entityTypes, String hierarchyNodeID, int numberOfLevels, bool includeEntityData, SPProviderHierarchyTree hierarchy);

在声明选取器的键入控件中解析声明的必需方法

如果希望能够使用声明选取器的键入控件解析声明,您必须实现 SPClaimProvider 类中的以下方法。

public abstract bool SupportsResolve
     protected abstract void FillResolve(Uri context, String[] entityTypes, String resolveInput, List<PickerEntity> resolved);
     protected abstract void FillResolve(Uri context, String[] entityTypes, SPClaim resolveInput, List<PickerEntity> resolved);

在声明选取器中搜索声明的必需属性和方法

如果希望能够在声明选取器中搜索声明,您必须实现 SPClaimProvider 类中的以下属性和方法。

public abstract bool SupportsSearch
     protected abstract void FillSearch(Uri context, String[] entityTypes, String searchPattern, String hierarchyNodeID, int maxCount, SPProviderHierarchyTree searchTree);

有用的帮助程序方法

您还可以实现帮助程序方法来帮助创建 SPClaim 对象。

用于创建 SPClaim 对象的有用帮助程序方法

以下是您可以实现以帮助创建 SPClaim 对象的一个帮助程序方法。

protected SPClaim CreateClaim(String claimType, String value, String valueType)

请参阅

概念

声明提供程序