Skip to content

Create New Credential Provider

Faryan Rezagholi edited this page May 1, 2019 · 1 revision

The information on this page is subject to change at any time. This subsystem's interface is still under construction.


Overview

This page will walk you through the necessary steps to implement a new credential provider. Simply, credentials providers load credentials from some external source into mRemoteNG.

Note: Credential management is not fully implemented. Credential providers are not yet used for authentication in mRemoteNG.

A few notes

  • Most of the code that you will need to be familiar with is located in the mRemoteV1 project in the Credential folder
  • Your pull request must include unit tests to be merged.

Steps to implement

  1. Create a new folder in mRemoteV1/Credential/Providers/ for the credential provider you are creating. For example: mRemoteV1/Credential/Providers/KeePass/
  2. Create a corresponding folder in the mRemoteNGTests project. Following the existing naming pattern, name all test classes "MyClassTests"
  3. At the highest level, your provider will need to implement the interface ICredentialProvider
  4. The ICredentialProvider requires you to create & return an ICredentialList. If you do not need to extend the ICredentialList, then the CredentialListBase is an adequate concrete implementation for you to use.
  5. Translate the credential entries from your external source into something mRemoteNG can work with.
  6. Implement ICredential or use the generic CredentialRecord implementation.
  7. Important - Every ICredential.UniqueId must be unique within mRemoteNG. Also, the function to create a credential's UniqueId must be deterministic when importing from an external source. This means that we must get the same UniqueId every time we import the same credential from the external source, regardless of username/password/domain values.