Skip to content

Commit a140314

Browse files
committed
Bump OpenIddict to 6.0.0
1 parent 5a508ac commit a140314

File tree

29 files changed

+122
-149
lines changed

29 files changed

+122
-149
lines changed

Diff for: Directory.Packages.props

+14-14
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@
4444
<PackageVersion Include="Microsoft.Owin.Security.Cookies" Version="4.2.2" />
4545
<PackageVersion Include="Microsoft.Owin.Security.OAuth" Version="4.2.2" />
4646
<PackageVersion Include="Microsoft.Web.Infrastructure" Version="2.0.1" />
47-
<PackageVersion Include="OpenIddict.Client.SystemIntegration" Version="5.8.0" />
48-
<PackageVersion Include="OpenIddict.Client.SystemNetHttp" Version="5.8.0" />
49-
<PackageVersion Include="OpenIddict.EntityFramework" Version="5.8.0" />
50-
<PackageVersion Include="OpenIddict.EntityFrameworkCore" Version="5.8.0" />
51-
<PackageVersion Include="OpenIddict.Owin" Version="5.8.0" />
47+
<PackageVersion Include="OpenIddict.Client.SystemIntegration" Version="6.0.0" />
48+
<PackageVersion Include="OpenIddict.Client.SystemNetHttp" Version="6.0.0" />
49+
<PackageVersion Include="OpenIddict.EntityFramework" Version="6.0.0" />
50+
<PackageVersion Include="OpenIddict.EntityFrameworkCore" Version="6.0.0" />
51+
<PackageVersion Include="OpenIddict.Owin" Version="6.0.0" />
5252
<PackageVersion Include="WebGrease" Version="1.6.0" />
5353
</ItemGroup>
5454

@@ -85,15 +85,15 @@
8585
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
8686
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.1" />
8787
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.7" />
88-
<PackageVersion Include="OpenIddict.Abstractions" Version="5.8.0" />
89-
<PackageVersion Include="OpenIddict.AspNetCore" Version="5.8.0" />
90-
<PackageVersion Include="OpenIddict.Client.SystemIntegration" Version="5.8.0" />
91-
<PackageVersion Include="OpenIddict.Client.SystemNetHttp" Version="5.8.0" />
92-
<PackageVersion Include="OpenIddict.Client.WebIntegration" Version="5.8.0" />
93-
<PackageVersion Include="OpenIddict.EntityFrameworkCore" Version="5.8.0" />
94-
<PackageVersion Include="OpenIddict.Quartz" Version="5.8.0" />
95-
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="5.8.0" />
96-
<PackageVersion Include="OpenIddict.Validation.SystemNetHttp" Version="5.8.0" />
88+
<PackageVersion Include="OpenIddict.Abstractions" Version="6.0.0" />
89+
<PackageVersion Include="OpenIddict.AspNetCore" Version="6.0.0" />
90+
<PackageVersion Include="OpenIddict.Client.SystemIntegration" Version="6.0.0" />
91+
<PackageVersion Include="OpenIddict.Client.SystemNetHttp" Version="6.0.0" />
92+
<PackageVersion Include="OpenIddict.Client.WebIntegration" Version="6.0.0" />
93+
<PackageVersion Include="OpenIddict.EntityFrameworkCore" Version="6.0.0" />
94+
<PackageVersion Include="OpenIddict.Quartz" Version="6.0.0" />
95+
<PackageVersion Include="OpenIddict.Validation.AspNetCore" Version="6.0.0" />
96+
<PackageVersion Include="OpenIddict.Validation.SystemNetHttp" Version="6.0.0" />
9797
<PackageVersion Include="Quartz.Extensions.Hosting" Version="3.5.0" />
9898
<PackageVersion Include="Spectre.Console" Version="0.49.1" />
9999
<PackageVersion Include="System.Linq.Async" Version="6.0.1" />

Diff for: samples/Aridka/Aridka.Server/Startup.cs

