The UserManagement Object defined in5.3is a UserManagementTypewhich is formally defined in Table 13.

Table 13– UserManagementType definition

Attribute

Value

BrowseName

UserManagementType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of BaseObjectType defined in OPC 10000-5

HasProperty

Variable

Users

UserManagementDataType[]

PropertyType

Mandatory

HasProperty

Variable

PasswordLength

Range

PropertyType

Mandatory

HasProperty

Variable

PasswordOptions

PasswordOptionsMask

PropertyType

Mandatory

HasProperty

Variable

PasswordRestrictions

LocalizedText

PropertyType

Optional

HasComponent

Method

AddUser

Defined in 5.2.5.

Mandatory

HasComponent

Method

ModifyUser

Defined in 5.2.6.

Mandatory

HasComponent

Method

RemoveUser

Defined in 5.2.7.

Mandatory

HasComponent

Method

ChangePassword

Defined in 5.2.8.

Mandatory

Conformance Units

Security User Management Server

The Propertiesand Methodsof the UserManagementTypecontain sensitive security related information and shall only be readable and callable by authorized administrators through an encrypted channel. The only exception is the ChangePassword Method. It requires an encrypted channel but it can be called by the Sessionuser if the user token type for the Sessionis not USERNAME.

The Users Propertyspecifies the currently configured users and their settings as array of UserManagementDataType Structuredefined in 5.2.4.

The Property PasswordLengthdefines the minimum and maximum length requirement for setting the password. A value of 0 for low indicates no limit for minimum and 0 for high indicates no limit for maximum password length. The Range DataTypeis defined in OPC 10000-8.

The Property PasswordOptionsdefines the password features and requirements for setting a password in a bit mask defined by the PasswordOptionsMask DataType. If the Serverdoes not define any special requirements nor does not support enhanced features for the password management, all bits in the bit mask are set to false.

The Property PasswordRestrictionsallows a Serverto provide additional explanations about the rules applied to new passwords accepted by the Server.

The DataType PasswordOptionsMaskis formally defined in Table 14.

Table 14– PasswordOptionsMask values

Value

Bit No.

Description

SupportInitialPasswordChange

0

Indicates if the server supports the feature to require a password change after the creation of the user.

SupportDisableUser

1

Indicates if the server supports to disable a user.

SupportDisableDeleteForUser

2

Indicates if the server supports the configuration NoDeletefor a user.

SupportNoChangeForUser

3

Indicates if the server supports the configuration NoChangeByUserfor a user.

SupportDescriptionForUser

4

Indicates if the server supports to management of a description for the user.

RequiresUpperCaseCharacters

5

Indicates if a upper case ASCII character is required in a password.

RequiresLowerCaseCharacters

6

Indicates if a lower case ASCII character is required in a password.

RequiresDigitCharacters

7

Indicates if a digit ASCII character is required in a password.

RequiresSpecialCharacters

8

Indicates if a special character is required in a password.

The PasswordOptionsMaskrepresentation in the AddressSpaceis defined in Table 15.

Table 15– PasswordOptionsMask definition

Attribute

Value

BrowseName

PasswordOptionsMask

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Others

Subtype of UInt32defined in OPC 10000-5

HasProperty

Variable

OptionSetValues

LocalizedText []

PropertyType

Conformance Units

Security User Management Server

The DataType UserConfigurationMaskis formally defined in Table 16.

Table 16– UserConfigurationMask values

Value

Bit No.

Description

NoDelete

0

The user cannot be deleted.

Disabled

1

The user is disabled.

NoChangeByUser

2

The user cannot change the password.

MustChangePassword

3

The user must change the password to get the assigned roles. If the password is not changed, the user has only the RoleAnonymous.

The UserConfigurationMaskrepresentation in the AddressSpaceis defined in Table 17.

Table 17– UserConfigurationMask definition

Attribute

Value

BrowseName

UserConfigurationMask

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Others

Subtype of UInt32defined in OPC 10000-5

HasProperty

Variable

OptionSetValues

LocalizedText []

PropertyType

Conformance Units

Security User Management Server

This Structure DataTypeis used to provide the metadata for a field in a DataSet. The UserManagementDataTypeis formally defined in Table 18.

Table 18– UserManagementDataType structure

Name

Type

Description

UserManagementDataType

Structure

userName

String

Name of the user.

userConfiguration

UserConfigurationMask

The configuration mask for the user.

description

String

A description for the user.

Its representation in the AddressSpace is defined in Table 19.

Table 19– DataSetMetaDataType definition

Attributes

Value

BrowseName

UserManagementDataType

IsAbstract

False

Subtype of Structure defined in OPC 10000-5.

