Class TokenIssuedSuccessEvent
- Namespace
- Fdyay.IdentityServer.Events
- Assembly
- Fdyay.IdentityServer.Core.dll
Tokens were issued, from the token endpoint or, for a code, the authorize endpoint.
public class TokenIssuedSuccessEvent : Event
- Inheritance
-
TokenIssuedSuccessEvent
- Inherited Members
Remarks
The tokens themselves are deliberately absent. An event carrying an access token is a credential in whatever the host forwards events to, and every question this event exists to answer — who got what, for which client, under which grant — is answerable without it. Tokens is Duende's member with each token's type and its TokenFingerprint in place of its value (the decision of 2026-10-13).
Constructors
TokenIssuedSuccessEvent(string, string?, string, IEnumerable<string>)
Tokens issued to a client. Endpoint starts as Token.
public TokenIssuedSuccessEvent(string clientId, string? subjectId, string grantType, IEnumerable<string> scopes)
Parameters
clientIdstringThe client the tokens were issued to.
subjectIdstringThe user they were issued for, or null where there is none.
grantTypestringThe grant they were issued under.
scopesIEnumerable<string>The scopes they carry.
Properties
ClientId
The client the tokens were issued to.
public string ClientId { get; }
Property Value
ClientName
The client's display name, where it has one. Duende's.
public string? ClientName { get; set; }
Property Value
Endpoint
The endpoint the tokens came from: Token or Authorize, as Duende names them, or
BackchannelAuthentication for a CIBA push delivery, which no endpoint answers.
public string? Endpoint { get; set; }
Property Value
GrantType
The grant the tokens were issued under, such as authorization_code or refresh_token.
public string GrantType { get; }
Property Value
RedirectUri
The redirect URI the authorize endpoint answered; null from every other endpoint. Duende's.
public string? RedirectUri { get; set; }
Property Value
Scopes
The scopes the tokens carry.
public IReadOnlyCollection<string> Scopes { get; }
Property Value
SubjectId
Null for client_credentials, where there is no user.
public string? SubjectId { get; }
Property Value
Tokens
Each token issued, as its type and fingerprint — never its value. Duende's member and shape.
public IEnumerable<TokenIssuedSuccessEvent.Token> Tokens { get; set; }
Property Value
Remarks
Duende 8.0.1 fills it, from the token endpoint, with id_token, refresh_token and access_token
in that order, whichever were issued, and with their values; from the authorize endpoint, with the code. Here the order and types are Duende's and each
TokenValue is a TokenFingerprint: a token in an event sink is a credential in a
log, and there is no option that puts one there.