-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ public void ConfigureServices(IServiceCollection services)
3434
// (like pruning orphaned authorizations/tokens from the database) at regular intervals.
3535
services.AddQuartz(options =>
3636
{
37-
options.UseMicrosoftDependencyInjectionJobFactory();
3837
options.UseSimpleTypeLoader();
3938
options.UseInMemoryStore();
4039
});

Diff for: samples/Balosar/Balosar.Server/Controllers/AuthorizationController.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ public async Task<IActionResult> Authorize()
6161
// For scenarios where the default authentication handler configured in the ASP.NET Core
6262
// authentication options shouldn't be used, a specific scheme can be specified here.
6363
var result = await HttpContext.AuthenticateAsync();
64-
if (result == null || !result.Succeeded || request.HasPrompt(Prompts.Login) ||
64+
if (result == null || !result.Succeeded || request.HasPromptValue(PromptValues.Login) ||
6565
(request.MaxAge != null && result.Properties?.IssuedUtc != null &&
6666
DateTimeOffset.UtcNow - result.Properties.IssuedUtc > TimeSpan.FromSeconds(request.MaxAge.Value)))
6767
{
6868
// If the client application requested promptless authentication,
6969
// return an error indicating that the user is not logged in.
70-
if (request.HasPrompt(Prompts.None))
70+
if (request.HasPromptValue(PromptValues.None))
7171
{
7272
return Forbid(
7373
authenticationSchemes: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme,
@@ -80,7 +80,7 @@ public async Task<IActionResult> Authorize()
8080

8181
// To avoid endless login -> authorization redirects, the prompt=login flag
8282
// is removed from the authorization request payload before redirecting the user.
83-
var prompt = string.Join(" ", request.GetPrompts().Remove(Prompts.Login));
83+
var prompt = string.Join(" ", request.GetPromptValues().Remove(PromptValues.Login));
8484

8585
var parameters = Request.HasFormContentType ?
8686
Request.Form.Where(parameter => parameter.Key != Parameters.Prompt).ToList() :
@@ -130,7 +130,7 @@ public async Task<IActionResult> Authorize()
130130
// return an authorization response without displaying the consent form.
131131
case ConsentTypes.Implicit:
132132
case ConsentTypes.External when authorizations.Count is not 0:
133-
case ConsentTypes.Explicit when authorizations.Count is not 0 && !request.HasPrompt(Prompts.Consent):
133+
case ConsentTypes.Explicit when authorizations.Count is not 0 && !request.HasPromptValue(PromptValues.Consent):
134134
// Create the claims-based identity that will be used by OpenIddict to generate tokens.
135135
var identity = new ClaimsIdentity(
136136
authenticationType: TokenValidationParameters.DefaultAuthenticationType,
@@ -167,8 +167,8 @@ public async Task<IActionResult> Authorize()
167167

168168
// At this point, no authorization was found in the database and an error must be returned
169169
// if the client application specified prompt=none in the authorization request.
170-
case ConsentTypes.Explicit when request.HasPrompt(Prompts.None):
171-
case ConsentTypes.Systematic when request.HasPrompt(Prompts.None):
170+
case ConsentTypes.Explicit when request.HasPromptValue(PromptValues.None):
171+
case ConsentTypes.Systematic when request.HasPromptValue(PromptValues.None):
172172
return Forbid(
173173
authenticationSchemes: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme,
174174
properties: new AuthenticationProperties(new Dictionary<string, string>

Diff for: samples/Balosar/Balosar.Server/Startup.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public void ConfigureServices(IServiceCollection services)
4242
// (like pruning orphaned authorizations/tokens from the database) at regular intervals.
4343
services.AddQuartz(options =>
4444
{
45-
options.UseMicrosoftDependencyInjectionJobFactory();
4645
options.UseSimpleTypeLoader();
4746
options.UseInMemoryStore();
4847
});
@@ -106,9 +105,9 @@ public void ConfigureServices(IServiceCollection services)
106105
{
107106
// Enable the authorization, logout, token and userinfo endpoints.
108107
options.SetAuthorizationEndpointUris("connect/authorize")
109-
.SetLogoutEndpointUris("connect/logout")
108+
.SetEndSessionEndpointUris("connect/logout")
110109
.SetTokenEndpointUris("connect/token")
111-
.SetUserinfoEndpointUris("connect/userinfo");
110+
.SetUserInfoEndpointUris("connect/userinfo");
112111

113112
// Mark the "email", "profile" and "roles" scopes as supported scopes.
114113
options.RegisterScopes(Scopes.Email, Scopes.Profile, Scopes.Roles);
@@ -125,7 +124,7 @@ public void ConfigureServices(IServiceCollection services)
125124
// Register the ASP.NET Core host and configure the ASP.NET Core-specific options.
126125
options.UseAspNetCore()
127126
.EnableAuthorizationEndpointPassthrough()
128-
.EnableLogoutEndpointPassthrough()
127+
.EnableEndSessionEndpointPassthrough()
129128
.EnableStatusCodePagesIntegration()
130129
.EnableTokenEndpointPassthrough();
131130
})

Diff for: samples/Balosar/Balosar.Server/Worker.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ await manager.CreateAsync(new OpenIddictApplicationDescriptor
4444
Permissions =
4545
{
4646
Permissions.Endpoints.Authorization,
47-
Permissions.Endpoints.Logout,
47+
Permissions.Endpoints.EndSession,
4848
Permissions.Endpoints.Token,
4949
Permissions.GrantTypes.AuthorizationCode,
5050
Permissions.GrantTypes.RefreshToken,

Diff for: samples/Contruum/Contruum.Server/Handlers.cs

-58
This file was deleted.

Diff for: samples/Contruum/Contruum.Server/Pages/Connect/Authorize.cshtml.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<IActionResult> OnGetAsync()
3333
{
3434
// If the client application requested promptless authentication,
3535
// return an error indicating that the user is not logged in.
36-
if (request.HasPrompt(Prompts.None))
36+
if (request.HasPromptValue(PromptValues.None))
3737
{
3838
return Forbid(
3939
authenticationSchemes: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme,
@@ -55,11 +55,11 @@ public async Task<IActionResult> OnGetAsync()
5555

5656
// If prompt=login was specified by the client application,
5757
// immediately return the user agent to the login page.
58-
if (request.HasPrompt(Prompts.Login))
58+
if (request.HasPromptValue(PromptValues.Login))
5959
{
6060
// To avoid endless login -> authorization redirects, the prompt=login flag
6161
// is removed from the authorization request payload before redirecting the user.
62-
var prompt = string.Join(" ", request.GetPrompts().Remove(Prompts.Login));
62+
var prompt = string.Join(" ", request.GetPromptValues().Remove(PromptValues.Login));
6363

6464
var parameters = Request.HasFormContentType ?
6565
Request.Form.Where(parameter => parameter.Key != Parameters.Prompt).ToList() :

Diff for: samples/Contruum/Contruum.Server/Startup.cs

+51-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
using System.Globalization;
12
using System.IO;
3+
using System.Text.Json;
24
using Contruum.Server.Models;
35
using Microsoft.AspNetCore.Authentication.Cookies;
46
using Microsoft.AspNetCore.Builder;
@@ -7,7 +9,9 @@
79
using Microsoft.Extensions.Configuration;
810
using Microsoft.Extensions.DependencyInjection;
911
using Microsoft.Extensions.Hosting;
12+
using OpenIddict.Abstractions;
1013
using Quartz;
14+
using static OpenIddict.Abstractions.OpenIddictConstants;
1115
using static OpenIddict.Server.OpenIddictServerEvents;
1216

1317
namespace Contruum.Server;
@@ -43,7 +47,6 @@ public void ConfigureServices(IServiceCollection services)
4347
// (like pruning orphaned authorizations/tokens from the database) at regular intervals.
4448
services.AddQuartz(options =>
4549
{
46-
options.UseMicrosoftDependencyInjectionJobFactory();
4750
options.UseSimpleTypeLoader();
4851
options.UseInMemoryStore();
4952
});
@@ -69,8 +72,8 @@ public void ConfigureServices(IServiceCollection services)
6972
options.SetAuthorizationEndpointUris(Configuration["OpenIddict:Endpoints:Authorization"]!)
7073
.SetTokenEndpointUris(Configuration["OpenIddict:Endpoints:Token"]!)
7174
.SetIntrospectionEndpointUris(Configuration["OpenIddict:Endpoints:Introspection"]!)
72-
.SetUserinfoEndpointUris(Configuration["OpenIddict:Endpoints:Userinfo"]!)
73-
.SetLogoutEndpointUris(Configuration["OpenIddict:Endpoints:Logout"]!);
75+
.SetUserInfoEndpointUris(Configuration["OpenIddict:Endpoints:Userinfo"]!)
76+
.SetEndSessionEndpointUris(Configuration["OpenIddict:Endpoints:Logout"]!);
7477

7578
// Enable the authorization code, implicit, hybrid and the refresh token flows.
7679
options.AllowAuthorizationCodeFlow()
@@ -96,11 +99,51 @@ public void ConfigureServices(IServiceCollection services)
9699
options.UseAspNetCore()
97100
.EnableAuthorizationEndpointPassthrough()
98101
.EnableAuthorizationRequestCaching()
99-
.EnableLogoutEndpointPassthrough();
100-
101-
// Register the event handler responsible for populating userinfo responses.
102-
options.AddEventHandler<HandleUserinfoRequestContext>(options =>
103-
options.UseSingletonHandler<Handlers.PopulateUserinfo>());
102+
.EnableEndSessionEndpointPassthrough();
103+
104+
// Register the custom event handler responsible for populating userinfo responses.
105+
options.AddEventHandler<HandleUserInfoRequestContext>(options => options.UseInlineHandler(context =>
106+
{
107+
if (context.Principal.HasScope(Scopes.Profile))
108+
{
109+
context.GivenName = context.Principal.GetClaim(Claims.GivenName);
110+
context.FamilyName = context.Principal.GetClaim(Claims.FamilyName);
111+
context.BirthDate = context.Principal.GetClaim(Claims.Birthdate);
112+
context.Profile = context.Principal.GetClaim(Claims.Profile);
113+
context.PreferredUsername = context.Principal.GetClaim(Claims.PreferredUsername);
114+
context.Website = context.Principal.GetClaim(Claims.Website);
115+
116+
context.Claims[Claims.Name] = context.Principal.GetClaim(Claims.Name);
117+
context.Claims[Claims.Gender] = context.Principal.GetClaim(Claims.Gender);
118+
context.Claims[Claims.MiddleName] = context.Principal.GetClaim(Claims.MiddleName);
119+
context.Claims[Claims.Nickname] = context.Principal.GetClaim(Claims.Nickname);
120+
context.Claims[Claims.Picture] = context.Principal.GetClaim(Claims.Picture);
121+
context.Claims[Claims.Locale] = context.Principal.GetClaim(Claims.Locale);
122+
context.Claims[Claims.Zoneinfo] = context.Principal.GetClaim(Claims.Zoneinfo);
123+
context.Claims[Claims.UpdatedAt] = long.Parse(
124+
context.Principal.GetClaim(Claims.UpdatedAt)!,
125+
NumberStyles.Number, CultureInfo.InvariantCulture);
126+
}
127+
128+
if (context.Principal.HasScope(Scopes.Email))
129+
{
130+
context.Email = context.Principal.GetClaim(Claims.Email);
131+
context.EmailVerified = false;
132+
}
133+
134+
if (context.Principal.HasScope(Scopes.Phone))
135+
{
136+
context.PhoneNumber = context.Principal.GetClaim(Claims.PhoneNumber);
137+
context.PhoneNumberVerified = false;
138+
}
139+
140+
if (context.Principal.HasScope(Scopes.Address))
141+
{
142+
context.Address = JsonSerializer.Deserialize<JsonElement>(context.Principal.GetClaim(Claims.Address)!);
143+
}
144+
145+
return default;
146+
}));
104147
})
105148

106149
.AddValidation(options =>

0 commit comments

Comments
 (0)