Code Monkey home page Code Monkey logo

wumiaomiao2 / openiddict-core Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openiddict/openiddict-core

0.0 0.0 0.0 12.02 MB

Versatile OpenID Connect stack for ASP.NET Core and Microsoft.Owin (compatible with ASP.NET 4.6.1)

Home Page: https://documentation.openiddict.com/

License: Apache License 2.0

Shell 1.58% JavaScript 7.43% PHP 0.05% CoffeeScript 0.04% C# 75.61% PowerShell 2.15% CSS 1.87% HTML 8.97% CMake 0.16% Batchfile 0.01% Less 2.13% ASP.NET 0.01%

openiddict-core's Introduction

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

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.

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.


Compatibility matrix

Web framework version .NET runtime version OpenIddict 3.x (no longer supported) OpenIddict 4.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 ⚠️ ℹ️ ✔️
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 and ASP.NET Core 5.0 on .NET 5.0 are no longer supported by Microsoft. While OpenIddict 4.x can still be used on .NET Core 2.1 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.

Warning OpenIddict 3.x is impacted by a breaking change introduced in ASP.NET Core 7.0 and may require using an AppContext compatibility switch if the application only uses the OpenIddict server feature alone without any other authentication handler registered.

A workaround has been integrated into OpenIddict 4.0 preview5 and using a compatibility switch is no longer necessary on 4.0 preview5 and higher.

For more information, read ASP.NET Core 7.0's default authentication handler fallback breaks OpenIddict.

Note 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.

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 [email protected]. 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 make sure you sponsor the project before creating a GitHub ticket. If you're not a sponsor, you can post your questions on Gitter or StackOverflow:


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

Sébastien RosAndrewDovydas NavickasSchmitt ChristianThomas WFlorian WachsSebastian StehleCommunicatie CockpitJasmin SavardThomasMichael CalasanzSycDigitalOps Co. Ltd.Thom van den AkkerJaco Jansen van VuurenEYERIDE Fleet Management SystemJulien DebacheStian HåveRowan RichardsRavindu LiyanapathiranaHieronymusBlaze

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.

openiddict-core's People

Contributors

a-patel avatar ajfleming1 avatar bartmax avatar damccull avatar danbluhmhansen avatar darthruneis avatar dovydasnavickas avatar emanuelecastelli avatar erikrenaud avatar finalfortune avatar henkmollema avatar hishamco avatar igorhrabrov avatar ilmax avatar johanndev avatar joshcomley avatar kevinchalet avatar kinosang avatar maartenba avatar martincostello avatar nfactor26 avatar noahstahl avatar openiddict-bot avatar orlaqp avatar rsandbach avatar serkanz avatar suchiman avatar trejjam avatar vyfster avatar xperiandri avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.