1// Copyright (C) 2019 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qopcuaauthenticationinformation.h"
5
6QT_BEGIN_NAMESPACE
7
8/*!
9 \class QOpcUaAuthenticationInformation
10 \inmodule QtOpcUa
11 \brief The OPC UA authentication information.
12 \since QtOpcUa 5.13
13
14 This class holds the information necessary to perform a login on a server.
15 Supported authentication mechanisms are
16
17 \list
18 \li Anonymous
19 \li Username
20 \li Certificate
21 \endlist
22
23 The anonymous method is used by default but also can be set manually.
24
25 This is an example authentication using username and password.
26
27 \code
28 QOpcUaAuthenticationInformation authInfo;
29 authInfo.setUsernameAuthentication("user", "password");
30
31 m_client->setAuthenticationInformation(authInfo);
32 m_client->connectToEndpoint(endpoint);
33 \endcode
34
35 \sa setAnonymousAuthentication() setUsernameAuthentication() setCertificateAuthentication()
36*/
37
38/*!
39 \qmltype AuthenticationInformation
40 \inqmlmodule QtOpcUa
41 \brief The OPC UA authentication information.
42 \since QtOpcUa 5.13
43
44 This class holds the information necessary to perform a login on a server.
45
46 \code
47 var authInfo = connection.authenticationInformation;
48 authInfo.setUsernameAuthentication("user1", "password");
49 connection.authenticationInformation = authInfo;
50 \endcode
51
52 Current supported authentication methods are:
53
54 \list
55 \li Anonymous
56 \li Usernane
57 \li Certificate
58 \endlist
59
60 \sa setAnonymousAuthentication() setUsernameAuthentication()
61*/
62
63class QOpcUaAuthenticationInformationData : public QSharedData
64{
65public:
66 QVariant authenticationData;
67 QOpcUaUserTokenPolicy::TokenType authenticationType;
68};
69
70/*!
71 Default constructs an authentication information with no parameters set.
72*/
73QOpcUaAuthenticationInformation::QOpcUaAuthenticationInformation()
74 : data(new QOpcUaAuthenticationInformationData)
75{
76 setAnonymousAuthentication();
77}
78
79/*!
80 Constructs an authentication information from \a rhs.
81*/
82QOpcUaAuthenticationInformation::QOpcUaAuthenticationInformation(const QOpcUaAuthenticationInformation &rhs)
83 : data(rhs.data)
84{
85}
86
87/*!
88 Sets the values from \a rhs in this authentication information.
89*/
90QOpcUaAuthenticationInformation &QOpcUaAuthenticationInformation::operator=(const QOpcUaAuthenticationInformation &rhs)
91{
92 if (this != &rhs)
93 data.operator=(o: rhs.data);
94 return *this;
95}
96
97/*!
98 Returns \c true if this authentication information has the same value as \a rhs.
99*/
100bool QOpcUaAuthenticationInformation::operator==(const QOpcUaAuthenticationInformation &rhs) const
101{
102 return data->authenticationType == rhs.data->authenticationType &&
103 data->authenticationData == rhs.data->authenticationData;
104}
105
106QOpcUaAuthenticationInformation::~QOpcUaAuthenticationInformation()
107{
108}
109
110/*!
111 \qmlmethod AuthenticationInformation::setAnonymousAuthentication()
112
113 Sets the authentication method to anonymous.
114*/
115
116/*!
117 Sets the authentication method to anonymous.
118*/
119void QOpcUaAuthenticationInformation::setAnonymousAuthentication()
120{
121 data->authenticationType = QOpcUaUserTokenPolicy::TokenType::Anonymous;
122 data->authenticationData = QVariant();
123}
124
125/*!
126 \qmlmethod AuthenticationInformation::setUsernameAuthentication(string username, string password)
127
128 Sets the authentication method to username, using the given \a username and \a password.
129*/
130
131/*!
132 Sets the authentication method to username, using the given \a username and \a password.
133*/
134void QOpcUaAuthenticationInformation::setUsernameAuthentication(const QString &username, const QString &password)
135{
136 data->authenticationType = QOpcUaUserTokenPolicy::TokenType::Username;
137 data->authenticationData = QVariant::fromValue(value: qMakePair(value1: username, value2: password));
138}
139
140/*!
141 Sets the authentication method to use certificates.
142
143 When using this authentication type a proper configured \l QOpcUaPkiConfiguration has to be set to
144 the \l QOpcUaClient.
145
146 \sa QOpcUaPkiConfiguration QOpcUaClient::setPkiConfiguration()
147*/
148void QOpcUaAuthenticationInformation::setCertificateAuthentication()
149{
150 data->authenticationData = QVariant();
151 data->authenticationType = QOpcUaUserTokenPolicy::TokenType::Certificate;
152}
153
154/*!
155 The content of the \l QVariant returned by this method depends on the currently selected authentication method.
156 */
157const QVariant &QOpcUaAuthenticationInformation::authenticationData() const
158{
159 return data->authenticationData;
160}
161
162/*!
163 Returns the current authentication type.
164
165 \sa QOpcUaUserTokenPolicy::TokenType
166 */
167QOpcUaUserTokenPolicy::TokenType QOpcUaAuthenticationInformation::authenticationType() const
168{
169 return data->authenticationType;
170}
171
172QT_END_NAMESPACE
173

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

source code of qtopcua/src/opcua/client/qopcuaauthenticationinformation.cpp