MSMQMessage.AuthLevel

 

The AuthLevel property of the MSMQMessage object specifies whether the message should be authenticated and what type of digital signature is used.

Data type:

Long

Run-time access:

Read/write

Property AuthLevel As Long

AuthLevel can be set to one of the following values:

MQMSG_AUTH_LEVEL_NONE

The default. The message is not signed. Message Queuing does not need to authenticate the message when it reaches the queue.

MQMSG_AUTH_LEVEL_ALWAYS

Message Queuing runtime signs the message using one or two types of digital signatures.

Non-SRMP messages are signed based on the value of the source computer digital signature registry entry. If the registry entry is not added and set, an MSMQ 1.0 signature is used. (For information on setting the source computer digital signature registry entry, see Digital Signature Registry Entries.)

SRMP messages are signed with an XML digital signature. (For information on the digital signature used to sign SRMP messages, see XML Digital Signatures.)

MQMSG_AUTH_LEVEL_MSMQ10

Obsolete. This value is superseded by MQMSG_AUTH_LEVEL_SIG10.

MQMSG_AUTH_LEVEL_MSMQ20

Obsolete. This value is superseded by MQMSG_AUTH_LEVEL_SIG20.

MQMSG_AUTH_LEVEL_SIG10

Supersedes MQMSG_AUTH_LEVEL_MSMQ10 in MSMQ 3.0. For non-SRMP messages, the Message Queuing runtime ignores the source computer digital signature registry entry and signs the message using only an MSMQ 1.0 signature.

For SRMP messages, the message is signed using an XML digital signature.

MQMSG_AUTH_LEVEL_SIG20

Supersedes MQMSG_AUTH_LEVEL_MSMQ20 in MSMQ 3.0. For non-SRMP messages, the Message Queuing runtime ignores the source computer digital signature registry entry and signs the message using an MSMQ 2.0 signature. (This setting cannot be used when sending messages to multiple destinations using distribution lists, multicast addresses, or multiple-element format names.)

For SRMP messages, the message is signed using an XML digital signature.

In C++ COM applications, if the AuthLevel property is set to this value, you must use a smart pointer to the IMSMQMessage3 interface to expose this property.

MQMSG_AUTH_LEVEL_SIG30

Introduced in MSMQ 3.0. For non-SRMP messages, the Message Queuing runtime ignores the source computer digital signature registry entry and signs the message using a multiple-destination digital signature (introduced in MSMQ 3.0) or an MSMQ 2.0 signature.An MSMQ 3.0 multiple-destination digital signature is used if the message is sent using distribution lists or multiple-element format names.

An MSMQ 2.0 signature is used if the message is sent without using distribution lists, multicast addresses, or multiple-element format names.

HTTP messages and multicast messages, which are both sent as SRMP packets, are signed using an XML digital signature.

In C++ COM applications, if the AuthLevel property is set to this value, you must use a smart pointer to the IMSMQMessage3 interface to expose this property.

The AuthLevel property is only used by the sending application to request authentication. When authentication is requested, Message Queuing creates an XML digital signature for HTTP messages or multicast messages (SRMP messages) and one or two of the three non-XML digital signatures for non-SRMP messages. The digital signature created is used to digitally sign the message when it is sent and to authenticate the message when it reaches the computer where the destination queue resides. For more information on authenticating messages, see Message Authentication.

For information on how Message Queuing authenticates messages, see Message Authentication.

Authentication can be enforced at the queue level by setting the MSMQQueueInfo.Authenticate property of the queue. When sending messages to queues that only accept authenticated messages, the message will be rejected when it reaches the queue if the authentication level of a message is set to MQMSG_AUTH_LEVEL_NONE.

Message Queuing provides different digital signatures for SRMP and non-SRMP messages. Non-SRMP signatures include the following (for a complete description, including the message properties used to create these signatures, see Digital Signatures):

  • MSMQ 1.0 signatures

  • MSMQ 2.0 signatures

  • Multiple-destination digital signatures (introduced in MSMQ 3.0)

XML digital signatures (introduced in MSMQ 3.0) are used whenever an SRMP message requests authentication.

The following digital signature registry entries can be added and set to specify what type of digital signature is used for non-SRMP messages. When MQMSG_AUTH_LEVEL_ALWAYS is specified, the Message Queuing runtime creates digital signatures based on the value of the digital signature registry entry on the source computer.

HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\Security\SendMsgAuthn
HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\Security\RcvOnlyEnhMsgAuthn

For details on setting these registry entries, see Digital Signature Registry Entries.

The receiving application can check to see if authentication was requested by retrieving one of the following read-only message properties: MSMQMessage.IsAuthenticated2 and MSMQMessage.ReceivedAuthenticationLevel (introduced in MSMQ 2.0).

Equivalent API Function Property

With API function calls, the equivalent property is PROPID_M_AUTH_LEVEL.

The following examples are included in Using Message Queuing.

For an example of

See

Setting the authentication level when requesting authentication using an internal certificate

Visual Basic Code Example: Requesting Authentication Using an Internal Certificate

Setting the authentication level when requesting authentication using an external certificate

Visual Basic Code Example: Requesting Authentication Using an External Certificate

Retrieving the authentication level of a message to validate authentication

Visual Basic Code Example: Validating Authentication

Setting the authentication level of the queue to enforce authentication

Visual Basic Code Example: Enforcing Authentication

Windows NT/2000/XP: Included in Windows NT 4.0 SP3 and later.

Windows 95/98/Me: Included in Windows 95 and later.

Header: Declared in Mqoai.h.

Library: Use Mqoa.lib

Community Additions

ADD
Show: