Skip to content

Commit 00c279b

Browse files
Ticket #878 : WIP
1 parent 1eb9e93 commit 00c279b

25 files changed

Lines changed: 14591 additions & 69 deletions

File tree

src/IdServer/SimpleIdServer.IdServer.Domains/Client.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ public class Client : ITranslatable, IEquatable<Client>
2424
{
2525
[JsonPropertyName(OAuthClientParameters.Id)]
2626
public string Id { get; set; }
27-
public string ClientSecret { get; set; } = null!;
27+
[JsonIgnore]
28+
public string ClientSecret { get; set; } = "";
29+
[JsonIgnore]
2830
public DateTime? ClientSecretExpirationTime { get; set; }
2931
[JsonPropertyName(OAuthClientParameters.Source)]
3032
public string? Source { get; set; }
@@ -615,7 +617,7 @@ public ClientSecret PlainSecret
615617
{
616618
get
617619
{
618-
return Secrets.SingleOrDefault(s => s.Alg == HashAlgs.PLAINTEXT && !s.IsExpired);
620+
return Secrets.SingleOrDefault(s => s.Alg == HashAlgs.PLAINTEXT && !s.IsInactive);
619621
}
620622
}
621623

@@ -738,6 +740,12 @@ public JsonObject Serialize(string baseUrl)
738740
{
739741
var result = JsonSerializer.SerializeToNode(this).AsObject();
740742
result.Add(OAuthClientParameters.RegistrationClientUri, $"{baseUrl}/{ClientId}");
743+
var plainSecret = Secrets.SingleOrDefault(s => s.Alg == HashAlgs.PLAINTEXT && !s.IsInactive);
744+
if(plainSecret != null)
745+
{
746+
result.Add(OAuthClientParameters.ClientSecret, plainSecret.Value);
747+
}
748+
741749
return result;
742750
}
743751
}

src/IdServer/SimpleIdServer.IdServer.Domains/ClientSecret.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// Copyright (c) SimpleIdServer. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
3+
using SimpleIdServer.IdServer.Domains.DTOs;
34
using System.Security.Cryptography;
45
using System.Text;
6+
using System.Text.Json.Serialization;
57

68
namespace SimpleIdServer.IdServer.Domains;
79

@@ -26,42 +28,56 @@ public class ClientSecret
2628
(HashAlgs.PLAINTEXT, (string pwd) => pwd)
2729
};
2830

31+
[JsonPropertyName(ClientSecretNames.Id)]
2932
public string Id
3033
{
3134
get; set;
3235
}
3336

37+
[JsonPropertyName(ClientSecretNames.Value)]
3438
public string Value
3539
{
3640
get; set;
3741
}
3842

43+
[JsonPropertyName(ClientSecretNames.Alg)]
3944
public HashAlgs Alg
4045
{
4146
get; set;
4247
}
4348

49+
[JsonPropertyName(ClientSecretNames.ExpirationDateTime)]
4450
public DateTime? ExpirationDateTime
4551
{
4652
get; set;
4753
}
4854

55+
[JsonPropertyName(ClientSecretNames.CreateDateTime)]
4956
public DateTime CreateDateTime
5057
{
5158
get; set;
5259
}
5360

61+
[JsonPropertyName(ClientSecretNames.IsActive)]
5462
public bool IsActive
5563
{
5664
get; set;
5765
} = true;
5866

67+
public bool IsInactive
68+
{
69+
get
70+
{
71+
return !IsActive || IsExpired;
72+
}
73+
}
74+
5975
public bool IsExpired
6076
{
6177
get
6278
{
6379
if (ExpirationDateTime.HasValue == false) return false;
64-
return ExpirationDateTime.Value < DateTime.UtcNow && IsActive;
80+
return ExpirationDateTime.Value < DateTime.UtcNow;
6581
}
6682
}
6783

src/IdServer/SimpleIdServer.IdServer.Domains/DTOs/ClientSecretNames.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ public class ClientSecretNames
1010
public const string Alg = "alg";
1111
public const string Value = "value";
1212
public const string Id = "id";
13+
public const string ExpirationDateTime = "expiration_date_time";
14+
public const string CreateDateTime = "create_date_time";
15+
public const string IsActive = "is_active";
1316
}

src/IdServer/SimpleIdServer.IdServer.Domains/DTOs/OAuthClientParameters.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class OAuthClientParameters
88
public const string IsPublic = "is_public";
99
public const string ClientId = "client_id";
1010
public const string ClientType = "client_type";
11+
public const string ClientSecret = "client_secret";
1112
public const string ClientSecrets = "client_secrets";
1213
public const string ClientIdIssuedAt = "client_id_issued_at";
1314
public const string RegistrationAccessToken = "registration_access_token";

0 commit comments

Comments
 (0)