committed by
Kévin Chalet
1 changed files with 113 additions and 0 deletions
@ -0,0 +1,113 @@ |
|||||
|
# OpenIddict |
||||
|
### The OpenID Connect server you'll be addict to. |
||||
|
|
||||
|
[](https://ci.appveyor.com/project/aspnet-contrib/core) |
||||
|
[](https://travis-ci.org/openiddict/core) |
||||
|
|
||||
|
|
||||
|
### What's OpenIddict? |
||||
|
|
||||
|
OpenIddict aims at providing a **simple and easy-to-use solution** to implement an **OpenID Connect server in any ASP.NET 5 application**. |
||||
|
|
||||
|
|
||||
|
### Why an OpenID Connect server? |
||||
|
|
||||
|
Adding an OpenID Connect server to your application **allows you to support token authentication**. |
||||
|
It also allows you to manage all your users using local password or an external identity provider |
||||
|
(e.g. Facebook or Google) for all your applications in one central place, |
||||
|
with the power to control who can access your API and the information that is exposed to each client. |
||||
|
|
||||
|
|
||||
|
### How does it work? |
||||
|
|
||||
|
OpenIddict is based on **[ASP.NET Identity 3](https://github.com/aspnet/Identity)** (for user management) and relies on |
||||
|
**[AspNet.Security.OpenIdConnect.Server](https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server)** to control the OpenID Connect authentication flow. It comes with a built-in MVC 6 controller and native views that you can easily replace by your own ones to fully customize your login experience: |
||||
|
|
||||
|
 |
||||
|
|
||||
|
OpenIddict fully supports the **code/implicit/hybrid flows** and the **client credentials/resource owner password grants**. For more information about these terms, please visit the **[OpenID website](http://openid.net/specs/openid-connect-core-1_0.html)** and read the **[OAuth2 specification](https://tools.ietf.org/html/rfc6749)**. |
||||
|
|
||||
|
Note: OpenIddict uses **[EntityFramework 7](https://github.com/aspnet/EntityFramework)** by default, but you can also provide your own store. |
||||
|
|
||||
|
-------------- |
||||
|
|
||||
|
## Getting started |
||||
|
|
||||
|
To use OpenIddict, you need to: |
||||
|
|
||||
|
- **Have an existing project or create a new one** (note: when creating a new project using Visual Studio's default ASP.NET 5 template, using **individual user accounts authentication** is strongly recommended). |
||||
|
|
||||
|
- **Add the appropriate MyGet repositories to your NuGet sources**. This can be done by adding a new `NuGet.Config` file at the root of your solution: |
||||
|
|
||||
|
```xml |
||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<configuration> |
||||
|
<packageSources> |
||||
|
<add key="aspnet-contrib" value="https://www.myget.org/F/aspnet-contrib/api/v2" /> |
||||
|
<add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2" /> |
||||
|
<add key="AzureAd Nightly" value="http://www.myget.org/F/azureadwebstacknightly/" /> |
||||
|
<add key="NuGet" value="https://api.nuget.org/v3/index.json" /> |
||||
|
</packageSources> |
||||
|
</configuration> |
||||
|
``` |
||||
|
|
||||
|
- **Update your `project.json`** to import the `OpenIddict` package: |
||||
|
|
||||
|
```json |
||||
|
"dependencies": { |
||||
|
"OpenIddict": "1.0.0-*" |
||||
|
}, |
||||
|
``` |
||||
|
|
||||
|
- **Configure the OpenIddict services** in `Startup.ConfigureServices`: |
||||
|
|
||||
|
```csharp |
||||
|
public void ConfigureServices(IServiceCollection services) { |
||||
|
services.AddMvc(); |
||||
|
|
||||
|
services.AddEntityFramework() |
||||
|
.AddSqlServer() |
||||
|
.AddDbContext<ApplicationDbContext>(options => |
||||
|
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); |
||||
|
|
||||
|
services.AddIdentity<ApplicationUser, IdentityRole>() |
||||
|
.AddEntityFrameworkStores<ApplicationDbContext>() |
||||
|
.AddDefaultTokenProviders() |
||||
|
.AddOpenIddict(); // Add the OpenIddict services after registering the Identity services. |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
- **Add the OpenIddict middleware in your ASP.NET 5 pipeline** by calling `app.UseOpenIddict()` after `app.UseIdentity()`: |
||||
|
|
||||
|
```csharp |
||||
|
public void Configure(IApplicationBuilder app) { |
||||
|
app.UseIdentity(); |
||||
|
|
||||
|
// Add all the external providers you need before registering OpenIddict: |
||||
|
app.UseGoogleAuthentication(); |
||||
|
app.UseFacebookAuthentication(); |
||||
|
|
||||
|
app.UseOpenIddict(); |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
> **Note:** `UseOpenIddict()` must be registered ***after*** `app.UseIdentity()` and the external providers. |
||||
|
|
||||
|
For a better insight on the different options and configurations available, check out |
||||
|
[Configuration and Options](https://github.com/openiddict/core/wiki/Configuration-&-Options) |
||||
|
in the project wiki. |
||||
|
|
||||
|
## Support |
||||
|
|
||||
|
**Need help or wanna share your thoughts? Don't hesitate to join our dedicated chat rooms:** |
||||
|
|
||||
|
- **JabbR: [https://jabbr.net/#/rooms/aspnet-contrib](https://jabbr.net/#/rooms/aspnet-contrib)** |
||||
|
- **Gitter: [https://gitter.im/openiddict/core](https://gitter.im/openiddict/core)** |
||||
|
|
||||
|
## Contributors |
||||
|
|
||||
|
**OpenIddict** is actively maintained by **[Kévin Chalet](https://github.com/PinpointTownes)**. Contributions are welcome and can be submitted using pull requests. |
||||
|
|
||||
|
## 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](http://www.apache.org/licenses/LICENSE-2.0.html) for more details. |
||||
Loading…
Reference in new issue