Zum Hauptinhalt springen

8. Diameter-Benutzersitzungen

Im Allgemeinen kann Diameter Anwendungen zwei Arten von Diensten bereitstellen. Die erste betrifft Authentifizierung und Autorisierung und kann optional Accounting nutzen. Die zweite nutzt nur Accounting.

Nutzt ein Dienst den Authentifizierungs- und/oder Autorisierungsteil einer Anwendung und fordert ein Benutzer Netzzugang an, sendet der Diameter-Client eine Autorisierungsanfrage an seinen lokalen Server. Die Anfrage ist in einer dienstspezifischen Diameter-Anwendung (z. B. NASREQ) definiert. Sie enthält ein Session-Id AVP, das in nachfolgenden Nachrichten (weitere Autorisierung, Accounting usw.) zur Benutzersitzung verwendet wird. Das Session-Id AVP ordnet Diameter-Nachrichten und Benutzersitzungen zu.

Autorisiert ein Diameter-Server einen Benutzer für begrenzte Nutzung von Netzressourcen und ist er bereit, die Autorisierung später zu verlängern, MUSS er das Authorization-Lifetime AVP in der Antwort aufnehmen. Dieses AVP legt die Höchstzahl Sekunden fest, in denen der Benutzer die Ressourcen nutzen DARF, bevor der Server eine neue Autorisierungsanfrage erwartet. Das Auth-Grace-Period AVP gibt die Sekunden nach Ablauf des Authorization-Lifetime an, nach denen der Server den gesamten zur Sitzung gehörenden Zustand freigibt. Erwartet der Serving-Realm Zahlung vom Home-Realm des Benutzers, legen Authorization-Lifetime und Auth-Grace-Period zusammen die maximale Sitzungsdauer fest, für die der Home-Realm finanziell haftet. Dienste nach Ablauf dieser AVPs liegen beim Zugangsgerät. Die tatsächlichen Kosten liegen außerhalb des Protokolls.

Ein Zugangsgerät, das keine erneute Autorisierung oder Sitzungsbeendigungsanfrage senden wird, KANN das Auth-Session-State AVP mit NO_STATE_MAINTAINED als Hinweis setzen. Akzeptiert der Server den Hinweis, gilt: Nach Dienstende gibt es keine Sitzungsbeendigungsnachricht, daher kann kein Zustand gehalten werden. Weicht der Wert in der Serverantwort ab (oder der Standardwert bei fehlendem AVP), MUSS das Zugangsgerät den Anweisungen folgen. NO_STATE_MAINTAINED DARF in späteren Re-Autorisierungsanfragen und -antworten nicht gesetzt werden.

Das Basisprotokoll enthält keine Autorisierungsanfragen; diese sind anwendungsspezifisch in Diameter-Anwendungsdokumenten definiert. Es definiert jedoch Nachrichten zum Beenden von Benutzersitzungen, damit zustandshaltende Server Ressourcen freigeben.

Nutzt ein Dienst nur den Accounting-Teil von Diameter (auch mit einer Anwendung), dient das Session-Id weiter zur Identifikation von Sitzungen. Sitzungsbeendigungsnachrichten entfallen; das Ende wird durch eine Accounting-Stop-Nachricht signalisiert.

Diameter kann auch für Dienste genutzt werden, die sich nicht klar als Authentifizierung, Autorisierung oder Accounting einordnen (z. B. einige 3GPP-IMS-Schnittstellen). Dann gelten die endlichen Automaten der folgenden Abschnitte ggf. nicht; die Anwendung MUSS ggf. einen eigenen definieren. Solche automaten SOLLTEN dem allgemeinen Rahmen dieses Dokuments folgen (Session-Id AVP, STR/STA, ASR/ASA bei zustandsbehafteten Sitzungen).

8.1. Autorisierungssitzungs-Zustandsautomat

Dieser Abschnitt enthält endliche Automaten für den Lebenszyklus von Diameter-Sitzungen; sie MÜSSEN von allen Diameter-Implementierungen eingehalten werden, die den Authentifizierungs- und/oder Autorisierungsteil einer Diameter-Anwendung nutzen. „Service-Specific“ bezeichnet hier eine in einer Diameter-Anwendung definierte Nachricht (z. B. Mobile IPv4, NASREQ).

