Versatile OpenID Connect stack for ASP.NET Core and Microsoft.Owin (compatible with ASP.NET 4.6.1)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Kévin Chalet 69678b0b57 Update Versions.props to build 5.8.0 packages 1 year ago
.github Make "dotnet workload restore" conditional 2 years ago
eng Update Versions.props to build 5.8.0 packages 1 year ago
gen/OpenIddict.Client.WebIntegration.Generators Add Weibo to the list of supported providers 2 years ago
sandbox Support the new ASWebAuthenticationSessionCallback API on iOS 17.4+/Mac Catalyst 17.4+/macOS 14.4+ 1 year ago
shared/OpenIddict.Extensions Update the system integration package to support response_mode=fragment for requests handled via protocol activation or using the web authentication broker 2 years ago
src Unify platform callbacks handling using a new OpenIddictClientSystemIntegrationPlatformCallback type 1 year ago
test Update OpenIddictParameter to return "true" and "false" for string/string array conversions 2 years ago
.gitattributes Set up the initial project structure 10 years ago
.gitignore Send integration test logs to xUnit output 6 years ago
Build.cmd Introduce the first experimental OpenIddict 3.0 bits and move the build infrastructure to Arcade 7 years ago
Directory.Build.props Support the new ASWebAuthenticationSessionCallback API on iOS 17.4+/Mac Catalyst 17.4+/macOS 14.4+ 1 year ago
Directory.Build.targets Update the WinForms sample to support High DPI 2 years ago
Directory.Packages.props Bump IdentityModel to 8.0.1 2 years ago
LICENSE.md Introduce the first experimental OpenIddict 3.0 bits and move the build infrastructure to Arcade 7 years ago
NuGet.config Downgrade the .NET SDK to 8.0.100 2 years ago
OpenIddict.sln Pin the workload versions in WorkloadRollback.json 1 year ago
README.md Update the sponsors section 1 year ago
SECURITY.md Update README.md and SECURITY.md 5 years ago
WorkloadRollback.json Support the new ASWebAuthenticationSessionCallback API on iOS 17.4+/Mac Catalyst 17.4+/macOS 14.4+ 1 year ago
build.sh Introduce the first experimental OpenIddict 3.0 bits and move the build infrastructure to Arcade 7 years ago
global.json Bump the .NET SDK and the .NET dependencies 2 years ago
package-icon.png Update Arcade and replace the netcoreapp3.0 TFMs by netcoreapp3.1 6 years ago

README.md

OpenIddict

The OpenID Connect stack you'll be addicted to.

Build status

What's OpenIddict?

OpenIddict aims at providing a versatile solution to implement OpenID Connect client, server and token validation support in any ASP.NET Core 2.1 (and higher) application. ASP.NET 4.6.1 (and higher) applications are also fully supported thanks to a native Microsoft.Owin 4.2 integration.

OpenIddict fully supports the code/implicit/hybrid flows, the client credentials/resource owner password grants and the device authorization flow.

OpenIddict natively supports Entity Framework Core, Entity Framework 6 and MongoDB out-of-the-box and custom stores can be implemented to support other providers.


Getting started

To implement a custom OpenID Connect server using OpenIddict, read Getting started.

Samples demonstrating how to use OpenIddict with the different OAuth 2.0/OpenID Connect flows can be found in the dedicated repository.

Developers looking for a simple and turnkey solution are strongly encouraged to use OrchardCore and its OpenID module, which is based on OpenIddict, comes with sensible defaults and offers a built-in management GUI to easily register OpenID client applications.

Looking to integrate with a SAML2P Identity Provider (IDP) or Service Provider (SP)? Rock Solid Knowledge, a sponsor of OpenIddict, is developing a range of identity components to enhance your OpenIddict solution. The first of these is their popular SAML2P component.


Compatibility matrix

Web framework version .NET runtime version OpenIddict 4.x OpenIddict 5.x
ASP.NET Core 2.1 .NET Framework 4.6.1 ✔️ ℹ️ ✔️ ℹ️
ASP.NET Core 2.1 .NET Framework 4.7.2 ✔️ ✔️
ASP.NET Core 2.1 .NET Framework 4.8 ✔️ ✔️
ASP.NET Core 2.1 .NET Core 2.1
ASP.NET Core 3.1 .NET Core 3.1 ✔️
ASP.NET Core 5.0 .NET 5.0
ASP.NET Core 6.0 .NET 6.0 ✔️ ✔️
ASP.NET Core 7.0 .NET 7.0 ✔️ ✔️
ASP.NET Core 8.0 .NET 8.0 ✔️ ✔️
Microsoft.Owin 4.2 .NET Framework 4.6.1 ✔️ ℹ️ ✔️ ℹ️
Microsoft.Owin 4.2 .NET Framework 4.7.2 ✔️ ✔️
Microsoft.Owin 4.2 .NET Framework 4.8 ✔️ ✔️

