Class BackChannelAuthenticationUserValidationContext
- Namespace
- Fdyay.IdentityServer.Validation
- Assembly
- Fdyay.IdentityServer.Core.dll
The hints a client sent to say who it wants authenticated.
public sealed class BackChannelAuthenticationUserValidationContext
- Inheritance
-
BackChannelAuthenticationUserValidationContext
- Inherited Members
Properties
BindingMessage
The binding message the client sent, when it sent one.
public string? BindingMessage { get; init; }
Property Value
Client
The client that asked.
public required Client Client { get; init; }
Property Value
IdTokenHintClaims
The claims of the id_token_hint, when the client sent one — already validated.
public IReadOnlyCollection<Claim>? IdTokenHintClaims { get; init; }
Property Value
Remarks
Unlike the other two hints this one is not an assertion the client made up: it is an identity token this
server signed and issued to this same client, so its signature, issuer, type and audience have been
checked before this is called, and its sub is a subject this server already knows. Its lifetime
is not checked — a hint says who, it does not authenticate them, and the user still answers on their own
device. What is left to the host is the same question every hint leaves: whether to act on it. The
subject returned must be the hint's own sub; a different one is refused.
LoginHint
The login_hint, when the client sent one.
public string? LoginHint { get; init; }
Property Value
Remarks
Whatever the client and this server have agreed identifies a person — a username, an email address, a customer number. It is an unauthenticated assertion by the client about who it wants to reach, which is why resolving it is the host's job and not a string comparison this library could do.
LoginHintToken
The login_hint_token, when the client sent one.
public string? LoginHintToken { get; init; }
Property Value
Remarks
Opaque here on purpose. CIBA Core leaves its format to the parties, so this server carries it across unread rather than guessing at a structure — a host that issues them knows how to read them.
RequestedScopes
The scopes the client asked for.
public required IReadOnlyCollection<string> RequestedScopes { get; init; }
Property Value
UserCode
The user_code, when the client sent one — a secret the validator must check.
public string? UserCode { get; init; }
Property Value
Remarks
Only ever set when the host has declared, with CibaOptions.UserCodeParameterSupported, that this
validator checks one; otherwise the endpoint refuses the request before it gets here. Answer
MissingUserCode(string?) for a user whose requests need
one and did not carry it, and InvalidUserCode(string?)
for a code that is not theirs. It is a secret: this server neither stores nor logs it, and a validator
should compare it in constant time.