mirror of
https://github.com/bitwarden/server.git
synced 2025-04-05 05:00:19 -05:00
[SM-823] ApiKey table follow up (#3183)
* dbo_future -> dbo * DbScripts_future -> DbScripts * Remove deprecated property * Move data_migration -> DbScripts
This commit is contained in:
parent
776e454b79
commit
b1725115e3
@ -4,8 +4,6 @@ namespace Bit.Core.SecretsManager.Models.Data;
|
|||||||
|
|
||||||
public class ApiKeyDetails : ApiKey
|
public class ApiKeyDetails : ApiKey
|
||||||
{
|
{
|
||||||
public string ClientSecret { get; set; } // Deprecated as of 2023-05-17
|
|
||||||
|
|
||||||
protected ApiKeyDetails() { }
|
protected ApiKeyDetails() { }
|
||||||
|
|
||||||
protected ApiKeyDetails(ApiKey apiKey)
|
protected ApiKeyDetails(ApiKey apiKey)
|
||||||
|
@ -107,11 +107,6 @@ public class ClientStore : IClientStore
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(apiKey.ClientSecretHash))
|
|
||||||
{
|
|
||||||
apiKey.ClientSecretHash = apiKey.ClientSecret.Sha256();
|
|
||||||
}
|
|
||||||
|
|
||||||
var client = new Client
|
var client = new Client
|
||||||
{
|
{
|
||||||
ClientId = clientId,
|
ClientId = clientId,
|
||||||
|
@ -2,8 +2,7 @@ CREATE PROCEDURE [dbo].[ApiKey_Create]
|
|||||||
@Id UNIQUEIDENTIFIER OUTPUT,
|
@Id UNIQUEIDENTIFIER OUTPUT,
|
||||||
@ServiceAccountId UNIQUEIDENTIFIER,
|
@ServiceAccountId UNIQUEIDENTIFIER,
|
||||||
@Name VARCHAR(200),
|
@Name VARCHAR(200),
|
||||||
@ClientSecret VARCHAR(30) = 'migrated', -- Deprecated as of 2023-05-17
|
@ClientSecretHash VARCHAR(128),
|
||||||
@ClientSecretHash VARCHAR(128) = NULL,
|
|
||||||
@Scope NVARCHAR(4000),
|
@Scope NVARCHAR(4000),
|
||||||
@EncryptedPayload NVARCHAR(4000),
|
@EncryptedPayload NVARCHAR(4000),
|
||||||
@Key VARCHAR(MAX),
|
@Key VARCHAR(MAX),
|
||||||
@ -14,18 +13,11 @@ AS
|
|||||||
BEGIN
|
BEGIN
|
||||||
SET NOCOUNT ON
|
SET NOCOUNT ON
|
||||||
|
|
||||||
IF (@ClientSecretHash IS NULL)
|
INSERT INTO [dbo].[ApiKey]
|
||||||
BEGIN
|
|
||||||
DECLARE @hb VARBINARY(128) = HASHBYTES('SHA2_256', @ClientSecret);
|
|
||||||
SET @ClientSecretHash = CAST(N'' as xml).value('xs:base64Binary(sql:variable("@hb"))', 'VARCHAR(128)');
|
|
||||||
END
|
|
||||||
|
|
||||||
INSERT INTO [dbo].[ApiKey]
|
|
||||||
(
|
(
|
||||||
[Id],
|
[Id],
|
||||||
[ServiceAccountId],
|
[ServiceAccountId],
|
||||||
[Name],
|
[Name],
|
||||||
[ClientSecret],
|
|
||||||
[ClientSecretHash],
|
[ClientSecretHash],
|
||||||
[Scope],
|
[Scope],
|
||||||
[EncryptedPayload],
|
[EncryptedPayload],
|
||||||
@ -34,12 +26,11 @@ BEGIN
|
|||||||
[CreationDate],
|
[CreationDate],
|
||||||
[RevisionDate]
|
[RevisionDate]
|
||||||
)
|
)
|
||||||
VALUES
|
VALUES
|
||||||
(
|
(
|
||||||
@Id,
|
@Id,
|
||||||
@ServiceAccountId,
|
@ServiceAccountId,
|
||||||
@Name,
|
@Name,
|
||||||
@ClientSecret,
|
|
||||||
@ClientSecretHash,
|
@ClientSecretHash,
|
||||||
@Scope,
|
@Scope,
|
||||||
@EncryptedPayload,
|
@EncryptedPayload,
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
[Id] UNIQUEIDENTIFIER,
|
[Id] UNIQUEIDENTIFIER,
|
||||||
[ServiceAccountId] UNIQUEIDENTIFIER NULL,
|
[ServiceAccountId] UNIQUEIDENTIFIER NULL,
|
||||||
[Name] VARCHAR(200) NOT NULL,
|
[Name] VARCHAR(200) NOT NULL,
|
||||||
[ClientSecret] VARCHAR(30) NOT NULL,
|
|
||||||
[ClientSecretHash] VARCHAR(128) NULL,
|
[ClientSecretHash] VARCHAR(128) NULL,
|
||||||
[Scope] NVARCHAR (4000) NOT NULL,
|
[Scope] NVARCHAR (4000) NOT NULL,
|
||||||
[EncryptedPayload] NVARCHAR (4000) NOT NULL,
|
[EncryptedPayload] NVARCHAR (4000) NOT NULL,
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
CREATE PROCEDURE [dbo].[ApiKey_Create]
|
|
||||||
@Id UNIQUEIDENTIFIER OUTPUT,
|
|
||||||
@ServiceAccountId UNIQUEIDENTIFIER,
|
|
||||||
@Name VARCHAR(200),
|
|
||||||
@ClientSecretHash VARCHAR(128),
|
|
||||||
@Scope NVARCHAR(4000),
|
|
||||||
@EncryptedPayload NVARCHAR(4000),
|
|
||||||
@Key VARCHAR(MAX),
|
|
||||||
@ExpireAt DATETIME2(7),
|
|
||||||
@CreationDate DATETIME2(7),
|
|
||||||
@RevisionDate DATETIME2(7)
|
|
||||||
AS
|
|
||||||
BEGIN
|
|
||||||
SET NOCOUNT ON
|
|
||||||
|
|
||||||
INSERT INTO [dbo].[ApiKey]
|
|
||||||
(
|
|
||||||
[Id],
|
|
||||||
[ServiceAccountId],
|
|
||||||
[Name],
|
|
||||||
[ClientSecretHash],
|
|
||||||
[Scope],
|
|
||||||
[EncryptedPayload],
|
|
||||||
[Key],
|
|
||||||
[ExpireAt],
|
|
||||||
[CreationDate],
|
|
||||||
[RevisionDate]
|
|
||||||
)
|
|
||||||
VALUES
|
|
||||||
(
|
|
||||||
@Id,
|
|
||||||
@ServiceAccountId,
|
|
||||||
@Name,
|
|
||||||
@ClientSecretHash,
|
|
||||||
@Scope,
|
|
||||||
@EncryptedPayload,
|
|
||||||
@Key,
|
|
||||||
@ExpireAt,
|
|
||||||
@CreationDate,
|
|
||||||
@RevisionDate
|
|
||||||
)
|
|
||||||
END
|
|
@ -1,18 +0,0 @@
|
|||||||
CREATE TABLE [dbo].[ApiKey] (
|
|
||||||
[Id] UNIQUEIDENTIFIER,
|
|
||||||
[ServiceAccountId] UNIQUEIDENTIFIER NULL,
|
|
||||||
[Name] VARCHAR(200) NOT NULL,
|
|
||||||
[ClientSecretHash] VARCHAR(128) NULL,
|
|
||||||
[Scope] NVARCHAR (4000) NOT NULL,
|
|
||||||
[EncryptedPayload] NVARCHAR (4000) NOT NULL,
|
|
||||||
[Key] VARCHAR (MAX) NOT NULL,
|
|
||||||
[ExpireAt] DATETIME2(7) NULL,
|
|
||||||
[CreationDate] DATETIME2(7) NOT NULL,
|
|
||||||
[RevisionDate] DATETIME2(7) NOT NULL,
|
|
||||||
CONSTRAINT [PK_ApiKey] PRIMARY KEY CLUSTERED ([Id] ASC),
|
|
||||||
CONSTRAINT [FK_ApiKey_ServiceAccountId] FOREIGN KEY ([ServiceAccountId]) REFERENCES [dbo].[ServiceAccount] ([Id])
|
|
||||||
);
|
|
||||||
|
|
||||||
GO
|
|
||||||
CREATE NONCLUSTERED INDEX [IX_ApiKey_ServiceAccountId]
|
|
||||||
ON [dbo].[ApiKey]([ServiceAccountId] ASC);
|
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
This is the data migration script for the client secret hash updates.
|
This is the data migration script for the client secret hash updates.
|
||||||
The initial migration util/Migrator/DbScripts/2023-05-16_00_ClientSecretHash.sql should be run prior.
|
The initial migration util/Migrator/DbScripts/2023-05-16_00_ClientSecretHash.sql should be run prior.
|
||||||
The final migration is in util/Migrator/DbScripts_future/2023-06-FutureMigration.sql.
|
The final migration is in util/Migrator/DbScripts/2023-08-10_01_RemoveClientSecret
|
||||||
*/
|
*/
|
||||||
IF COL_LENGTH('[dbo].[ApiKey]', 'ClientSecretHash') IS NOT NULL AND COL_LENGTH('[dbo].[ApiKey]', 'ClientSecret') IS NOT NULL
|
IF COL_LENGTH('[dbo].[ApiKey]', 'ClientSecretHash') IS NOT NULL AND COL_LENGTH('[dbo].[ApiKey]', 'ClientSecret') IS NOT NULL
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -9,7 +9,7 @@ BEGIN
|
|||||||
-- Add index
|
-- Add index
|
||||||
IF NOT EXISTS(SELECT name FROM sys.indexes WHERE name = 'IX_ApiKey_ClientSecretHash')
|
IF NOT EXISTS(SELECT name FROM sys.indexes WHERE name = 'IX_ApiKey_ClientSecretHash')
|
||||||
BEGIN
|
BEGIN
|
||||||
CREATE NONCLUSTERED INDEX [IX_ApiKey_ClientSecretHash]
|
CREATE NONCLUSTERED INDEX [IX_ApiKey_ClientSecretHash]
|
||||||
ON [dbo].[ApiKey]([ClientSecretHash] ASC)
|
ON [dbo].[ApiKey]([ClientSecretHash] ASC)
|
||||||
WITH (ONLINE = ON)
|
WITH (ONLINE = ON)
|
||||||
END
|
END
|
||||||
@ -30,7 +30,7 @@ BEGIN
|
|||||||
WHERE [ClientSecretHash] IS NULL
|
WHERE [ClientSecretHash] IS NULL
|
||||||
|
|
||||||
SET @BatchSize = @@ROWCOUNT
|
SET @BatchSize = @@ROWCOUNT
|
||||||
|
|
||||||
COMMIT TRANSACTION Migrate_ClientSecretHash
|
COMMIT TRANSACTION Migrate_ClientSecretHash
|
||||||
END
|
END
|
||||||
|
|
@ -36,7 +36,7 @@ AS
|
|||||||
BEGIN
|
BEGIN
|
||||||
SET NOCOUNT ON
|
SET NOCOUNT ON
|
||||||
|
|
||||||
INSERT INTO [dbo].[ApiKey]
|
INSERT INTO [dbo].[ApiKey]
|
||||||
(
|
(
|
||||||
[Id],
|
[Id],
|
||||||
[ServiceAccountId],
|
[ServiceAccountId],
|
||||||
@ -49,7 +49,7 @@ BEGIN
|
|||||||
[CreationDate],
|
[CreationDate],
|
||||||
[RevisionDate]
|
[RevisionDate]
|
||||||
)
|
)
|
||||||
VALUES
|
VALUES
|
||||||
(
|
(
|
||||||
@Id,
|
@Id,
|
||||||
@ServiceAccountId,
|
@ServiceAccountId,
|
Loading…
x
Reference in New Issue
Block a user