Документация
ОС Аврора 5.0.1

Класс SASL

Классы

class Params

Публичные типы

enum AuthCondition { AuthFail , NoMechanism , BadProtocol , BadServer , BadAuth , NoAuthzid , TooWeak , NeedEncrypt , Expired , Disabled , NoUser , RemoteUnavailable }
enum AuthFlags { AuthFlagsNone = 0x00 , AllowPlain = 0x01 , AllowAnonymous = 0x02 , RequireForwardSecrecy = 0x04 , RequirePassCredentials = 0x08 , RequireMutualAuth = 0x10 , RequireAuthzidSupport = 0x20 }
enum ClientSendMode { AllowClientSendFirst , DisableClientSendFirst }
enum Error { ErrorInit , ErrorHandshake , ErrorCrypt }
enum ServerSendMode { AllowServerSendLast , DisableServerSendLast }

Сигналы

void authCheck (const QString &user, const QString &authzid)
void authenticated ()
void clientStarted (bool clientInit, const QByteArray &clientInitData)
void needParams (const QCA::SASL::Params &params)
void nextStep (const QByteArray &stepData)
void serverStarted ()

Сигналы, унаследованные от QCA::SecureLayer

void closed ()
void error ()
void readyRead ()
void readyRead ()

Публичные функции

AuthCondition authCondition () const
int bytesAvailable () const override
int bytesOutgoingAvailable () const override
void continueAfterAuthCheck ()
void continueAfterParams ()
int convertBytesWritten (qint64 encryptedBytes) override
Error errorCode () const
QString mechanism () const
QStringList mechanismList () const
void putServerFirstStep (const QString &mech)
void putServerFirstStep (const QString &mech, const QByteArray &clientInit)
void putStep (const QByteArray &stepData)
QByteArray read () override
QByteArray readOutgoing (int *plainBytes=nullptr) override
QStringList realmList () const
void reset ()
SASL (QObject *parent=nullptr, const QString &provider=QString())
void setAuthzid (const QString &auth)
void setConstraints (AuthFlags f, int minSSF, int maxSSF)
void setConstraints (AuthFlags f, SecurityLevel s=SL_None)
void setExternalAuthId (const QString &authid)
void setExternalSSF (int strength)
void setLocalAddress (const QString &addr, quint16 port)
void setPassword (const SecureArray &pass)
void setRealm (const QString &realm)
void setRemoteAddress (const QString &addr, quint16 port)
void setUsername (const QString &user)
int ssf () const
void startClient (const QString &service, const QString &host, const QStringList &mechlist, ClientSendMode mode=AllowClientSendFirst)
void startServer (const QString &service, const QString &host, const QString &realm, ServerSendMode mode=DisableServerSendLast)
void write (const QByteArray &a) override
void writeIncoming (const QByteArray &a) override

Публичные функции, унаследованные от QCA::SecureLayer

virtual void close ()
virtual bool isClosable () const
virtual QByteArray readUnprocessed ()
SecureLayer (QObject *parent=nullptr)

Публичные функции, унаследованные от QCA::Algorithm

Algorithm (const Algorithm &from)
void change (const QString &type, const QString &provider)
void change (Provider::Context *c)
Provider::Context * context ()
const Provider::Context * context () const
Algorithm & operator= (const Algorithm &from)
Provider * provider () const
Provider::Context * takeContext ()
QString type () const

Дружественные функции и классы

class Private

Дополнительные унаследованные члены

Защищённые функции, унаследованные от QCA::Algorithm

Algorithm ()
Algorithm (const QString &type, const QString &provider)

Подробное описание

Реализация протокола простого уровня аутентификации и безопасности (SASL).

Этот класс реализует протокол простого уровня аутентификации и безопасности, который описан в RFC2222 . См. http://www.ietf.org/rfc/rfc2222.txt.

Как следует из названия, SASL обеспечивает аутентификацию (например, «логин» в некоторой форме) для протокола, ориентированного на соединение, а также может обеспечивать защиту для последующего соединения.

Протокол SASL разработан с возможностью расширения с помощью ряда «механизмов», где механизм является фактическим методом аутентификации. Примеры механизмов включают Anonymous, LOGIN, Kerberos V4 и GSSAPI. Механизмы могут быть добавлены (возможно, без перезапуска серверного приложения) системным администратором.

Важно понимать, что SASL не принимает участие ни в работе сети, ни в работе протокола. Это означает, что SASL не имеет сведений, как клиент подключается к серверу, и не понимает фактический протокол приложения.