[!WARNING] ASP.NET Core 2.1 on .NET Core 2.1, ASP.NET Core 3.1 and 5.0 are no longer supported by Microsoft. While OpenIddict can still be used on these platforms thanks to its .NET Standard 2.0 compatibility, users are strongly encouraged to migrate to ASP.NET Core/.NET 6.0.

ASP.NET Core 2.1 on .NET Framework 4.6.1 (and higher) is still fully supported.

[!TIP] The following features are not available when targeting .NET Framework 4.6.1:

  • X.509 development encryption/signing certificates: calling AddDevelopmentEncryptionCertificate() or AddDevelopmentSigningCertificate() will result in a PlatformNotSupportedException being thrown at runtime if no valid development certificate can be found and a new one must be generated.
  • X.509 ECDSA signing certificates/keys: calling AddSigningCertificate() or AddSigningKey() with an ECDSA certificate/key will always result in a PlatformNotSupportedException being thrown at runtime.

Certification

Unlike many other identity providers, OpenIddict is not a turnkey solution but a framework that requires writing custom code to be operational (typically, at least an authorization controller), making it a poor candidate for the certification program.

While a reference implementation could be submitted as-is, this wouldn't guarantee that implementations deployed by OpenIddict users would be standard-compliant.

Instead, developers are encouraged to execute the conformance tests against their own deployment once they've implemented their own logic.

[!TIP] The samples repository contains a dedicated sample specially designed to be used with the OpenID Connect Provider Certification tool and demonstrate that OpenIddict can be easily used in a certified implementation. To allow executing the certification tests as fast as possible, that sample doesn't include any membership or consent feature (two hardcoded identities are proposed for tests that require switching between identities).


Resources

Looking for additional resources to help you get started with OpenIddict? Don't miss these interesting blog posts:

OpenIddict-based projects maintained by third parties:


Security policy

Security issues and bugs should be reported privately by emailing security@openiddict.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message.


Support

If you need support, please first make sure you're sponsoring the project. Depending on the tier you selected, you can open a GitHub ticket or send an email to contact@openiddict.com for private support.

Alternatively, you can also post your question on Gitter.

[!IMPORTANT] With OpenIddict 5.x being now generally available, the previous version, OpenIddict 4.x, stops being supported and won't receive bug fixes or security updates. As such, it is recommended to migrate to OpenIddict 5.x to continue receiving bug and security fixes.

There are, however, two exceptions to this policy:

  • ABP Framework 7.x users will still receive patches for OpenIddict 4.x for as long as ABP Framework 7.x itself is supported by Volosoft (typically a year following the release of ABP 8.x), whether they have a commercial ABP license or just use the free packages.

  • OpenIddict sponsors who have opted for a $250+/month sponsorship are now offered extended support:

    • $250/month sponsors get full support for OpenIddict 4.x until June 18, 2024 (6 months).
    • $500/month sponsors get full support for OpenIddict 4.x until December 18, 2024 (12 months).
    • $1,000/month sponsors get full support for OpenIddict 4.x until December 18, 2025 (24 months).

Nightly builds

If you want to try out the latest features and bug fixes, there is a MyGet feed with nightly builds of OpenIddict. To reference the OpenIddict MyGet feed, create a NuGet.config file (at the root of your solution):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="openiddict" value="https://www.myget.org/F/openiddict/api/v3/index.json" />
  </packageSources>
</configuration>

Contributors

OpenIddict is actively maintained by Kévin Chalet. Contributions are welcome and can be submitted using pull requests.

Special thanks to our sponsors for their incredible support:

Volosoft logo



OpenIddict Components Logo



Sébastien RosSchmitt ChristianFlorian WachsSebastian StehleCommunicatie CockpitJasmin SavardDigitalOps Co. Ltd.EYERIDE Fleet Management SystemJulien DebacheStian HåveRavindu LiyanapathiranaHieronymusBlazeAkhan ZhakiyanovBarry DorransDevQ S.r.l.GrégoireForterroMarcelJens WillmerBlauhaus Technology (Pty) LtdJan TrejbalAviationexam s.r.o.MonoforRatiodata SEDennis van ZettenJeroenElfsterLombiq Technologies Ltd.PureBlazorAndrew BabbittKarl Schrieksoftaware gmbhSingular SystemsSCP-srlJacob ClarkRealisable Software

License

This project is licensed under the Apache License. This means that you can use, modify and distribute it freely. See http://www.apache.org/licenses/LICENSE-2.0.html for more details.