Skip to content

Sign out, and hold more than one session at once #114

Description

@iderex

Two issues on this board already depend on this and nothing builds it. #41 says
signing out removes that identity's cache entries rather than leaving them for
whoever signs in next, and its test signs in, signs out and signs in as somebody
else. #68 says an operator is told what signing out removes and what uninstalling
leaves behind. The session record in #5 decides how many sessions the core holds
at once and what moving between them means. Between the three, sign-out is
assumed by a test, promised to an operator and decided in a record, and no issue
produces it.

One device holding two servers is normal on a desktop. One server holding two
people is normal on a television in a house, and it is the case where getting
this wrong shows somebody else's library to a person who did nothing wrong.

What this produces

Holding more than one session at once, or a written refusal to, taken from #5.
If the answer is one at a time, then the act of replacing the current session is
what this issue builds and everything below still applies to it.

Sign-out that ends one session and leaves the others working, with the parts each
named rather than implied: the token dropped from memory, the secret forgotten
through the interface in #33, the cache entries removed through the keying in
#41, and anything queued for the server under that identity resolved rather than
left addressed to a session that no longer exists.

What sign-out does to work in flight. A request already sent, a decode already
running and a position report already queued each end in a named state, and none
of them completes into the session that ended.

The difference between signing out and forgetting a server, which are different
acts with different residue and get collapsed into one button by every client
that was not told they differ.

Done when

A test signs in against two servers at once and proves a call in one cannot be
answered from the other's cache or with the other's token. A test signs out of
one and proves the second is untouched and still usable. A test signs out and
proves that nothing from that identity is readable afterwards from memory, the
cache or the secret store, and that anything the queue held for it reached the
named resolution rather than being dropped in silence. Blocked on #5, #33, #37,
and on #41 for the keying the removal is expressed in.

Metadata

Metadata

Assignees

Labels

architectureShape of the core: boundaries, interfaces, contractssecurity

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions