Skip to content

Credential Management System

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

Overview

This page will talk about the credential management system developed in #208. This is a technical document for developers and assumes you know some basics about mRemoteNG.

Primary Interfaces

ICredentialRecord

This represents a set of credentials (user/domain/password). A credential record should be unique within an instance of mRemoteNG, as determined by its Id property. Credentials are also given a Title, which serves as a user-friendly name for the credential record.

ICredentialRepository

A credential repository is responsible for providing and managing a collection of ICredentialRecord objects. Its purpose is to load and (if applicable) save any credential changes. A repository represents an instance of a specific credential storage strategy.

It is possible to have several repositories defined and loaded at once with similar or differing implementations. For example, credentials provided by a web service (e.i. LassPass), from a local file (e.i. Xml), and from a database.

Each repository represents a discrete set of credentials and no single set can be loaded twice. For example, it is possible to load files C:\cred_1.xml and C:\cred_2.xml simultaneously (provided that they do not contain the same credential records). However, it is not valid to create 2 repositories that both point to C:\cred_1.xml.

ICredentialRepositoryConfig

Credential repository configs define the information necessary for saving and loading an ICredentialRepository. The construction of an ICredentialRepository object may be complex and require more information than is immediately available when the list of configured repositories is loaded. The ICredentialRepositoryConfig is an easily serializable object that represents all the generic information that we must know about a repository.

ICredentialRepositoryFactory

Responsible for creating instances of the required ICredentialRepository when given an ICredentialRepositoryConfig. The factory should read the ICredentialRepositoryConfig.TypeName to determine if it can handle creating that type of repository.

ICredentialRepositoryList

This represents a list of all currently defined credential repositories.

ICredentialService

This type is a facade for the credential management sub-system within mRemoteNG. It retains references to all other pieces of the credential management system and helps to orchestrate their use.