Примеры

saslclient.cpp и saslserver.cpp.

Описание перечислений

Error

enum QCA::SASL::Error

Возможные ошибки, которые могут возникнуть при использовании SASL.

ErrorInit Проблема с запуском SASL
ErrorHandshake Проблема во время процесса аутентификации
ErrorCrypt Проблема в любое время после

AuthCondition

enum QCA::SASL::AuthCondition

Возможные состояния ошибки аутентификации.

AuthFail Общая ошибка аутентификации
NoMechanism Нет совместимого/подходящего механизма аутентификации
BadProtocol Протокол неверен или отменён
BadServer Ошибка взаимной аутентификации сервера (только на стороне клиента)
BadAuth Ошибка аутентификации (только на стороне сервера)
NoAuthzid Ошибка авторизации (только на стороне сервера)
TooWeak Механизм слишком слабый для этого пользователя (только на стороне сервера)
NeedEncrypt Для использования механизма необходимо шифрование (только на стороне сервера)
Expired Срок действия кодовой фразы истёк, её необходимо сбросить (только на стороне сервера)
Disabled Учётная запись отключена (только на стороне сервера)
NoUser Пользователь не найден (только на стороне сервера)
RemoteUnavailable Удалённая служба, необходимая для аутентификации, исчезла (только на стороне сервера)

AuthFlags

enum QCA::SASL::AuthFlags

Значения флагов требований аутентификации.

ClientSendMode

enum QCA::SASL::ClientSendMode

Параметры режима для отправки на стороне клиента.

ServerSendMode

enum QCA::SASL::ServerSendMode

Параметры режима для отправки на стороне сервера.

Описание конструкторов и деструктора

SASL()

QCA::SASL::SASL (QObject * parent = nullptr, const QString & provider = QString() ) explicit

Стандартный конструктор.

Параметры

parent Родительский объект для этого SASL-соединения
provider Используемый криптопровайдер, если указан. Если аргумент не указан или указан как пустой, то приемлем любой криптопровайдер

Описание методов

reset()

void QCA::SASL::reset ()

Сбрасывает механизм SASL.

setConstraints() [1/2]

void QCA::SASL::setConstraints (AuthFlags f, SecurityLevel s = SL_None )

Задаёт ограничения подключения.

SASL поддерживает ряд требований аутентификации и ряд уровней безопасности. Этот метод позволяет указать требования для подключения.

Параметры

f Требования к аутентификации, которые обычно создаются с помощью бинарной функции ИЛИ (например, AllowPlain | AllowAnonymous)
s Уровень безопасности шифрования, если он используется. См. SecurityLevel для получения подробной информации о том, что предоставляет собой каждый уровень

Примеры

saslclient.cpp и saslserver.cpp.

setConstraints() [2/2]

void QCA::SASL::setConstraints (AuthFlags f, int minSSF, int maxSSF )

Это перегруженная функция, предоставленная для удобства. Она отличается от вышеупомянутого метода только тем, какие аргументы она принимает. Если нет конкретной причины для прямого указания коэффициента мощности, вероятно, следует использовать описанный выше метод.

Параметры

f Требования к аутентификации, которые обычно создаются с помощью бинарной функции ИЛИ (например, AllowPlain | AllowAnonymous)
minSSF Минимальный коэффициент силы безопасности, который требуется
maxSSF Максимальный коэффициент силы безопасности, который требуется

Примечание.

Факторы силы безопасности — это грубое приближение к длине ключа в функции шифрования (например, если защита обеспечивается с помощью простого DES, коэффициент силы безопасности будет равен 56).

setLocalAddress()

void QCA::SASL::setLocalAddress (const QString & addr, quint16port )

Задаёт локальный адрес.

Параметры

addr Адрес локальной части подключения
port Номер порта локальной части соединения

setRemoteAddress()

void QCA::SASL::setRemoteAddress (const QString & addr, quint16port )

Задаёт адрес второго участника.

Параметры

addr Адрес второй стороны соединения
port Номер порта второй стороны соединения

setExternalAuthId()

void QCA::SASL::setExternalAuthId (const QString & authid)

Задаёт идентификатор защищённого извне соединения.

Параметры

authid Идентификатор соединения

setExternalSSF()

void QCA::SASL::setExternalSSF (int strength)

Задаёт коэффициент силы безопасности для подключения с внешней защитой.