Conformance Units

Security User Management Server

This Methodis used to add a user to the user management of the Server.

This Methodaffects security and shall only be browseable and callable by authorized administrators and requires an encrypted channel.

Signature

AddUser(

[in]String UserName,

[in]String Password,

[in]UserConfigurationMaskUserConfiguration,

[in]String Description

);

Argument

Description

UserName

The name of the user to add.

Password

The password for the user.

UserConfiguration

The configuration mask for the user.

Description

A description for the user.

Method Result Codes

ResultCode

Description

Bad_BadAlreadyExists

The user does already exist.

Bad_OutOfRange

The password is outside the valid range of accepted length and characters.

Bad_NotSupported

The UserConfigurationhas flags set that are not supported by the Server. See PasswordOptionsfor flags supported by the Server.

Bad_UserAccessDenied

The caller does not have the necessary Permissions.

Bad_SecurityModeInsufficient

The communication channel is not using encryption.

This Methodis used to modify a user in the user management of the Server.

This Methodaffects security and shall only be browseable and callable by authorized administrators and requires an encrypted channel.

Signature

ModifyUser(

[in]String UserName,

[in]Boolean ModifyPassword,

[in]String Password,

[in]Boolean ModifyUserConfiguration,

[in]UserConfigurationMaskUserConfiguration,

[in]Boolean ModifyDescription,

[in]String Description

);

Argument

Description

UserName

The name of the user to modify.

ModifyPassword

Flag indicating if the password should be changed.

Password

The password for the user. The password is set to a null or empty string if ModifyPasswordis false. The argument is ignored if ModifyPasswordis false.

ModifyUserConfiguration

Flag indicating if the user configuration should be changed.

UserConfiguration

The configuration mask for the user. The argument is ignored if ModifyUserConfigurationis false.

ModifyDescription

Flag indicating if the user description should be changed.

Description

A description for the user. The argument is ignored if ModifyDescriptionis false.

Method Result Codes

ResultCode

Description

Bad_NotFound

The user was not found in the user management.

Bad_OutOfRange

The password is outside the valid range of accepted length and characters.

Bad_NotSupported

The UserConfigurationhas flags set that are not supported by the Server. See PasswordOptionsfor flags supported by the Server.

Bad_UserAccessDenied

The caller does not have the necessary Permissions.

Bad_SecurityModeInsufficient

The communication channel is not using encryption.

This Methodis used to remove a userfrom the user management of the Server.

This Methodaffects security and shall only be browseable and callable by authorized administrators and requires an encrypted channel.

If the user of the Sessionused to call the Methodis to be removed, the Methodshall fail with Bad_InvalidSelfReference.

Signature

RemoveUser(

[in]String UserName

);

Argument

Description

UserName

The name of the user to remove.

Method Result Codes

ResultCode

Description

Bad_BadNotFound

The specified user does not exist.

Bad_UserAccessDenied

The caller does not have the necessary Permissions.

Bad_NotSupported

The user cannot be deleted due to NoDeleteuser configuration mask setting.

Bad_SecurityModeInsufficient

The communication channel is not using encryption.

Bad_InvalidSelfReference

The user to remove is used by the Sessionused to call the Method.

This Methodis used to change the password of the user for the Sessionused to call the Method. The Method shall fail with Bad_InvalidStateif the user token type for the Sessionis not USERNAME.

Even if the Methodis not browsable through a hierarchy for the Sessionuser, it shall be accessible and callable by the Sessionuser with the well defined NodeIdsfor the UserManagement Objectand the ChangePassword Method.

This Methodaffects security and shall only be browseable and callable through an encrypted channel. It shall be callable by the Sessionuser if the user token type for the Sessionis not USERNAME, even if the Rolefor the user is Anonymous.

Signature

ChangePassword(

[in]String OldPassword,

[in]String NewPassword

);

Argument

Description

OldPassword

The old password for the Sessionuser.

NewPassword

The new password for the Sessionuser. It is receommended that the user interface for entering the new password requires to enter the password twice to avoid typos.

The Servercan apply additional restrictions to the accepted password in addition to the one indicated by PasswordOptionMask.

Method Result Codes

ResultCode

Description

Bad_IdentityTokenInvalid

The old password is not valid.

Bad_OutOfRange

The new password is outside the valid range of accepted length and characters.

Bad_InvalidState

The caller is not authenticated with a USERNAME user token.

Bad_NotSupported

The password cannot be changed due to NoChangeByUseruser configuration mask setting.

Bad_SecurityModeInsufficient

The communication channel is not using encryption.

Bad_BadAlreadyExists

The new password matches the old password.