Skip to content

SecurityPrincipal

Nill edited this page Dec 29, 2021 · 1 revision

A security principal is any construct that can be used as the source of a security decision; typically this involves users and groups, but also involves well-known security principals.

Security principals implement the ISecurityPrincipal interface which looks like this:

Member Type Description
DisplayText string Text used for display purposes (e.g. "@nillkitty")
StorageText string The internal data used to uniquely identify the principal
Matches(Context) bool Whether the active user of the Context matches the principal or not
MatchesUser(User) bool Whether the user specified matches the principal or not
Equals(ISecurityPrincipal) bool Whether the security principal referenced is essentially identical to this one or not.

Concrete Implementations

Type Details
Telefrag.Telegram.BotAPI.User Matches the only the user in question
Telefrag.Security.Group Matches any user in the group
Telefrag.Security.WellKnownPrincipal Matches select users based on the WKP involved (e.g. "Anonymous" matches only anonymous users).

Well-Known Principals

Just as in Windows, Telefrag has the concept of a Well-known security principal, which is a generic pre-defined identifier that matches some subset of user contexts.

The predefined well known principals are:

Name Matches
Everyone All contexts
Nobody No contexts
Authenticated Contexts with an authenticated user
Anonymous Contexts without an authenticated user
Telegram Contexts associated with a Telegram update
Private Contexts associated with a Telegram private chat
GroupChat Contexts associated with a Telegram group chat
Channel Contexts associated with a Telegram channel
Clone this wiki locally