Das Diameter-Basisprotokoll unterstützt vier Autorisierungssitzungs-Automaten. Die ersten beiden beschreiben eine Sitzung, deren Zustand der Server hält (Wert des Auth-Session-State AVP oder dessen Fehlen), aus Client- bzw. Server-Sicht. Die anderen beiden gelten, wenn der Server keinen Zustand hält, ebenfalls aus Client- und Server-Sicht.

Wechselt eine Sitzung in den Zustand Idle, sind alle zugewiesenen Ressourcen freizugeben. Jedes nicht aufgeführte Ereignis MUSS als Fehler behandelt werden; falls zutreffend MUSS eine Antwort an den Absender zurückgegeben werden.

Unterstützt eine Anwendung keine Re-Authentifizierung, DÜRFEN die Übergänge zur serverinitiierten Re-Authentifizierung bei gleichzeitig zustandshaltendem Client und Server (RAR senden, Pending, RAA empfangen) ignoriert werden.

In der Tabelle bedeutet „Failure to send X“, dass der Diameter-Agent Befehl X nicht zum Ziel senden kann (Peer ausgefallen oder transitorischer Fehler bzw. temporärer Protokollfehler DIAMETER_TOO_BUSY oder DIAMETER_LOOP_DETECTED im Result-Code AVP der zugehörigen Antwort). „X successfully sent“ ist das Komplement zu „Failure to send X“.

Wenn der Server den Zustand hält, befolgt der Client folgenden Automaten (Tabelle wie im englischen RFC-6733-Text) :

CLIENT, STATEFUL
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Client or device requests access Send service-specific Pending
auth req auth req

Idle ASR Received for unknown session Send ASA with Idle
Result-Code =
UNKNOWN_SESSION_ID

Idle RAR Received for unknown session Send RAA with Idle
Result-Code =
UNKNOWN_SESSION_ID

Pending Successful service-specific authorization Grant Access Open
answer received with default
Auth-Session-State value

Pending Successful service-specific authorization Sent STR Discon
answer received,
but service not provided

Pending Error processing successful Sent STR Discon
service-specific authorization
answer

Pending Failed service-specific authorization Clean up Idle
answer received

Open User or client device requests access Send service-specific Open
auth req auth req

Open Successful service-specific authorization Provide service Open
answer received

Open Failed service-specific authorization Discon. user/device Idle
answer received.

Open RAR received and client will perform Send RAA with Open
subsequent re-auth Result-Code =
SUCCESS

Open RAR received and client will not perform Send RAA with Idle
subsequent re-auth Result-Code !=
SUCCESS,
Discon. user/device

Open Session-Timeout expires on access device Send STR Discon

Open ASR received, client will comply with Send ASA with Discon
request to end the session Result-Code =
SUCCESS,
Send STR.

Open ASR Received, client will not comply with Send ASA with Open
request to end the session Result-Code !=
SUCCESS

Open Authorization-Lifetime + Auth-Grace-Period Send STR Discon
expires on access device

Discon ASR received Send ASA Discon

Discon STA received Discon. user/device Idle

Server-Automat, wenn der Server den Sitzungszustand hält:

SERVER, STATEFUL
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Service-specific authorization request Send successful Open
received, and user is authorized service-specific
answer

Idle Service-specific authorization request Send failed Idle
received, and user is not authorized service-specific
answer

Open Service-specific authorization request Send successful Open
received, and user is authorized service-specific
answer

Open Service-specific authorization request Send failed Idle
received, and user is not authorized service-specific
answer,
Clean up

Open Home server wants to confirm authentication Send RAR Pending
and/or authorization of the user

Pending Received RAA with a failed Result-Code Clean up Idle

Pending Received RAA with Result-Code = SUCCESS Update session Open

Open Home server wants to terminate the service Send ASR Discon

Open Authorization-Lifetime (and Auth-Grace-Period) Clean up Idle
expires on home server

Open Session-Timeout expires on home server Clean up Idle

Discon Failure to send ASR Wait, resend ASR Discon

Discon ASR successfully sent and ASA Received Clean up Idle
with Result-Code

Not Discon ASA Received None No Change

Discon Any STR Received Send STA, Clean up Idle

Client-Automat, wenn der Server keinen Zustand hält:

CLIENT, STATELESS
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Client or device requests access Send service-specific Pending
auth req auth req

Pending Successful service-specific authorization Grant access Open
answer received with Auth-Session-
State set to NO_STATE_MAINTAINED

Pending Failed service-specific authorization Clean up Idle
answer received

Open Session-Timeout expires on access device Discon. user/device Idle

Open Service to user is terminated Discon. user/device Idle

