Notify Security Notes

Holds NR2, NR6, and NR7 artefacts: tenant/RBAC approval matrix, webhook/ack hardening policy (HMAC/mTLS/DPoP + signed acks), and redaction/PII catalog with sanitized fixture samples.

Authority OAuth wiring (Sprint 20260513_015)

Notify.WebService validates Authority-issued OAuth tokens via the shared AddStellaOpsResourceServerAuthentication pipeline (see src/Notify/StellaOps.Notify.WebService/Program.cs:412-457).

Smoke recipe

TOKEN=$(curl -sk -X POST http://authority.stella-ops.local/connect/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=stellaops-notify\
&client_secret=<from .env>&scope=notify.viewer" \
  | jq -r .access_token)

# 200 -- token validated, scope ok
curl -sk -H "Authorization: Bearer $TOKEN" -H "X-StellaOps-TenantId: default" \
  http://notify.stella-ops.local/api/v1/notify/channels

# 401 -- no anonymous fallback
curl -sk -H "X-StellaOps-TenantId: default" \
  http://notify.stella-ops.local/api/v1/notify/channels