Class ScimUser

Namespace
Kuestenlogik.Bowire.Scim
Assembly
Kuestenlogik.Bowire.Scim.dll

A provisioned identity (RFC 7643 §4.1).

public sealed class ScimUser
Inheritance
ScimUser
Inherited Members

Remarks

The subset an IdP actually sends, kept deliberately narrow. Every attribute here has a consumer: UserName and ExternalId are how a token gets matched to a record, Active is what deprovisioning flips, and the rest is what a connector reads back to decide the round-trip succeeded.

Attributes outside this set are preserved in Extensions rather than dropped. A connector that sends the Enterprise User extension and reads back a record without it treats the provisioning as failed, and inventing a field for every mapping an operator might configure is not a thing that finishes.

Constructors

ScimUser()

public ScimUser()

Properties

Active

Whether the identity may use Bowire. This is the attribute deprovisioning flips, and the one thing that has to be enforced rather than merely recorded.

[JsonPropertyName("active")]
public bool Active { get; set; }

Property Value

bool

DisplayName

Name to show in a UI.

[JsonPropertyName("displayName")]
public string? DisplayName { get; set; }

Property Value

string

Emails

E-mail addresses.

[JsonPropertyName("emails")]
public List<ScimValue> Emails { get; init; }

Property Value

List<ScimValue>

Extensions

Everything the connector sent that this implementation does not model, kept verbatim so it survives a round-trip.

[JsonExtensionData]
public Dictionary<string, JsonElement> Extensions { get; init; }

Property Value

Dictionary<string, JsonElement>

ExternalId

The IdP's own identifier for this person.

[JsonPropertyName("externalId")]
public string? ExternalId { get; set; }

Property Value

string

Groups

Groups this user belongs to. Read-only per RFC 7643 §4.1.2.

[JsonPropertyName("groups")]
public List<ScimValue> Groups { get; init; }

Property Value

List<ScimValue>

Id

Server-assigned, immutable, opaque.

[JsonPropertyName("id")]
public string Id { get; set; }

Property Value

string

Meta

Resource metadata.

[JsonPropertyName("meta")]
public ScimMeta Meta { get; set; }

Property Value

ScimMeta

Name

Structured name.

[JsonPropertyName("name")]
public ScimName? Name { get; set; }

Property Value

ScimName

Schemas

Schema URNs this resource conforms to.

[JsonPropertyName("schemas")]
public List<string> Schemas { get; init; }

Property Value

List<string>

UserName

The login name. Unique across the service provider, case-insensitively.

[JsonPropertyName("userName")]
public string UserName { get; set; }

Property Value

string