jamiehighfield / windowscredentialprovider

A .NET implementation of the authentication mechanism used within Windows 7, 7, 10 & 11.
6 stars 2 forks source link
c-plus-plus com-interop component-object-model csharp pinvoke windows

Windows Credential Provider

This project looks to open the oportunity to easily create Windows credential providers for Windows 7, 8 and 10 using managed .NET. Credential providers are COM based, with the interfaces needed for Windows credential providers being written in C++. In .NET, it is possible to do COM interopability and platform invocation, making it possible to make a Windows credential provider in .NET.

Nonetheless, even when using COM interopability and platform invocation, the .NET equivalent interfaces created aren't very friendly for a managed language. This project builds on this by creating an object-oriented and functional API.

Features

This library fully supports the ICredentialProvider interface as part of the Win32 API from the Microsoft documentation, including:

Getting Started

Getting started with this library is easy - simply install the package from the NuGet package manager.

Installation

This library can be installed either by compiling the source yourself or by installing the NuGet package:

Install-Package Windows-Credential-Provider

Basic Implementation

Screenshots

The following screenshots are examples of credential providers included within this project, used in a variety of different scenarios.

Wrap Credential Provider

This screenshot wraps the existing Windows password credential provider, and adds a link labelled 'Reset Password', enabling the user to reset their password. Note: this functionality is not included.

Sample Wrap Credential Provider

License Information

Versions 1.x are issued under the MIT license. There are no restrictions on the use of the software, except that the MIT license must be attributed to any open-source or commercial redistributions of the software. The MIT license was chosen for this software to protect commercial interests in the use of the software, whilst at the same time, enabling the software to be used freely in open-source projects.