MBSD.CyberArk.CCPClient 1.0.3

dotnet add package MBSD.CyberArk.CCPClient --version 1.0.3
                    
NuGet\Install-Package MBSD.CyberArk.CCPClient -Version 1.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MBSD.CyberArk.CCPClient" Version="1.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MBSD.CyberArk.CCPClient" Version="1.0.3" />
                    
Directory.Packages.props
<PackageReference Include="MBSD.CyberArk.CCPClient" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MBSD.CyberArk.CCPClient --version 1.0.3
                    
#r "nuget: MBSD.CyberArk.CCPClient, 1.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MBSD.CyberArk.CCPClient@1.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MBSD.CyberArk.CCPClient&version=1.0.3
                    
Install as a Cake Addin
#tool nuget:?package=MBSD.CyberArk.CCPClient&version=1.0.3
                    
Install as a Cake Tool

MBSD.CyberArk.CCPClient

A clean, simple, and robust .NET Standard library for integrating with CyberArk Central Credential Provider (CCP) with maximum flexibility for enterprise scenarios.

⚠️ Important Disclaimers

This library is developed independently by Matthew Bohan and is not affiliated with, endorsed by, or sponsored by CyberArk / CyberArk Software Ltd.

CyberArk®, Central Credential Provider™, and related names are the property of CyberArk Software Ltd. or its affiliates.

This software uses only publicly available documentation and does not contain proprietary CyberArk code.


This project is a work in progress

This is an initial version of the library, and it may not be fully functional or tested. I don't have access to a CyberArk instance from my personal computer, so contributions, feedback, and testing are welcome to help improve it.

Features

  • Simple API - Clean and intuitive interface with fluent configuration
  • Multiple Authentication Methods - Application ID only, client certificates (file or certificate store)
  • Async & Sync Support - Both asynchronous and synchronous method variants
  • Logging - Structured logging with Microsoft.Extensions.Logging
  • SSL Configuration - Control SSL verification and client certificates
  • Error Handling - Comprehensive exception handling with detailed error information
  • .NET Standard 2.0 - Compatible with .NET Framework 4.6.1+, .NET Core 2.0+, and .NET 5+

Installation

dotnet add package MBSD.CyberArk.CCPClient

Quick Start

Synchronous Quick Start

using System;
using System.Diagnostics;
using System.Net.Http;
 
using System.Security.Cryptography.X509Certificates;
using Microsoft.Extensions.Options;

using MBSD.CyberArk.CCPClient;
using MBSD.CyberArk.CCPClient.Configuration;
using MBSD.CyberArk.CCPClient.Models;



namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {

            var options = new CCPOptions
           
            {
                BaseUrl = "https://ccp.company.com"
                 
            };

            try
            {
              using  var httpClient = new HttpClient();
              using  var CCPClient = new CCPClient(httpClient, Options.Create(options));

                if (CCPClient.TestConnection())    // Test the connection to the CyberArk CCP server
                {
                    Debug.WriteLine("Connection Successful!");

                }
                else
                {
                    Debug.WriteLine("Connection Failed!");
                }


                // Example of getting a secret using an object ID/Account Name, Safe Name, Application ID and an optional certificate file.
                // which is the recommended way to efficiency retrieve secrets from CyberArk CCP. 

                var secret = CCPClient.GetSecret(
                    SecretRequest.ForObject("ObjectID/AccountName")
                        .InSafe("MySafeName")
                        .UsingApplicationId("MyApplicationID")
                        .UsingCertificateFile("path/to/certificate.pfx", "certificatePassword")
                );

             
                // Example of getting a secret using an object ID/Account Name, Safe Name, Application ID and a certificate stored in the Local Machine store. 
                var secret2 = CCPClient.GetSecret(
                    SecretRequest.ForObject("ObjectID/AccountName")
                        .InSafe("MySafeName")
                        .UsingApplicationId("MyApplicationID")
                        .UsingCertificateStore("CERT_THUMBPRINT", StoreLocation.LocalMachine, StoreName.My)
                );

                // Example of getting just the credential/password using an object ID/Account Name, Safe Name, Application ID, and specifying a folder within the safe. 
                var password3 = CCPClient.GetPasswordOnly(
                   SecretRequest.ForObject("ObjectID/AccountName")
                       .InSafe("MySafeName")
                       .InFolder("Root")
                       .UsingApplicationId("MyApplicationID")
                      );


            }
            catch (CCPException ccpEx)
            {
                Debug.WriteLine($"Error: ApplicationID: {ccpEx.ApplicationId}");
                Debug.WriteLine($"Error Code: {ccpEx.ErrorCode}");
                Debug.WriteLine($"HTTP Status Code: {ccpEx.HttpStatusCode}");
                Debug.WriteLine($"Response: {ccpEx.ResponseContent}");

            }
            

        }
    }
}

Asyncronous Usage

// Retrieve a secret using an object ID/Account Name, Safe Name, and an application ID using Async. var secret = await CCPClient.GetSecretAsync( SecretRequest.ForObject("ObjectID/AccountName") .InSafe("MySafeName") .UsingApplicationId("MyApplicationID")

);

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

This library is developed independently by Matthew Bohan and is not affiliated with, endorsed by, or sponsored by CyberArk / CyberArk Software Ltd.

CyberArk®, Central Credential Provider™, and related names are the property of CyberArk Software Ltd. or its affiliates.

This software uses only publicly available documentation and does not contain proprietary CyberArk code.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests
  4. Submit a pull request

Please ensure all contributions comply with the Apache License 2.0 and do not include any proprietary CyberArk code or documentation.

Support

For issues and questions:

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 124 7/17/2025

CyberArk CCP client library with flexible per-request Application ID and certificate support.
DISCLAIMER: This library is developed independently by Matthew Bohan and is not affiliated with, endorsed by, or sponsored by CyberArk / CyberArk Software Ltd.