JWT Claims

JWT Claims

“iss” (issuer)  发行人

“sub” (subject)  主题

“aud” (audience) 接收方 用户

“exp” (expiration time) 到期时间

“nbf” (not before)  在此之前不可用

“iat” (issued at)  jwt的签发时间

“jti” (JWT ID)  jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/// <summary>
///   JSON Web Token (JWT) claims set.
/// </summary>
TJWTClaims = class(TJOSEBase)
private
  const AUDIENCE_SEPARATOR = ',';
private
  function GetAudience: string;
  function GetExpiration: TDateTime;
  function GetIssuedAt: TDateTime;
  function GetIssuer: string;
  function GetJWTId: string;
  function GetNotBefore: TDateTime;
  function GetSubject: string;
  procedure SetAudience(Value: string);
  procedure SetExpiration(Value: TDateTime);
  procedure SetIssuedAt(Value: TDateTime);
  procedure SetIssuer(Value: string);
  procedure SetJWTId(Value: string);
  procedure SetNotBefore(Value: TDateTime);
  procedure SetSubject(Value: string);
 
  function GetHasAudience: Boolean;
  function GetHasExpiration: Boolean;
  function GetHasIssuedAt: Boolean;
  function GetHasIssuer: Boolean;
  function GetHasJWTId: Boolean;
  function GetHasNotBefore: Boolean;
  function GetHasSubject: Boolean;
 
  function ClaimExists(const AClaimName: string): Boolean;
  function GetAudienceArray: TArray<string>;
  procedure SetAudienceArray(const Value: TArray<string>);
public
  constructor Create; virtual;
  procedure SetClaimOfType<T>(const AName: string; const AValue: T);
  function GenerateJWTId(ANumberOfBytes: Integer = 16): string;
 
  property Audience: string read GetAudience write SetAudience;
  property AudienceArray: TArray<string> read GetAudienceArray write SetAudienceArray;
  property HasAudience: Boolean read GetHasAudience;
  property Expiration: TDateTime read GetExpiration write SetExpiration;
  property HasExpiration: Boolean read GetHasExpiration;
  property IssuedAt: TDateTime read GetIssuedAt write SetIssuedAt;
  property HasIssuedAt: Boolean read GetHasIssuedAt;
  property Issuer: string read GetIssuer write SetIssuer;
  property HasIssuer: Boolean read GetHasIssuer;
  property JWTId: string read GetJWTId write SetJWTId;
  property HasJWTId: Boolean read GetHasJWTId;
  property NotBefore: TDateTime read GetNotBefore write SetNotBefore;
  property HasNotBefore: Boolean read GetHasNotBefore;
  property Subject: string read GetSubject write SetSubject;
  property HasSubject: Boolean read GetHasSubject;
end;

  

 

posted @   delphi中间件  阅读(6002)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示