Server-Automat, wenn der Server keinen Sitzungszustand hält:

SERVER, STATELESS
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Service-specific authorization request Send successfully Idle
received, and successfully processed processed service-
specific answer

8.2. Abrechnungssitzungs-Zustandsautomat

Anwendungen mit Accounting-Teil oder die nur Accounting benötigen, MÜSSEN die folgenden Automaten unterstützen. Der erste gilt für Clients.

Accounting-Befehlscodes: Abschnitt 9.7; Accounting-AVPs: Abschnitt 9.8.

Die Serverseite des Accounting-Automaten hängt teils von der Anwendung ab. Das Basisprotokoll definiert einen Standard-Serverautomaten, den ALLE Anwendungen ohne eigenen Automaten MÜSSEN befolgen – der zweite Automat in diesem Abschnitt.

Der Standard-Serverautomat erlaubt Accounting-Datensätze in beliebiger Reihenfolge und zu beliebiger Zeit ohne normative Vorgaben zur Verarbeitung. Implementierungen können prüfen, sortieren, korrelieren, Betrug erkennen usw.; AVPs können geprüft werden. Verarbeitung sofort oder nachgelagert; oft anwendungs- oder policyabhängig und nicht normiert. Anwendungen KÖNNEN festlegen, wann Datensätze akzeptiert werden, z. B. nach Accounting-Realtime-Required AVP oder Kreditlimits.

Ein dritter, optionaler Serverautomat KANN genutzt werden, wenn der Accounting-Server Sitzungszustand führen soll. Das widerspricht längeren Konnektivitätsstörungen. Empfohlen nur, wenn Accounting-Realtime-Required den Wert DELIVER_AND_GRANT hat, sodass der Nutzer bei Accounting-Ausfall getrennt werden muss. Sonst können vom Client erzeugte Datensätze nach Wiederherstellung der Verbindung vom Server nicht mehr akzeptiert und verloren gehen. Der Automat wird von einem Überwachungs-Timer Ts beaufsichtigt, der deutlich über Acct_Interim_Interval liegen sollte; Ts KANN das Doppelte von Acct_Interim_Interval sein, um nach kurzen transienten Ausfällen nicht in Idle zu wechseln.

Nicht gelistete Ereignisse MÜSSEN als Fehler gelten; falls zutreffend MUSS eine passende Antwort gesendet werden.

„Failure to send“: Der Diameter-Client erreicht das Ziel nicht (Peer aus oder transitorischer Fehler DIAMETER_OUT_OF_SPACE, DIAMETER_TOO_BUSY, DIAMETER_LOOP_DETECTED in der Accounting-Antwort).

„Failed answer“: Nicht-transitorische Fehlermeldung in der Accounting-Antwort.

Die Aktion „Disconnect user/dev“ MUSS auch die Autorisierungs-Sitzungstabelle beeinflussen (z. B. STR senden), wenn die Anwendung Authentifizierung/Autorisierung und Accounting kombiniert.

PendingS, PendingI, PendingL, PendingE und PendingB sind Wartezustände auf Antworten zu Accounting-Anfragen Start, Interim, Stop, Event oder gepuffert (Tabelle wie im englischen RFC-6733-Text).

CLIENT, ACCOUNTING
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Client or device requests access Send accounting PendingS
accounting start req. start req.

Idle Client or device requests a one-time service Send accounting PendingE
accounting event req event req

Idle Records in storage Send record PendingB
record

PendingS Successful accounting start answer received Open

PendingS Failure to send and buffer space available Store Start Open
and real time not equal to Record
DELIVER_AND_GRANT

PendingS Failure to send and no buffer space available Open
and real time equal to GRANT_AND_LOSE

PendingS Failure to send and no buffer space available Disconnect user/dev Idle
and real time not equal to
GRANT_AND_LOSE

PendingS Failed accounting start answer received and Open
real time equal to GRANT_AND_LOSE

PendingS Failed accounting start answer received and Disconnect user/dev Idle
real time not equal to GRANT_AND_LOSE

PendingS User service terminated stop Store stop PendingS
record

Open Interim interval elapses Send accounting PendingI
interim
record

Open User service terminated Send accounting PendingL
stop req.

PendingI Successful accounting interim answer received Open

PendingI Failure to send and (buffer space available Store interim Open
or old interim record can be overwritten) record
and real time not equal to
DELIVER_AND_GRANT

PendingI Failure to send and no buffer space available Open
and real time equal to GRANT_AND_LOSE

