Table of Contents

Class SamlSingleLogoutSuccessEvent

Namespace
Fdyay.IdentityServer.Events
Assembly
Fdyay.IdentityServer.Core.dll

A single logout sequence ran to the end.

public class SamlSingleLogoutSuccessEvent : Event
Inheritance
SamlSingleLogoutSuccessEvent
Inherited Members

Remarks

Sign-on had a success event and logout did not, which is note 11 inside the surface whose job is noticing things. SamlSignOnSuccessEvent has recorded this server vouching for a user since 0.51.0; the other operation recorded only its refusals. A completed single logout reached UserLogoutSuccessEvent through the shared sign-out sequence — which is true and is about the session, not about the protocol exchange. An operator asking "did the SAML logout I started actually finish" could not tell a sequence that completed from one that stalled at a hop the browser never came back from, because both leave exactly one UserLogoutSuccessEvent and nothing else.

Raised where the sequence ends rather than where the session does, and those are different moments: the session ends on the first pass, and the last participant may be several browser hops later. It is raised even when the requester cannot be told the answer, because the logout did complete — SamlLogoutNotificationFailureEvent is what records the partner left uninformed, and a partner that could not be reached must not turn "this finished" into silence. That is 0.51.0's rule for BackChannelLogoutFailureEvent, applied to the other protocol.

No count of participants notified, though it is the field somebody would ask for. Each hop is a separate request and the sequence state carries who is left rather than who has been told, so this raise site cannot fill such a member honestly — and a member holding a value its only raise site has to guess at is the defect this document catalogues, not a convenience.

Constructors

SamlSingleLogoutSuccessEvent(string, string)

A single logout sequence that ran to the end.

public SamlSingleLogoutSuccessEvent(string requesterEntityId, string subjectNameId)

Parameters

requesterEntityId string

The service provider that started the sequence.

subjectNameId string

Whose session ended, as the sequence named them.

Properties

RequesterEntityId

The service provider that started the sequence.

public string RequesterEntityId { get; }

Property Value

string

Remarks

Not nullable, and that is a claim about the paths rather than a convenience: a sequence only exists because a service provider asked for one, and the logout session carries its entity id as a required member. A local sign-out does not reach here.

SubjectNameId

Whose session ended, as the sequence named them.

public string SubjectNameId { get; }

Property Value

string