Class ScimUserDirectory
- Namespace
- Kuestenlogik.Bowire.Scim
- Assembly
- Kuestenlogik.Bowire.Scim.dll
Answers "who is this, and do they administer the install" from the provisioned directory (#98, on top of #96).
public sealed class ScimUserDirectory : IBowireUserDirectory
- Inheritance
-
ScimUserDirectory
- Implements
- Inherited Members
Remarks
The token knows what the person authenticated with; the directory knows what their organisation says about them. This takes the token first for anything the person would recognise as their own — a name is fresher in a token than in a record synced overnight — and the directory for the one thing a token cannot be trusted to carry here: whether they are an administrator.
That distinction is the point. A role claim in a token is only as good as the mapping that produced it, and Bowire has no way to check that mapping; group membership in the provisioned directory is something the operator configured deliberately and can audit.
Constructors
ScimUserDirectory(BowireScimStore, BowireScimOptions)
Answers "who is this, and do they administer the install" from the provisioned directory (#98, on top of #96).
public ScimUserDirectory(BowireScimStore store, BowireScimOptions options)
Parameters
storeBowireScimStoreoptionsBowireScimOptions
Remarks
The token knows what the person authenticated with; the directory knows what their organisation says about them. This takes the token first for anything the person would recognise as their own — a name is fresher in a token than in a record synced overnight — and the directory for the one thing a token cannot be trusted to carry here: whether they are an administrator.
That distinction is the point. A role claim in a token is only as good as the mapping that produced it, and Bowire has no way to check that mapping; group membership in the provisioned directory is something the operator configured deliberately and can audit.
Methods
Describe(ClaimsPrincipal?, string)
Describe the caller. principal is the token,
subject the value their storage is keyed on.
public BowireUserProfile Describe(ClaimsPrincipal? principal, string subject)
Parameters
principalClaimsPrincipalsubjectstring
Returns
Search(string?, int)
Identities matching term, for a picker.
public IReadOnlyList<BowireUserProfile> Search(string? term, int limit)
Parameters
Returns
Remarks
Empty when nothing in this install knows who else exists — which is the honest answer, and the one that keeps a picker from offering a list it made up.