Edit

Deploy a claims provider in SharePoint

Important

This content applies to SharePoint Server on-premises only. Custom claims providers are not supported in SharePoint Online.

Learn how to deploy a SharePoint claims provider by using the features infrastructure and creating a class that inherits from SPClaimProviderFeatureReceiver.

Deploying a claims provider as part of a setup

The easiest way to deploy a claims provider is by using the features infrastructure. To do this, first define a Farm scoped feature and a feature receiver that derives from the SPClaimProviderFeatureReceiver class, and override the base properties.

The following is an example of how to do this.

public class MyClaimProviderFeatureReceiver : SPClaimProviderFeatureReceiver
{
  public override string ClaimProviderAssembly { get { return typeof(MyClaimProvider).Assembly.FullName; } }
  public override string ClaimProviderType { get { return typeof(MyClaimProvider).FullName; } }
  public override string ClaimProviderDisplayName
  {
    get
    {
      return StringResourceManager.GetString(MyLocalizedClaimProviderName);
    }
  }
  public override string ClaimProviderDescription
  {
    get
    {
      return StringResourceManager.GetString(MyLocalizedClaimProviderDescription);
    }
  }
}

Deploying a claims provider using the feature infrastructure

The following is a sample that demonstrates how to define a feature and a feature receiver that derives from SPClaimProviderFeatureReceiver and override the base properties.

// Sample claims provider feature receiver class through which
// the sample claims provider registers itself
// with the Microsoft.SharePoint.Administration.Claims.SPClaimProviderManager class.

using System;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Administration.Claims;

namespace MySample.Sample.Server.SampleClaimsProvider
{
  /// <summary>
  /// The NameIdentifierClaimProviderFeatureReceiver class is a feature receiver class
  /// that registers the claims provider with the claims provider manager.
  /// </summary>

  [Microsoft.SharePoint.Security.SharePointPermission(System.Security.Permissions.SecurityAction.Demand, ObjectModel = true)]
  public sealed class NameIdentifierClaimProviderFeatureReceiver : SPClaimProviderFeatureReceiver
  {
    #region Private Methods
    /// <summary>
    /// Because use of base keyword can lead to unverifiable code inside a lambda expression,
    /// this function is created as a wrapper for the base.FeatureActivated function.
    /// This function gets called in the following lambda expression.
    /// </summary>

    /// <param name="properties">Represents the properties of a feature activation.</param>
    /// <returns> void </returns>

    private void ExecBaseFeatureActivated(Microsoft.SharePoint.SPFeatureReceiverProperties properties)
    {
      base.FeatureActivated(properties);
    }
    #endregion Private Methods

    #region Public Method\\Properties
    /// <summary>
    /// Gets the fully qualified name of the MySample.Sample.Server.SampleClaimsProvider assembly.
    /// </summary>

    /// <returns>String representing fully qualified name of the MySample.Sample.Server.SampleClaimsProvider
    /// assembly.</returns>
    public override string ClaimProviderAssembly
    {
      get{ return typeof(SampleNameIdClaimProvider).Assembly.FullName; }
    }

    /// <summary>
    /// Gets the fully qualified name of the claims provider type, including the namespace of the type.
    /// </summary>
    /// <returns>String representing the fully qualified name of the
    ///SampleNameIdClaimProvider class.</returns>
    public override string ClaimProviderType
    {
      get{ return typeof(NameIdentifierClaimProvider).FullName; }
    }

    /// <summary>
    /// Gets the display name of the claims provider.
    /// </summary>

    /// <returns>String representing display name of the claim provider.</returns>
    public override string ClaimProviderDisplayName
    {
      get{ return "Sample NameId Claim Provider"; }
    }

    /// <summary>
    /// Gets the description about the claims provider.
    /// </summary>

    /// <returns>String representing the description about the SampleClaimProvider.</returns>
    public override string ClaimProviderDescription
    {
      get
      {
        return "This feature adds SampleNameId claim type in the SAML token created by the STS.";
      }
    }

    /// <summary>
    /// This method gets called after the activation of the feature.
    /// </summary>
    /// <param name="properties">Represents the properties of a feature activation</param>
    /// <returns>void.</returns>
    public override void FeatureActivated(Microsoft.SharePoint.SPFeatureReceiverProperties properties)
    {
      {
        ExecBaseFeatureActivated(properties);
      }
    }
    #endregion Public Method\\Properties
  }
}

See also