PendingI Failure to send and no buffer space available Disconnect user/dev Idle
and real time not equal to GRANT_AND_LOSE

PendingI Failed accounting interim answer received and Open
real time equal to GRANT_AND_LOSE

PendingI Failed accounting interim answer received and Disconnect user/dev Idle
real time not equal to GRANT_AND_LOSE

PendingI User service terminated stop Store stop PendingI
record

PendingE Successful accounting event answer received Idle

PendingE Failure to send and buffer space available Store event Idle
record

PendingE Failure to send and no buffer space available Idle

PendingE Failed accounting event answer received Idle

PendingB Successful accounting answer received Delete record Idle

PendingB Failure to send Idle

PendingB Failed accounting answer received Delete record Idle

PendingL Successful accounting stop answer received Idle

PendingL Failure to send and buffer space available Store stop Idle
record

PendingL Failure to send and no buffer space available Idle

PendingL Failed accounting stop answer received Idle
SERVER, STATELESS ACCOUNTING
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Accounting start request received and Send accounting Idle
successfully processed. start answer

Idle Accounting event request received and Send accounting Idle
successfully processed. event answer

Idle Interim record received and successfully Send accounting Idle
processed. interim answer

Idle Accounting stop request received and Send accounting Idle
successfully processed stop answer

Idle Accounting request received; no space left Send accounting Idle
to store records answer;
Result-Code =
OUT_OF_SPACE
SERVER, STATEFUL ACCOUNTING
State Event Action New State
---------------------------------------------------------------------------------------------------
Idle Accounting start request received and Send accounting Open
successfully processed. start answer;
Start Ts

Idle Accounting event request received and Send accounting Idle
successfully processed. event answer

Idle Accounting request received; no space left Send accounting Idle
to store records answer;
Result-Code =
OUT_OF_SPACE

Open Interim record received and successfully Send accounting Open
processed. interim answer;
Restart Ts

Open Accounting stop request received and Send accounting Idle
successfully processed stop answer;
Stop Ts

Open Accounting request received; no space left Send accounting Idle
to store records answer;
Result-Code =
OUT_OF_SPACE;
Stop Ts

Open Session supervision timer Ts expired Stop Ts Idle

8.3. Serverinitierte erneute Authentifizierung

Ein Diameter-Server kann für eine Sitzung eine erneute Authentifizierung und/oder Autorisierung durch eine Re-Auth-Request (RAR) starten.

Beispiel Prepaid: Der Server, der die Sitzung autorisiert hat, muss ggf. prüfen, ob der Nutzer den Dienst noch nutzt.

Empfängt ein Zugangsgerät ein RAR mit einem Session-Id einer aktiven Sitzung, MUSS es – wenn unterstützt – beim Nutzer eine Re-Authentifizierung auslösen. Jede Diameter-Anwendung MUSS angeben, ob serverinitiierte Re-Authentifizierung unterstützt wird; manche verbieten eine Aufforderung zur Re-Authentifizierung.

8.3.1. Re-Auth-Request

Die Re-Auth-Request (RAR), Befehlscode 258 und gesetztes „R“-Bit in den Flags, kann von jedem Server an das zugangsseitige Gerät gesendet werden, um Re-Authentifizierung und/oder Re-Autorisierung zu verlangen.

Nachrichtenformat

::= < Diameter Header: 258, REQ, PXY >
< Session-Id >
{ Origin-Host }
{ Origin-Realm }
{ Destination-Realm }
{ Destination-Host }
{ Auth-Application-Id }
{ Re-Auth-Request-Type }
[ User-Name ]
[ Origin-State-Id ]
* [ Proxy-Info ]
* [ Route-Record ]
* [ AVP ]

8.3.2. Re-Auth-Answer

Die Re-Auth-Answer (RAA), Befehlscode 258 und gelöschtes „R“-Bit, antwortet auf das RAR. Das Result-Code AVP MUSS vorhanden sein und beschreibt die Bearbeitung.

Nach einer erfolgreichen RAA MUSS eine anwendungsspezifische Authentifizierungs- und/oder Autorisierungsnachricht folgen.

Nachrichtenformat

::= < Diameter Header: 258, PXY >
< Session-Id >
{ Result-Code }
{ Origin-Host }
{ Origin-Realm }
[ User-Name ]
[ Origin-State-Id ]
[ Error-Message ]
[ Error-Reporting-Host ]
[ Failed-AVP ]
* [ Redirect-Host ]
[ Redirect-Host-Usage ]
[ Redirect-Max-Cache-Time ]
* [ Proxy-Info ]
* [ AVP ]

