Skip to content

Commit

Permalink
[PM-5294][deps]: Update Duende.IdentityServer to v6.3.7 (#3499)
Browse files Browse the repository at this point in the history
* [deps]: Update Duende.IdentityServer to v6.3.6

* Fix test

* Grant table changes

* Reassert view

* EF migrations

* Restore non-null key and simpler index

* Master SQL sync

* Lint

* Fix ID setting since the property isn't exposed

* Bump to .7

* Point to new Duende package

* Drop unused indexes first

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Matt Bishop <[email protected]>
  • Loading branch information
renovate[bot] and withinfocus authored Dec 28, 2023
1 parent de30749 commit bfa9269
Show file tree
Hide file tree
Showing 18 changed files with 7,565 additions and 48 deletions.
3 changes: 1 addition & 2 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@
"Azure.Storage.Blobs",
"Azure.Storage.Queues",
"Fido2.AspNet",
"IdentityServer4",
"IdentityServer4.AccessTokenValidation",
"Duende.IdentityServer",
"Microsoft.Azure.Cosmos",
"Microsoft.Azure.Cosmos.Table",
"Microsoft.Extensions.Caching.StackExchangeRedis",
Expand Down
20 changes: 11 additions & 9 deletions src/Core/Auth/Entities/Grant.cs
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
using System.ComponentModel.DataAnnotations;
#nullable enable
using System.ComponentModel.DataAnnotations;

namespace Bit.Core.Auth.Entities;

public class Grant
{
public int Id { get; set; }
[MaxLength(200)]
public string Key { get; set; }
public string Key { get; set; } = null!;
[MaxLength(50)]
public string Type { get; set; }
public string Type { get; set; } = null!;
[MaxLength(200)]
public string SubjectId { get; set; }
public string? SubjectId { get; set; }
[MaxLength(100)]
public string SessionId { get; set; }
public string? SessionId { get; set; }
[MaxLength(200)]
public string ClientId { get; set; }
public string ClientId { get; set; } = null!;
[MaxLength(200)]
public string Description { get; set; }
public DateTime CreationDate { get; set; }
public string? Description { get; set; }
public DateTime CreationDate { get; set; } = DateTime.UtcNow;
public DateTime? ExpirationDate { get; set; }
public DateTime? ConsumedDate { get; set; }
public string Data { get; set; }
public string Data { get; set; } = null!;
}
2 changes: 1 addition & 1 deletion src/Core/Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
<PackageReference Include="Serilog.Extensions.Logging.File" Version="3.0.0" />
<PackageReference Include="Sentry.Serilog" Version="3.41.3" />
<PackageReference Include="Duende.IdentityServer" Version="6.0.4" />
<PackageReference Include="Duende.IdentityServer" Version="6.3.7" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Serilog.Sinks.AzureCosmosDB" Version="2.0.0" />
<PackageReference Include="Serilog.Sinks.SyslogMessages" Version="2.0.9" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Bit.Infrastructure.EntityFramework.Auth.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace Bit.Infrastructure.EntityFramework.Auth.Configurations;

public class GrantEntityTypeConfiguration : IEntityTypeConfiguration<Grant>
{
public void Configure(EntityTypeBuilder<Grant> builder)
{
builder
.HasKey(s => s.Id)
.IsClustered();

builder
.HasIndex(s => s.Key)
.IsUnique(true);

builder.ToTable(nameof(Grant));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public async Task SaveAsync(Core.Auth.Entities.Grant obj)
select g).FirstOrDefaultAsync();
if (existingGrant != null)
{
obj.Id = existingGrant.Id;
dbContext.Entry(existingGrant).CurrentValues.SetValues(obj);
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ protected override void OnModelCreating(ModelBuilder builder)
var eEmergencyAccess = builder.Entity<EmergencyAccess>();
var eEvent = builder.Entity<Event>();
var eFolder = builder.Entity<Folder>();
var eGrant = builder.Entity<Grant>();
var eGroup = builder.Entity<Group>();
var eGroupUser = builder.Entity<GroupUser>();
var eInstallation = builder.Entity<Installation>();
Expand Down Expand Up @@ -134,7 +133,6 @@ protected override void OnModelCreating(ModelBuilder builder)
eCollectionCipher.HasKey(cc => new { cc.CollectionId, cc.CipherId });
eCollectionUser.HasKey(cu => new { cu.CollectionId, cu.OrganizationUserId });
eCollectionGroup.HasKey(cg => new { cg.CollectionId, cg.GroupId });
eGrant.HasKey(x => x.Key);
eGroupUser.HasKey(gu => new { gu.GroupId, gu.OrganizationUserId });

var dataProtector = this.GetService<DP.IDataProtectionProvider>().CreateProtector(
Expand All @@ -161,7 +159,6 @@ protected override void OnModelCreating(ModelBuilder builder)
eEmergencyAccess.ToTable(nameof(EmergencyAccess));
eEvent.ToTable(nameof(Event));
eFolder.ToTable(nameof(Folder));
eGrant.ToTable(nameof(Grant));
eGroup.ToTable(nameof(Group));
eGroupUser.ToTable(nameof(GroupUser));
eInstallation.ToTable(nameof(Installation));
Expand Down
38 changes: 18 additions & 20 deletions src/Sql/Auth/dbo/Tables/Grant.sql
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
CREATE TABLE [dbo].[Grant] (
[Key] NVARCHAR (200) NOT NULL,
[Type] NVARCHAR (50) NOT NULL,
[SubjectId] NVARCHAR (200) NULL,
[SessionId] NVARCHAR (100) NULL,
[ClientId] NVARCHAR (200) NOT NULL,
[Description] NVARCHAR (200) NULL,
[CreationDate] DATETIME2 (7) NOT NULL,
[ExpirationDate] DATETIME2 (7) NULL,
[ConsumedDate] DATETIME2 (7) NULL,
[Data] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_Grant] PRIMARY KEY CLUSTERED ([Key] ASC)
CREATE TABLE [dbo].[Grant]
(
[Id] INT NOT NULL IDENTITY,
[Key] NVARCHAR (200) NOT NULL,
[Type] NVARCHAR (50) NOT NULL,
[SubjectId] NVARCHAR (200) NULL,
[SessionId] NVARCHAR (100) NULL,
[ClientId] NVARCHAR (200) NOT NULL,
[Description] NVARCHAR (200) NULL,
[CreationDate] DATETIME2 (7) NOT NULL,
[ExpirationDate] DATETIME2 (7) NULL,
[ConsumedDate] DATETIME2 (7) NULL,
[Data] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_Grant] PRIMARY KEY CLUSTERED ([Id] ASC)
);


GO
CREATE NONCLUSTERED INDEX [IX_Grant_SubjectId_ClientId_Type]
ON [dbo].[Grant]([SubjectId] ASC, [ClientId] ASC, [Type] ASC);

GO
CREATE NONCLUSTERED INDEX [IX_Grant_SubjectId_SessionId_Type]
ON [dbo].[Grant]([SubjectId] ASC, [SessionId] ASC, [Type] ASC);

GO
CREATE NONCLUSTERED INDEX [IX_Grant_ExpirationDate]
ON [dbo].[Grant]([ExpirationDate] ASC);

GO

CREATE UNIQUE INDEX [IX_Grant_Key]
ON [dbo].[Grant]([Key]);
14 changes: 13 additions & 1 deletion test/Identity.IntegrationTest/openid-configuration.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,19 @@
"HS384",
"HS512"
],
"prompt_values_supported": ["none", "login", "consent", "select_account"],
"authorization_response_iss_parameter_supported": true,
"backchannel_token_delivery_modes_supported": ["poll"],
"backchannel_user_code_parameter_supported": true
"backchannel_user_code_parameter_supported": true,
"dpop_signing_alg_values_supported": [
"RS256",
"RS384",
"RS512",
"PS256",
"PS384",
"PS512",
"ES256",
"ES384",
"ES512"
]
}
47 changes: 47 additions & 0 deletions util/Migrator/DbScripts/2023-12-04_00_GrantIndexes.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
IF EXISTS(SELECT name
FROM sys.indexes
WHERE name = 'IX_Grant_SubjectId_ClientId_Type')
BEGIN
DROP INDEX [IX_Grant_SubjectId_ClientId_Type] ON [dbo].[Grant]
END
GO

IF EXISTS(SELECT name
FROM sys.indexes
WHERE name = 'IX_Grant_SubjectId_SessionId_Type')
BEGIN
DROP INDEX [IX_Grant_SubjectId_SessionId_Type] ON [dbo].[Grant]
END
GO

IF COL_LENGTH('[dbo].[Grant]', 'Id') IS NULL
BEGIN
ALTER TABLE [dbo].[Grant]
ADD [Id] INT NOT NULL IDENTITY

ALTER TABLE [dbo].[Grant]
DROP CONSTRAINT [PK_Grant];

ALTER TABLE [dbo].[Grant]
ADD CONSTRAINT [PK_Grant] PRIMARY KEY CLUSTERED ([Id] ASC);

CREATE UNIQUE INDEX [IX_Grant_Key]
ON [dbo].[Grant]([Key]);
END
GO

IF EXISTS(SELECT *
FROM sys.views
WHERE [Name] = 'GrantView')
BEGIN
DROP VIEW [dbo].[GrantView];
END
GO

CREATE VIEW [dbo].[GrantView]
AS
SELECT
*
FROM
[dbo].[Grant]
GO
Loading

0 comments on commit bfa9269

Please sign in to comment.