在 SharePoint 中创建声明提供程序
了解如何创建和实现 SharePoint 声明提供程序,以满足声明扩充和声明选取的要求。
声明提供程序发布声明并将其封装到安全令牌中。声明提供程序具有两种角色:增加和选取。
声明增加可让应用程序将其他声明增加到用户令牌中。例如,使用基于 Windows 的登录,Active Directory 目录服务可将用户的所有安全组增加到该用户的 Windows 令牌中。使用基于声明的登录,客户关系管理 (CRM) 应用程序可从 CRM 数据库增加角色。通过将这些声明加入用户的令牌中,可以根据这些声明授权资源。也就是说,可使用这些资源来确定某个特定用户是否能访问特定资源。 通过声明选取,可在人员选取器控件中显示声明。声明选取可让应用程序在人员选取器中呈现声明,例如配置 SharePoint 站点或 SharePoint 服务的安全性时。此功能可让您实现对声明的搜索、解析和友好显示。
备注
具备声明选取功能的人员选取器有时亦称为“声明选取器”。 有关详细信息,请参阅人员选取器和声明提供程序计划。
若要编写声明提供程序,第一步是创建派生自 SPClaimProvider 类的类。
提示: 若要获取代码示例并详细了解 SPClaimProvider 类及其成员,请参阅 SPClaimProvider。 有关演练、提示和代码示例,请参阅声明和安全性:MSDN 上的技术文章和代码示例。
必需实现代码
以下是编写声明提供程序时必需的方法和属性。
必需
以下 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)