8.4. Sitzungsbeendigung

Ein Diameter-Server, der eine Sitzung autorisiert hat und deren Zustand führt, muss informiert werden, wenn sie nicht mehr aktiv ist – zur Nachverfolgung und damit zustandshaltende Agenten bereitgestellte Ressourcen freigeben. Sitzungen ohne Zustand nutzen diesen Abschnitt nicht.

Endet eine Benutzersitzung, die eine Diameter-Autorisierung erforderte, MUSS das Zugangsgerät, das den Dienst bereitstellte, eine Session-Termination-Request (STR) an den autorisierenden Server senden. Ein STR MUSS bei jeder Beendigung ausgegeben werden: Abmeldung, Ablauf von Session-Timeout, administrative Maßnahme, Empfang eines Abort-Session-Request (siehe unten), geordnetes Herunterfahren usw.

Ein STR MUSS auch für eine autorisierte, aber nie gestartete Sitzung gesendet werden (Ressourcenmangel, verweigerte Dienstart, nicht unterstützte Pflicht-AVP usw.).

Ein Proxy kann verhindern, dass eine autorisierte Sitzung startet (z. B. Autorisierungsantwort von Erfolg auf Fehler ändern). Enthielt die Antwort kein Auth-Session-State mit NO_STATE_MAINTAINED, MUSS der Proxy dem autorisierenden Server ein STR senden, da das Zugangsgerät nicht wissen kann, dass autorisiert wurde.

Der Server, der ein STR empfängt, MUSS die zum Session-Id gehörenden Ressourcen bereinigen und eine Session-Termination-Answer (STA) zurücksenden.

Der Server MUSS Ressourcen auch bei Ablauf des Session-Timeout oder wenn Authorization-Lifetime und Auth-Grace-Period ohne Re-Autorisierung ablaufen, bereinigen – unabhängig davon, ob ein STR eintrifft. Nach diesen Timern wird kein Dienst mehr erwartet; ihr Ablauf deutet auf ein unerwartetes Ausfallen des Zugangsgeräts hin.

8.4.1. Session-Termination-Request

Die Session-Termination-Request (STR), Befehlscode 275 und gesetztes „R“-Bit, wird von einem Diameter-Client oder -Proxy gesendet, um mitzuteilen, dass eine authentifizierte und/oder autorisierte Sitzung endet.

Nachrichtenformat

::= < Diameter Header: 275, REQ, PXY >
< Session-Id >
{ Origin-Host }
{ Origin-Realm }
{ Destination-Realm }
{ Auth-Application-Id }
{ Termination-Cause }
[ User-Name ]
[ Destination-Host ]
* [ Class ]
[ Origin-State-Id ]
* [ Proxy-Info ]
* [ Route-Record ]
* [ AVP ]

8.4.2. Session-Termination-Answer

Die Session-Termination-Answer (STA), Befehlscode 275 und gelöschtes „R“-Bit, sendet der Server zur Bestätigung des Sitzungsendes. Das Result-Code AVP MUSS vorhanden sein und KANN einen Fehler bei STR-Verarbeitung anzeigen.

Nach Senden oder Empfang der STA MUSS der Server alle Ressourcen der im Session-Id AVP genannten Sitzung freigeben. Ein Zwischenserver in der Proxy-Kette KANN bei Bedarf ebenfalls Ressourcen freigeben.

Nachrichtenformat

::= < Diameter Header: 275, PXY >
< Session-Id >
{ Result-Code }
{ Origin-Host }
{ Origin-Realm }
[ User-Name ]
* [ Class ]
[ Error-Message ]
[ Error-Reporting-Host ]
[ Failed-AVP ]
[ Origin-State-Id ]
* [ Redirect-Host ]
[ Redirect-Host-Usage ]
[ Redirect-Max-Cache-Time ]
* [ Proxy-Info ]
* [ AVP ]

8.5. Abbrechen einer Sitzung

Ein Diameter-Server kann mit einer Abort-Session-Request (ASR) verlangen, dass das Zugangsgerät einen Sitzungsdienst beendet.

Beispiel: Der ursprünglich autorisierende Server muss die Sitzung wegen fehlendem Guthaben oder anderer bei der Erstautorisierung nicht vorhergesehener Gründe stoppen.