Параметры

strength Коэффициент надёжности соединения

startClient()

void QCA::SASL::startClient (const QString & service, const QString & host, const QStringList & mechlist, ClientSendMode mode = AllowClientSendFirst)

Инициализирует клиентскую сторону соединения.

startClient должен вызываться на стороне клиента соединения. clientStarted будет испущен после завершения операции.

Параметры

service Название службы
host Имя хоста на стороне клиента
mechlist Список механизмов, которые можно использовать
mode Режим для использования на стороне клиента

Примеры

saslclient.cpp.

startServer()

void QCA::SASL::startServer (const QString & service, const QString & host, const QString & realm, ServerSendMode mode = DisableServerSendLast)

Инициализирует серверную часть соединения.

startClient должен вызываться на серверной стороне соединения. serverStarted будет испущен после завершения операции.

Параметры

service Название службы
host Имя хоста на стороне сервера
realm Область для использования
mode Режим для использования на стороне сервера

Примеры

saslserver.cpp.

putServerFirstStep() [1/2]

void QCA::SASL::putServerFirstStep (const QString & mech)

Обрабатывает первый шаг в режиме сервера (server).

Этот метод нужно вызывать с помощью механизма, выбранного клиентом. Если есть начальные данные клиента, вместо него следует вызвать другую версию метода.

Параметры

mech Механизм для использования

Примеры

saslserver.cpp.

putServerFirstStep() [2/2]

void QCA::SASL::putServerFirstStep (const QString & mech, const QByteArray & clientInit )

Обрабатывает первый шаг в режиме сервера (server).

Этот метод нужно вызывать с помощью механизма, выбранного клиентом, и с исходными клиентскими данными. Если нет исходных данных клиента, вместо него следует вызвать другую версию метода.

Параметры

mech Механизм для использования
clientInit Исходные данные от клиента

putStep()

void QCA::SASL::putStep (const QByteArray & stepData)

Обрабатывает шаг аутентификации.

Метод нужно вызывать это с данными аутентификации, полученными из сети. Единственное исключение — это первый шаг в режиме сервера, и в этом случае необходимо вызвать putServerFirstStep.

Параметры

stepData Данные аутентификации из сети

Примеры

saslclient.cpp и saslserver.cpp.

mechanism()

QString QCA::SASL::mechanism () const

Возвращает выбранный механизм (client).

Примеры

saslclient.cpp.

mechanismList()

QStringList QCA::SASL::mechanismList () const

Возвращает список механизмов (server).

Примеры

saslserver.cpp.

realmList()

QStringList QCA::SASL::realmList () const

Возвращает список областей, если он доступен (client).

Примеры

saslclient.cpp.

ssf()

int QCA::SASL::ssf () const

Возвращает коэффициент надёжности соединения.

Примеры

saslclient.cpp и saslserver.cpp.

errorCode()

Error QCA::SASL::errorCode () const

Возвращает код ошибки.

Примеры

saslclient.cpp и saslserver.cpp.

authCondition()

AuthCondition QCA::SASL::authCondition () const

Возвращает причину сбоя аутентификации.

Примеры

saslclient.cpp и saslserver.cpp.

setUsername()

void QCA::SASL::setUsername (const QString & user)

Задаёт имя пользователя для использования при аутентификации.

Параметры

user Имя пользователя для использования

Примеры

saslclient.cpp.

setAuthzid()

void QCA::SASL::setAuthzid (const QString & auth)

Задаёт идетичность для авторизации для использования при проверке подлинности.

Параметры

auth Идентичность для авторизации

Примеры

saslclient.cpp.

setPassword()

void QCA::SASL::setPassword (const SecureArray & pass)

Задаёт пароль для использования при аутентификации.

Параметры

pass Пароль для использования

Примеры

saslclient.cpp.

setRealm()

void QCA::SASL::setRealm (const QString & realm)

Задаёт область для использования при аутентификации.

Параметры

realm Область для использования

Примеры

saslclient.cpp.

continueAfterParams()

void QCA::SASL::continueAfterParams ()

Продолжает переговоры после установки параметров (client).

Примеры

saslclient.cpp.

continueAfterAuthCheck()

void QCA::SASL::continueAfterAuthCheck ()

Продолжает согласование после проверки идентификаторов авторизации (сервер).

Примеры

saslserver.cpp.

bytesAvailable()

int QCA::SASL::bytesAvailable () const override virtual

