Zustand
Implementiert und lokal verifiziert. Die echteIdP-Round-Trip-Verifizierung (JWKS-Abruf, Token-Signierung/Prüfung gegeneine Live-XID-Instanz) wurde noch nicht durchgeführt und muss vor demProduktionseinsatz abgeschlossen werden.
Registry-Status: UNPUBLISHED. Installieren Sie dieses SDK nur aus einem Checkout des Repository-Quellcodes; verwenden Sie keine externe Paket-Registry.
Die Anfrageauthentifizierung akzeptiert standardmäßig nur Bearer. Ein anwendungseigenes JWT-Cookie wird nur gelesen, wenn sein exakter Name konfiguriert ist. Das opake Core-Cookie __Host-xid.rt.* wird niemals durchsucht oder lokal verifiziert; tauschen Sie es aus, indem Sie den vollständigen Cookie-Header ohne Weiterleitungen an den exakt gleichursprünglichen Endpunkt POST /v1/sessions/token weiterleiten, und akzeptieren Sie nur eine Antwort, die ausschließlich das Feld token enthält.
Installieren
# Gemfile
gem "xid", path: "../xid/sdk/ruby"
bundle installSchnellstart
require "xid"
Xid.configure do |c|
c.issuer = "https://xid.dev"
c.audience = "your_client_id"
c.webhook_secret = "whsec_AbCdEf..."
end
# Verify a token
begin
claims = Xid.verify_token(raw_token)
puts claims.sub # => "usr_abc123"
puts claims.scope # => "openid profile email"
rescue Xid::TokenVerificationError => e
puts "Token invalid: #{e.message}"
endRack/Rails-Anfrage authentifizieren
# Sinatra before-filter
before do
auth = Xid.authenticate_request(request)
halt 401, "Unauthorized" unless auth.signed_in?
@current_user_id = auth.claims.sub
end
# Explicit same-origin Core session -> JWT exchange
token = Xid.exchange_session_token(
incoming_request_url: request.url,
cookie_header: request.get_header("HTTP_COOKIE")
)Webhook prüfen
# Rails controller action
def receive
raw_body = request.raw_post
payload = Xid.verify_webhook(request.headers.to_h, raw_body)
handle_event(payload["type"], payload["data"])
head :ok
rescue Xid::WebhookVerificationError
head :bad_request
endMulti-Issuer-Einrichtung
config_a = Xid::Configuration.new
config_a.issuer = "https://tenant-a.xid.dev"
config_a.audience = "client_a"
client_a = Xid::Client.new(config_a)
claims = client_a.verify_token(token)Konfigurationsoptionen
| Schlüssel | Standard | Beschreibung |
|---|---|---|
issuer |
https://xid.dev |
OIDC-Issuer-URL |
audience |
nil |
Erwarteter aud-Claim; nil überspringt die Validierung |
jwks_ttl |
3600 |
Lokale JWKS-Cache-TTL in Sekunden |
leeway |
60 |
JWT-Taktversatztoleranz in Sekunden |
webhook_secret |
nil |
Webhook-Signing-Secret mit whsec_-Prefix |
webhook_tolerance |
300 |
Webhook-Replay-Fenster in Sekunden |
cookie_name |
disabled |
Name des anwendungseigenen JWT-Cookies; nur bei expliziter Konfiguration aktiviert |
Plattformhinweise
- Setzt das
jwt-Gem (ES256/RS256-Unterstützung) voraus. Ruby 3.1+erforderlich. Xid.authenticate_requestakzeptiert sowohl einen Rack-Env-Hash alsauch ein Rack-Request-Objekt.- Ausnahmehierarchie:
Xid::Error->ConfigurationError,JwksError,TokenVerificationError,WebhookVerificationError.