Empfängt ein Zugangsgerät ein ASR mit Session-ID einer aktiven Sitzung, KANN es die Sitzung beenden; dies hängt von Implementierung und Konfiguration ab (z. B. ASR nur von bestimmten Agenten). In jedem Fall MUSS es mit einer Abort-Session-Antwort und Result-Code AVP antworten.

8.5.1. Abort-Session-Request

Die Abort-Session-Request (ASR), Befehlscode 274 und gesetztes „R“-Bit, kann von jedem Diameter-Server oder -Proxy an das Zugangsgerät gesendet werden, um die durch Session-Id identifizierte Sitzung zu beenden.

Nachrichtenformat

::= < Diameter Header: 274, REQ, PXY >
< Session-Id >
{ Origin-Host }
{ Origin-Realm }
{ Destination-Realm }
{ Destination-Host }
{ Auth-Application-Id }
[ User-Name ]
[ Origin-State-Id ]
* [ Proxy-Info ]
* [ Route-Record ]
* [ AVP ]

8.5.2. Abort-Session-Answer

Die Abort-Session-Answer (ASA), Befehlscode 274 und gelöschtes „R“-Bit, antwortet auf das ASR. Das Result-Code AVP MUSS vorhanden sein.

Erfolgreich beendet: DIAMETER_SUCCESS. Sitzung nicht aktiv: DIAMETER_UNKNOWN_SESSION_ID. Sonstige Verweigerung: DIAMETER_UNABLE_TO_COMPLY.

Nachrichtenformat

::= < Diameter Header: 274, PXY >
< Session-Id >
{ Result-Code }
{ Origin-Host }
{ Origin-Realm }
[ User-Name ]
[ Origin-State-Id ]
[ Error-Message ]
[ Error-Reporting-Host ]
[ Failed-AVP ]
* [ Redirect-Host ]
[ Redirect-Host-Usage ]
[ Redirect-Max-Cache-Time ]
* [ Proxy-Info ]
* [ AVP ]

8.6. Ableiten der Sitzungsbeendigung aus Origin-State-Id

Origin-State-Id dient dazu, beendete Sitzungen ohne STR zu erkennen, wenn ein Zugangsgerät unerwartet ausfällt.

Client oder Zugangsgerät erhöht Origin-State-Id bei jedem Start und sendet den neuen Wert in CER/CEA nach Verbindungsaufbau. Der Server vergleicht den gespeicherten alten Wert mit dem neuen und prüft nicht beendete Sitzungen dieses Clients, um einen harten Absturz abzuleiten.

Origin-State-Id kann auch in anderen Anfragen vorkommen, wenn Relays oder Proxys dazwischen liegen; ein Neustart wird erst bei neuer Anfrage erkannt – eher opportunistisch.

Der Server KANN annehmen, dass alle vor einem Client-Neustart aktiven Sitzungen beendet sind, den Zustand bereinigen und STR an vorgelagerte Server senden, um global aufzuräumen.

8.7. Auth-Request-Type AVP

Das Auth-Request-Type AVP (Code 274) vom Typ Enumerated steht in anwendungsspezifischen Autorisierungsanfragen und teilt mit, ob der Benutzer nur authentifiziert, nur autorisiert oder beides werden soll. Jeder andere Wert als „beides“ KANN RADIUS-Interop-Probleme verursachen. Definierte Werte:

AUTHENTICATE_ONLY 1

Nur Authentifizierung; die Anfrage MUSS die vom Server benötigten anwendungsspezifischen Authentifizierungs-AVPs enthalten.

AUTHORIZE_ONLY 2

Nur Autorisierung; die Anfrage MUSS die zur Identifikation des angefragten/angebotenen Dienstes nötigen Autorisierungs-AVPs enthalten.

AUTHORIZE_AUTHENTICATE 3

Beides; die Anfrage MUSS relevante Authentifizierungs- und Autorisierungsinformationen enthalten.

8.8. Session-Id AVP

Das Session-Id AVP (Code 263), UTF8String, identifiziert eine Sitzung (Abschnitt 8). Jede Nachricht zu einer Sitzung MUSS genau ein Session-Id AVP mit demselben Wert über die Lebensdauer enthalten. Wenn vorhanden, SOLLTE das Session-Id unmittelbar auf den Diameter-Header folgen (Abschnitt 3).

Das Session-Id MUSS global und dauerhaft eindeutig sein, um eine Benutzersitzung ohne weitere Informationen zu identifizieren, und kann Authentifizierung und Abrechnung korrelieren. Es besteht aus einem verpflichtenden und einem implementierungsdefinierten Teil; empfohlenes Format unten.

