Overview of Digest Authentication
The following sections provide a basic overview of Digest authentication, and describe Digest authentication support and configuration in Converged Application Server.
What Is Digest Authentication?
Digest authentication is a simple challenge-response mechanism used to authenticate a user over SIP or HTTP. Digest authentication is fully described in RFC 2617.
When using Digest authentication, if a client makes an un-authenticated request for a protected server resource, the server challenges the client using a nonce value. The client uses a requested algorithm (MD5 by default) to generate an encrypted response—a Digest—that includes a username, password, realm, the nonce value from the challenge, the SIP method, and the requested URI.
The server verifies the client Digest by recreating the Digest value and comparing it with the client's Digest. To recreate the Digest value the server requires a hash of the "A1" value (see RFC 2617) that includes, at minimum, the nonce, username, password and realm name. The server either recreates the hash of the A1 value using a stored clear-text password for the user, or by obtaining a precalculated hash value. Either the clear-text password or precalculated hash value can be stored in an LDAP directory or accessed from an RDBMS using JDBC. The server then uses the hash of the A1 value to recreate the Digest and compare it to the client's Digest to verify the user's identity.
Digest authentication provides secure authorization over HTTP because the clear text password is never transmitted between the client and server. The use of nonce values in the client challenge also ensures that Digest authentication is resistant to replay attacks. See **INTERNAL XREF ERROR** for a more detailed explanation of the challenge-response mechanism for a typical request.
Supporting Network- and Terminal-based Communication Waiting
When using SFT to develop Communication Waiting services, Converged Application Server supports both network- and terminal-based Communication Waiting.
About Network-based Communication Waiting
Network-based Communication Waiting occurs when the AS determines that one of the following conditions has occurred:
-
The SIP INVITE request fulfills the Network Determined User Busy (NDUB) condition for the callee.
-
The caller receives a SIP message 486 Busy Here (indicating that the callee is busy) with a 370 Warning in the SIP header field indicating that there is insufficient bandwidth for the call to complete.
To support network-based Communication Waiting, the AS performs the following functions in response to receiving an appropriate Communication Waiting condition:
-
Modifies the SIP INVITE request and forwards or re-sends it to User B.
-
Provides an announcement to User C upon receipt of a 180 Ringing response from User B.
-
Inserts an Alert-Info header field set to
urn:alert:service:call-waitingin the 180 Ringing response and forwards it to User C. -
Rejects the communication by sending a 486 Busy Here response to User C upon receipt of a 415 Unsupported Media Type response.
About Terminal-based Communication Waiting
Terminal-based Communication Waiting occurs when the AS receives the SIP message 180 Ringing with the Alert-Info header URN Indication Values set to urn:alert:service:call-waiting.
To support terminal-based Communication Waiting, the application server performs the following functions in response to receiving an appropriate Communication Waiting condition:
-
Sends an announcement to the calling user (the caller).
-
Sends a 180 Ringing response to the caller.
-
Initiates the Telephony Application Server-Communication Waiting (TAS-CW) timer. This optional timer specifies the amount of time the network will wait for a response from User B, in response to the communication from User C. The value of the timer is between 0.5 and 2 minutes.
If the TAS-CW timer expires, the AS sends a CANCEL request to User B with a Reason header field set to "SIP," and the cause set to 408 Request Timeout, indicating that the user could not be found in the allotted time. A 480 Temporarily Unavailable response is sent to User C, including a Reason header field set to ISUP Cause Code 19, indicating that there was no answer from the callee.