Возвращает количество байтов, доступных для получения с помощью метода read() на стороне приложения.

Реализует QCA::SecureLayer.

bytesOutgoingAvailable()

int QCA::SASL::bytesOutgoingAvailable () const override virtual

Возвращает количесто байтов, доступных для чтения с помощью метода readOutgoing() на стороне сетевого взаимодействия.

Реализует QCA::SecureLayer.

write()

void QCA::SASL::write (const QByteArray & a) override virtual

Метод записывает незашифрованные данные в объект, реализующий интерфейс SecureLayer.

Обычно данный метод вызывается на стороне приложения.

Параметры

a Источник данных со стороны приложения

Реализует QCA::SecureLayer.

Примеры

saslclient.cpp и saslserver.cpp.

read()

QByteArray QCA::SASL::read () override virtual

Метод считывает расшифрованные данные из объекта, реализующего интерфейс SecureLayer.

Обычно данный метод вызывается на стороне приложения после получения сигнала readyRead().

Реализует QCA::SecureLayer.

Примеры

saslclient.cpp и saslserver.cpp.

writeIncoming()

void QCA::SASL::writeIncoming (const QByteArray & a) override virtual

Метод принимает закодированные (обычно зашифрованные) данные для обработки.

Обычно данный метод вызывается после получения информации из сетевого сокета, например, через использование метода QTcpSocket::readAll(). Чтение из сокета осуществляется после получения сигнала о том, что в нём доступны данные для чтения.

Параметры

a Массив ByteArray, из которого получаются данные со стороны сетевого взаимодействия

Реализует QCA::SecureLayer.

Примеры

saslclient.cpp.

readOutgoing()

QByteArray QCA::SASL::readOutgoing (int * plainBytes = nullptr) override virtual

Метод предоставляет закодированные (обычно зашифрованные) данные.

Обычно данный метод вызывается, чтобы получить данные для записи в сетевой сокет, например для передачи в QTcepSocker::write(). Данный метод обычно вызывается после получения сигнала readyReadOutgoing().

Параметры

plainBytes Количество прочитанных байтов

Реализует QCA::SecureLayer.

Примеры

saslclient.cpp и saslserver.cpp.

convertBytesWritten()

int QCA::SASL::convertBytesWritten (qint64encryptedBytes) override virtual

Преобразует уже записанные зашифрованные байты в байты простого текста.

Параметры

encryptedBytes Количество байтов для преобразования

Реализует QCA::SecureLayer.

Примеры

saslserver.cpp.

clientStarted

void QCA::SASL::clientStarted (bool clientInit, const QByteArray & clientInitData ) signal

Сигнал испускается, когда клиент был успешно запущен.

Параметры

clientInit True, если клиент должен отправить первоначальный ответ серверу
clientInitData Начальный ответ для отправки на сервер. Следует обратить внимание, что в SASL существует разница между пустым начальным ответом и отсутствием начального ответа, и поэтому, даже если clientInitData является пустым массивом, всё равно нужно отправить начальный ответ, если clientInit имеет значение true.

Примеры

saslclient.cpp.

serverStarted

void QCA::SASL::serverStarted () signal

Сигнал испускается после успешного запуска сервера.

Примеры

saslserver.cpp.

nextStep

void QCA::SASL::nextStep (const QByteArray & stepData) signal

Сигнал испускается, когда есть данные, которые необходимо отправить по сети для завершения следующего шага в процессе аутентификации.

Параметры

stepData Данные для отправки по сети

Примеры

saslclient.cpp и saslserver.cpp.

needParams

void QCA::SASL::needParams (const QCA::SASL::Params & params) signal

Сигнал испускается, когда клиенту требуются дополнительные параметры.

После получения этого сигнала приложение должно соответствующим образом установить требуемые значения параметров и затем вызвать continueAfterParams().

Параметры

params Параметры, которые требуются клиенту

Примеры

saslclient.cpp.

authCheck

void QCA::SASL::authCheck (const QString & user, const QString & authzid ) signal

Сигнал испускается, когда серверу необходимо выполнить проверку аутентификации.

Если пользователь и authzid действительны, следует вызвать continueAfterAuthCheck().

Параметры

user Идентификационное имя пользователя
authzid Имя пользователя для авторизации

Примеры

saslserver.cpp.

authenticated

void QCA::SASL::authenticated () signal

Сигнал испускается после завершения аутентификации.

Примеры

saslclient.cpp и saslserver.cpp.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.