Das Session-Id MUSS mit der in DiameterIdentity codierten Absenderidentität beginnen (Abschnitt 4.3.1). Der Rest ist durch „;“ getrennt und KANN jede dauerhaft eindeutige Sequenz sein; empfohlenes Format ([] optional):

<high>;<low>[;<optional>]

<high> und <low> sind die dezimalen Darstellungen der oberen und unteren 32 Bits eines streng monoton wachsenden 64-Bit-Werts, aufgeteilt für 32-Bit-Prozessoren. Beim Start KÖNNEN die oberen 32 Bits auf NTP-Zeit [RFC5905] und die unteren auf Null gesetzt werden, was nach Reboot praktisch Kollisionen vermeidet, wenn der Reboot länger als eine Sekunde dauert. Alternativ KANN der wachsende Wert in nichtflüchtigem Speicher gehalten werden.

<optional> ist implementierungsabhängig (Modem-Geräte-ID, Layer-2-Adresse, Zeitstempel usw.).

Beispiel ohne optionalen Teil:

accesspoint7.example.com;1876543210;523

Beispiel mit optionalem Teil:

accesspoint7.example.com;1876543210;523;[email protected]

Das Session-Id wird von der Diameter-Anwendung erzeugt, die die Sitzung eröffnet (in den meisten Fällen der Client). Dasselbe Session-Id KANN für Authentifizierungs-, Autorisierungs- und Accounting-Befehle einer Anwendung genutzt werden.

8.9. Authorization-Lifetime AVP

Das Authorization-Lifetime AVP (Code 291), Unsigned32, enthält die Höchstzahl Sekunden Dienst vor Re-Authentifizierung und/oder Re-Autorisierung. Ein kleiner, von Null verschiedener Wert kann den Diameter-Verkehr stark erhöhen.

Der Wert 0 erfordert sofortige Re-Authentifizierung. Fehlt das AVP oder sind alle 32 Bits auf 1, wird keine Re-Authentifizierung erwartet.

Sind dieses AVP und Session-Timeout gleichzeitig vorhanden, DARF Session-Timeout nicht kleiner als Authorization-Lifetime sein.

Re-Autorisierungsnachrichten KÖNNEN dieses AVP enthalten: Sekunden ab Empfang der Re-Autorisierungsantwort.

Der Client KANN einen Hinweis auf die maximal akzeptierte Lebensdauer senden; der Server MUSS einen Wert kleiner oder gleich zurückgeben.

8.10. Auth-Grace-Period AVP

Das Auth-Grace-Period AVP (Code 276), Unsigned32, ist die Wartezeit in Sekunden nach Ablauf des Authorization-Lifetime, bevor der Server Sitzungsressourcen bereinigt.

8.11. Auth-Session-State AVP

Das Auth-Session-State AVP (Code 277), Enumerated, gibt an, ob Zustand geführt wird. Der Client KANN es als Hinweis senden; maßgeblich ist der Wert in der Serverantwort.

STATE_MAINTAINED 0 — Zustand wird geführt; bei Dienstende MUSS eine Sitzungsbeendigungsnachricht gesendet werden (Standard).

NO_STATE_MAINTAINED 1 — Keine Sitzungsbeendigungsnachrichten bei Ablauf des Authorization-Lifetime.

8.12. Re-Auth-Request-Type AVP

Das Re-Auth-Request-Type AVP (Code 285), Enumerated, steht in anwendungsspezifischen Autorisierungsantworten und beschreibt die erwartete Aktion bei Ablauf des Authorization-Lifetime. Enthält die Antwort ein positives Authorization-Lifetime, MUSS dieses AVP vorhanden sein.

AUTHORIZE_ONLY 0 — Bei Ablauf nur autorisierende Re-Auth erwartet (Standard, wenn AVP fehlt, aber Authorization-Lifetime gesetzt ist).

AUTHORIZE_AUTHENTICATE 1 — Vollständige Re-Auth erwartet.

8.13. Session-Timeout AVP

Das Session-Timeout AVP (Code 27) [RFC2865], Unsigned32, ist die Höchstzahl Sekunden vor Sitzungsende. In einer Antwort mit beiden MUSS Session-Timeout mindestens Authorization-Lifetime sein.

Endet eine Sitzung am Zugangsgerät durch Session-Timeout-Ablauf, MUSS ein STR gesendet werden, sofern Zugangsgerät und Home-Server nicht vereinbart haben, keine Beendigungsnachrichten zu senden (Abschnitt 8).

