Skip to content

Receivers

Overview

This guide sets up Britive to send its own security events to a receiver, such as a SIEM. When a mapped Britive event occurs, such as an administrator disabling a user, Britive sends a CAEP or RISC event to the receiver.

What you’ll accomplish:

  • Add the receiver in Britive and map a Britive event to a CAEP or RISC event
  • Trigger the Britive event and confirm the receiver got it

Before You Begin

  • A Britive user who can manage Shared Signals, for example through TenantAdminRole or SecurityAdminRole. See Permissions.
  • A receiver endpoint that accepts POST requests with Content-Type: application/secevent+jwt
  • For the API steps, a Britive API token for that user

How It Works

    sequenceDiagram
    participant A as Britive admin or user
    participant B as Britive
    participant R as Receiver
    A->>B: Action, for example disable a user
    B->>B: Look up receivers mapped to the Britive event
    B->>R: POST signed SET (application/secevent+jwt)
    R-->>B: 2xx response
    Note over B: Result recorded in Shared Signals > Events
  

Britive sends each event as a Security Event Token (SET) in an HTTP POST:

PartValue
MethodPOST to the Receiver URL
Content-Typeapplication/secevent+jwt
Other headersThe receiver’s custom headers, if any
BodyThe signed SET, as a compact JWT

The SET contains these claims:

ClaimValue
isshttps://<your-tenant-domain>
audThe receiver’s Receiver URL
iat, jtiWhen the SET was issued, and a unique ID
sub_id{"format": "email", "email": "<user's email>"}
eventsOne CAEP or RISC event, with event_timestamp and subject

The SET is signed with RS256, and its header has typ: secevent+jwt and a kid. To verify the signature, use the key with that kid from your tenant’s key endpoint:

https://<your-tenant-domain>/api/auth/sso/oauth2/keys

Receivers that use OpenID Connect discovery can find this endpoint from the SET’s iss. It is the jwks_uri in https://<your-tenant-domain>/.well-known/openid-configuration.

Britive sends an event only when the event’s target, such as the user, has an email address.

Limitations

  • No SSF discovery. Britive does not publish SSF discovery metadata (/.well-known/ssf-configuration). Receivers that find keys only through SSF discovery, such as caep.dev, cannot verify the signature.
  • Push delivery only. The receiver cannot create or manage a stream with Britive. An administrator adds the receiver in Britive.
  • Events carry only event_timestamp and subject. Some CAEP events require more claims. For example, Credential Change requires credential_type and change_type, and Assurance Level Change requires namespace and current_level. A receiver that enforces these requirements rejects those events. The suggested events in Britive Events need no other claims.

To verify that an event came from Britive, check the SET’s signature with the key endpoint in How It Works. If the receiver also requires HTTP authentication, or cannot use the key endpoint, add a custom header, such as Authorization: Bearer <secret>, that holds a shared secret the receiver checks. Britive sends the header with every event. It is not part of the signed SET. Custom headers can be set only through the API. See the API tab in Add the Receiver in Britive.

Britive Events

These Britive events can be sent to a receiver. Any Britive event can be mapped to any CAEP or RISC event. An event is suggested only where it matches the Britive event and needs no claims beyond those Britive sends. See Limitations.

Britive eventbritiveEventTypeSuggested event
User Disableduser.disableAccount Disabled (RISC)
User Enableduser.enableAccount Enabled (RISC)
User Deleteduser.deleteAccount Purged (RISC)
Service Identity Disabledservice.identity.disableAccount Disabled (RISC)
Service Identity Enabledservice.identity.enableAccount Enabled (RISC)
Service Identity Deletedservice.identity.deleteAccount Purged (RISC)
Password Reset by Adminadmin.reset.passwordNone
Password Changed by Useruser.self.update.passwordNone
MFA Enrolledmfa.registration.completedNone
MFA Removedmfa.registration.deletedNone
MFA Removed by Adminmfa.registration.admin.deletedNone
Force Checkin Alladmin.access.checkinNone
API Token Createdapi.token.createNone
API Token Revokedapi.token.revokeNone

Force Checkin All is sent once for each checkout that is checked in for the user by someone else: an administrator, a Shared Signals action, or Britive, for example when the user’s access to the profile is revoked. It is not sent when the user checks in or a checkout expires.

A RISC account event refers to the account its subject identifies. In events from Britive, that is the user or service identity, not a cloud account.

Delivery

  • Britive waits up to 10 seconds for the receiver to respond. Any 2xx response counts as delivered.
  • A delivery that fails or times out is retried, up to 3 attempts in total. If delivery to any receiver fails, Britive sends the event again to every receiver mapped to it. A resent event has a new jti.
  • Every delivery attempt is recorded in Events, with direction Transmitted.

Add the Receiver in Britive

Using the Britive Console

Open the Receivers tab

Click Admin → Security → Shared Signals → Receivers.

Add the receiver

Click Add, enter a name and the Receiver URL, then click Save.

Name:          SIEM
Receiver URL:  https://siem.example.com/ssf/events

Open the receiver’s mappings

Click Manage on the receiver, then click the Mappings tab.

Map a Britive event

Select the Britive event under Action and the CAEP or RISC event under Event. Click the row’s Add icon, then click Save.

Action:  User Disabled
Event:   risc-account-disabled

Verify

Trigger the Britive event

Perform the mapped action on a test user. For the example mapping, disable the user in the Britive Console, or through the API:

curl -s -X POST "https://$BRITIVE_TENANT/api/users/test.user@example.com/disabled-statuses" \
  -H "Authorization: TOKEN $BRITIVE_API_TOKEN"

Check the receiver

Confirm the receiver got a POST with a SET whose events claim contains the mapped event URI, and that the SET’s signature verifies with the key endpoint in How It Works.

Check the result in Britive

Open Admin → Security → Shared Signals → Events, filter by Transmitted, and expand the newest entry. It shows the Receiver URL, the status, and the outcome. See Events.

Troubleshoot

SymptomCauseFix
The receiver gets nothing, and nothing appears in EventsThe Britive event is not mapped for this receiver, the event’s target has no email address, or the receiver is disabledCheck the receiver’s mappings and the target’s email address. To enable the receiver, send PATCH /api/ssf/admin/receivers/{receiverId} with {"enabled": true}
The event failed, and its outcome starts with HTTP 401 or HTTP 403The receiver rejected the requestAdd the header the receiver expects through the API
The event failed with another HTTP status, or the outcome shows a timeoutThe receiver returned an error or did not respond within 10 secondsCheck the receiver’s logs and that the Receiver URL is reachable from the internet
The receiver rejects the SET signatureThe receiver looks for keys only through SSF discovery, which Britive does not publishConfigure the receiver with the key endpoint or the OpenID Connect discovery URL in How It Works
The receiver rejects the event as missing required claimsThe mapped event requires claims that Britive does not sendMap a suggested event from Britive Events
The receiver got the same event more than onceA delivery was retried. A resent event has a new jtiTreat repeats of the same event for the same subject as one event

To see an event’s outcome, expand it in Events, or read the outcome field from the API.

Next Steps

  • Events: review sent events and their results
  • Transmitters: receive events from an identity provider
Last updated on