In Re-Autorisierungsantworten KANN es die verbleibenden Sekunden seit Beginn der Re-Auth enthalten.

Null oder fehlendes AVP bedeutet unbegrenzte Dauer vor Beendigung.

Der Client KANN einen Hinweis senden; der Server KANN einen Wert kleiner oder gleich zurückgeben.

8.14. User-Name AVP

Das User-Name AVP (Code 1) [RFC2865], UTF8String, enthält den Benutzernamen im NAI-Format [RFC4282].

8.15. Termination-Cause AVP

Das Termination-Cause AVP (Code 295), Enumerated, gibt den Grund für das Ende der Sitzung am Zugangsgerät an. Aktuelle Werte: IANA-Registrierung Termination-Cause AVP Values [IANATCV].

8.16. Origin-State-Id AVP

Das Origin-State-Id AVP (Code 278), Unsigned32, steigt monoton bei jedem Neustart mit Zustandsverlust. Es KANN in jeder Diameter-Nachricht inkl. CER vorkommen.

Die Entität MUSS bei jedem Zustandsreset einen höheren Wert erzeugen; Startzeit oder nichtflüchtiger Zähler sind zulässig.

Wenn vorhanden, MUSS es den Zustand der durch Origin-Host bezeichneten Entität widerspiegeln. Ändert ein Proxy Origin-Host, MUSS er Origin-State-Id entfernen oder anpassen. Typisch startet ein Zugangsgerät ohne aktive Sitzungen; niedrigere Werte erlauben Rückschlüsse auf inaktive Sitzungen. Um das zu vermeiden, AVP weglassen oder auf 0 setzen.

8.17. Session-Binding AVP

Das Session-Binding AVP (Code 270), Unsigned32, KANN in anwendungsspezifischen Autorisierungsantworten vorkommen und KANN festlegen, dass künftige Re-Auths und STR für diese Sitzung zum selben Autorisierungsserver gehen.

Bitmaskenbits:

RE_AUTH 1 — Gesetzt: kein Destination-Host in künftigen Re-Auths; gelöscht (Standard): Destination-Host erforderlich.

STR 2 — Entsprechend für STR.

ACCOUNTING 4 — Entsprechend für Accounting, wenn der Host bekannt ist.

8.18. Session-Server-Failover AVP

Das Session-Server-Failover AVP (Code 271), Enumerated, KANN erscheinen, wenn Session-Binding fehlt oder ein Bit darin Null ist. Es KANN vorgeben, dass bei Zustellungsfehlern von Re-Auth oder STR eine Folgenachricht ohne Destination-Host gesendet werden SOLL. Standard bei Fehlen: REFUSE_SERVICE.

REFUSE_SERVICE 0 — Bei Fehler Dienst beenden, kein erneuter Versuch.

TRY_AGAIN 1 — Ohne Destination-Host erneut senden.

ALLOW_SERVICE 2 — Re-Auth-Zustellungsfehler: Re-Autorisierung als erfolgreich annehmen; STR-Fehler: Sitzung beenden.

TRY_AGAIN_ALLOW_SERVICE 3 — Wie TRY_AGAIN, zweiter Fehler wie bei ALLOW_SERVICE.

8.19. Multi-Round-Time-Out AVP

Das Multi-Round-Time-Out AVP (Code 272), Unsigned32, SOLLTE vorhanden sein, wenn Result-Code DIAMETER_MULTI_ROUND_AUTH ist. Maximale Sekunden, die das Zugangsgerät dem Nutzer zur Antwort auf eine Authentifizierungsanfrage geben MUSS.

8.20. Class AVP

Das Class AVP (Code 25), OctetString, transportiert Zustand vom Server zum Zugangsgerät. Ist es in einer Autorisierungsantwort enthalten, MUSS es in folgenden Re-Auths, Sitzungsende und Accounting wieder erscheinen. Werte aus Re-Autorisierungsantworten ersetzen frühere. Server SOLLTEN nicht mehr als 4096 Byte Speicher auf dem Client erfordern; kann der Client nicht speichern, MUSS er die Sitzung beenden.

8.21. Event-Timestamp AVP

Das Event-Timestamp AVP (Code 55), Time, KANN in Accounting-Request und -Answer stehen und den Zeitpunkt des Ereignisses in Sekunden seit dem 1. Januar 1900, 00:00 UTC angeben.