exponenta event banner

matlab.net.http.Credentials класс

Пакет: matlab.net.http
Суперклассы: handle

Учетные данные для проверки подлинности HTTP-запросов

Описание

Credentials класс задает учетные данные проверки подлинности для отправки сообщения запроса. Укажите Credentials объект в HTTPOptions объект.

RequestMessage.send использует учетные данные для ответа на запросы аутентификации с серверов или прокси-серверов. Вызов аутентификации находится в AuthenticateField поле заголовка и определяет одну или несколько схем аутентификации, которые сервер или прокси принимает для удовлетворения запроса.

Поведение зависит от схемы аутентификации. В общем, MATLAB ® выполняет поиск вектора Credentials для объекта, который применяется к URI запроса и который поддерживает указанную схему аутентификации. Затем MATLAB повторно отправляет исходный запрос с соответствующими учетными данными в AuthorizationField заголовок. Если применяются несколько учетных данных, MATLAB использует наиболее конкретные Credentials объект для наиболее сильной схемы. При дублировании Credentials существуют объекты, то MATLAB использует первый.

Сведения о том, какие схемы аутентификации MATLAB реализует автоматически, см. в разделе AuthenticationScheme. Если серверу требуются другие схемы, или вы не предоставляете учетные данные для требуемой схемы, то ответное сообщение проверки подлинности возвращает в качестве кода кода 401 или 407. В этом случае необходимо реализовать соответствующий ответ самостоятельно.

Для схем, которые не требуют Username и Password свойства, такие как NTLM в Windows ®, можно использовать по умолчаниюCredentials объект. Дефолт Credentials имеет свойства по умолчанию или пустые свойства и применяется ко всем поддерживаемым схемам и URI. Учетные данные авторизации получены из данных, например, билетов Kerberos, которые хранятся в системе при входе в систему. Чтобы ограничить условия, при которых используется определенная схема, можно задать дополнительные свойства, такие как Область (Scope) и Область (Realm). Например, задайте эти значения, чтобы использовать NTLM для некоторых URL-адресов и Kerberos для других и отклонять запросы проверки подлинности от серверов, которые не соответствуют этим URL-адресам и схемам.

Для схем, требующих Username и Password свойства, если MATLAB аутентифицируется с помощью Credentials затем MATLAB сохраняет результаты в этом объекте. MATLAB может применять эти учетные данные к последующим запросам, не дожидаясь запроса аутентификации с сервера. Чтобы воспользоваться преимуществами ярлыка, предоставьте то же самое Credentials объект для последующих запросов в том же или другом HTTPOptions объекты.

Credentials объекты являются объектами обработки и внутреннего накопления информации о предыдущих успешных аутентификациях. Поэтому можно повторно использовать эту информацию для последующих сообщений. Если вставить этот объект в несколько HTTPOptions объекты, затем Credentials объект может обновляться при каждом использовании. При копировании Credentials используя его copy затем MATLAB копирует только заданные свойства, а не внутреннее состояние.

matlab.net.http.Credentials класс является handle класс.

Атрибуты класса

Sealed
true

Сведения об атрибутах класса см. в разделе Атрибуты класса.

Создание

Описание

пример

obj = matlab.net.http.Credentials(Name,Value) создает учетные данные HTTP с дополнительными свойствами, заданными одним или несколькими аргументами пары имя-значение. Name - имя свойства и Value - соответствующее значение. Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN. Для неопределенных свойств установлены значения по умолчанию.

Если этот конструктор вызывается без аргументов, то Credentials объект применяется к и, таким образом, разрешает аутентификацию для всех URI и всех схем аутентификации. Однако объект работает только для схем, для которых не требуется имя пользователя или пароль. Например, в Windows объект включает проверку подлинности NTLM и Kerberos, используя учетные данные зарегистрированного пользователя.

Свойства

развернуть все

Схемы аутентификации для учетных данных, указанных как вектор matlab.net.http.AuthenticationScheme объекты. Полный список поддерживаемых схем для каждой платформы см. в разделе AuthenticationScheme.

Если Scheme пустое (по умолчанию), то учетные данные применяются ко всем определенным схемам аутентификации.

Дополнительные сведения об аутентификации см. в разделах Проверка подлинности сервера и Проверка подлинности прокси-сервера.

Если Scheme имеет значение Basic только, тогда эти учетные данные могут быть применены к запросу независимо от того, запрашивает ли сервер аутентификацию. A Basic- только схема позволяет избежать дополнительной передачи в оба конца в ответ на запрос аутентификации. Однако, если сервер не требует Basic аутентификация, эта схема излишне раскрывает Username и Password для сервера.

Если это свойство включает какую-либо схему помимо или в дополнение к Basic, или если Scheme пуст (что позволяет использовать все схемы), тогда MATLAB не отправляет информацию авторизации в первом сообщении, к которому применяются эти учетные данные. MATLAB ожидает ответа сервера на запрос, например, в поле WWW-Authenticate. Ответ сообщает MATLAB, какие схемы аутентификации принимает сервер. Затем MATLAB выбирает самую сильную схему, перечисленную среди Credentials, которые также соответствуют Scope и Realm заданные свойства, если таковые имеются. Последующие сообщения на тот же сервер с тем же Scope включать соответствующую информацию авторизации без предварительного запроса.

Атрибуты:

GetAccess
public
SetAccess
public

URI, к которым применяются учетные данные, указаны как вектор matlab.net.URI объекты или строки или векторы символов. Строки должны быть приемлемыми для URI конструктора или формы host/path/....

Пустое Scope значение или пустое Host или Path в этом векторе соответствует всем Host или Path свойства. Не уходить Scope пусто, если Scheme имеет значение Basic только, если вы не имеете доступа только к доверенным серверам. Эта комбинация настроек отправляет Username и Password на любой сервер, к которому вы имеете доступ с помощью HTTPOptions содержащие их Credentials.

MATLAB сравнивает значения в Scope с URI сообщения запроса, чтобы определить, применяются ли эти учетные данные. Учетные данные применяются в том случае, если URI запроса ссылается на один и тот же узел по пути или глубже одного из URI в этом Scope. A Scope содержит URI, в котором имя хоста без пути применяется ко всем путям на этом хосте.

Например, mathworks.com имя хоста в Scope соответствует запросу на www.mathworks.com и anything.mathworks.com. A mathworks.com/products/stateflow URI соответствует запросу на www.mathworks.com/products/stateflow/features но не для www.mathworks.com/products. /products путь не на или глубже, чем /products/stateflow.

Только Host, Port, и Path свойства Scope Используются URI. Как правило, указывается только Host имя, например, www.mathworks.com. Если известно, что учетные данные необходимы только для некоторых путей в пределах хоста, добавьте Path или часть пути.

Атрибуты:

GetAccess
public
SetAccess
public

Области аутентификации для учетных данных, указанные как строковый массив, символьный вектор или массив ячеек символьных векторов, содержащих регулярные выражения, описывающие области для учетных данных. Значение по умолчанию пустое, что соответствует всем сферам. Если какое-либо значение в этом векторе является пустой строкой, то оно соответствует только пустой или неуказанной Realm. Привязка регулярного выражения к началу или концу проверки подлинности Realm строка, включить ^ или $ соответствующие символы.

A Realm содержит текст для отображения, чтобы пользователь знал, какое имя и пароль ввести. Сервер определяет Realm в AuthenticateField из ResponseMessage. В общем, оставьте это свойство пустым. Использовать Realm если сервер требует различных значений входа для разных URI и требуется указать различные программные учетные данные для разных областей на одном и том же сервере. Если запрашивается имя и пароль, не устанавливайте это свойство. Вместо этого отобразите Realm свойство из AuthenticateField в приглашении, чтобы пользователь знал, какие учетные данные ввести.

MATLAB сравнивает выражения в Realm против аутентификации Realm в AuthenticateField чтобы определить, применяются ли эти учетные данные. Как только MATLAB выполняет успешную аутентификацию с использованием одной из этих областей, MATLAB кэширует информацию об аутентификации в Credentials. Последующий запрос на хост и путь к ним Credentials использует эту кэшированную информацию для проверки подлинности. Это позволяет избежать накладных расходов на вызов аутентификации или вызов GetCredentialsFcn функция.

Атрибуты:

GetAccess
public
SetAccess
public

Имя пользователя для схем аутентификации, указанное как строка или символьный вектор. Это свойство применяется только к схемам, которые требуют явного Username и Password, а не для схем, которые получают ваши учетные данные из системы.

Если установить Username и Password свойства для любой строки (включая пустую), затем Username используется для аутентификации любого запроса, для которого применяются эти учетные данные, если GetCredentialsFcn указывается. Если для этого свойства задано значение [], то необходимо указать GetCredentialsFcn или не выполняется попытка проверки подлинности.

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

Атрибуты:

GetAccess
public
SetAccess
public

Пароль для схем аутентификации, указанный как строка или символьный вектор. Это свойство применяется только к схемам, которые требуют явного Username и Password, а не для схем, которые получают ваши учетные данные из системы.

Если установить Username и Password свойства для любой строки (включая пустую), затем Password используется для аутентификации любого запроса, для которого применяются эти учетные данные, если GetCredentialsFcn указывается. Если для этого свойства задано значение [] и нет GetCredentialsFcn свойство, то пароль не предоставляется.

Если вы не хотите встраивать пароль в свой код, оставьте это свойство пустым и укажите GetCredentialsFcn который запрашивает у пользователя пароль или получает его из другого источника.

Атрибуты:

GetAccess
public
SetAccess
public

Функция, возвращающая Username и Password для аутентификации, указанный как дескриптор функции. Это свойство применяется только к схемам, требующим указания имени пользователя и пароля.

MATLAB вызывает GetCredentialsFcn для получения имени и пароля, используемых для ответа на запрос аутентификации. MATLAB игнорирует Username или Password свойства в Credentials.

Подпись функции для GetCredentialsFcn является:

[username,password] = GetCredentialsFcn(cred,req,resp,authInfo,prevUsername,prevPasswd)

где аргументы указаны как:

  • cred - Справиться с этим Credentials объект

  • req - Последнее отправленное сообщение запроса, которое вызвало этот вызов проверки подлинности.

  • resp - Ответное сообщение от сервера, содержащее AuthenticateField. Если cred.Scheme свойство имеет значение Basic как единственный вариант, затем resp аргумент может быть пустым.

  • authInfo (необязательно) - один элемент в векторе AuthInfo объекты, возвращенные AuthenticateField.convert метод, который MATLAB выбирает для соответствия этим учетным данным. Каждый объект в этом массиве имеет Scheme и, по крайней мере, Realm параметр.

  • prevUsername, prevPasswd (необязательно) - первоначально пустые аргументы. Если nonempty, то эти аргументы являются значениями GetCredentialsFcn функция, возвращенная в предыдущем вызове, но отклоненная сервером. Если вы не запрашиваете учетные данные, сравните эти значения с теми, которые вы планируете вернуть. Если они совпадают, то аутентификация, скорее всего, снова завершится неуспешно. Набор username кому [] таким образом, MATLAB возвращает ошибку аутентификации. Если пользователю предлагается ввести учетные данные, указывать эти аргументы не требуется. Пользователь может повторно ввести те же или другие учетные данные.

  • username - имя пользователя для использования. Если серверу требуется только пароль, а не имя пользователя, установите username в пустую строку (''). Если username значение равно [], то аутентификация не удалась.

  • password - Пароль для использования.

Путем реализации GetCredentialsFcn функцию и выход из Username и/или Password свойства в Credentials пустой, вы можете реализовать запрос на получение этих значений от пользователя, не встраивая их в свою программу. В приглашении отобразите URI запроса или authInfo.Realm параметр. Другим удобным шаблоном является установка Username и запрашивать только пароль. Ваш запрос может отображать существующие Username, или prevUsername, если установлено, и предоставить пользователю возможность изменить его.

GetCredentialsFcn может проверить учетные данные в cred и поля заголовка в сообщениях запроса и ответа, чтобы определить, к какому ресурсу осуществляется доступ. Таким образом, функция может запрашивать у пользователя правильные учетные данные. Как правило, запрос должен отображаться authInfo.Realm для информирования пользователя о контексте аутентификации.

С момента Credentials является классом дескриптора, GetCredentialsFcn функция сохраняет имя пользователя и пароль в cred аргумент. Этот объект можно использовать в будущих запросах без повторного вызова функции. MATLAB сохраняет успешные имена пользователей и пароли внутри системы, чтобы применять их к будущим запросам. Однако MATLAB не всегда может определить, применяются ли одно и то же имя пользователя и пароль к различным запросам с использованием этих учетных данных.

Если GetCredentialsFcn возвращает пустой массив [] (не пустая строка '') для имени пользователя, то аутентификация должна быть отклонена, и MATLAB возвращает сбой аутентификации сервера в ответном сообщении вызывающему абоненту RequestMessage.send. Это поведение подходит, если вы реализуете запрос пользователя и пользователь нажимает кнопку «Отмена» в запросе. Если prevUsername и prevPasswd идентичны имени и паролю, которые вы вернете, тогда при программном вводе имени и пароля вы должны вернуть []. Это значение указывает на то, что ваши учетные данные не принимаются и у вас нет альтернативного выбора. В противном случае может возникнуть бесконечный цикл, вызывающий GetCredentaislFcn многократно выполнять функции.

Атрибуты:

GetAccess
public
SetAccess
public

Типы данных: function_handle

Примеры

свернуть все

Создайте учетные данные, отправляемые только на соответствующий сервер.

import matlab.net.http.Credentials
scope = URI('http://my.server.com');
creds = Credentials('Username','John','Password','secret','Scope',scope);
options = HTTPOptions('Credentials',creds);

Отправьте сообщение. Если сервер требует аутентификации, то транзакция предполагает обмен несколькими сообщениями.

resp = RequestMessage().send(scope,options);
...

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

resp = RequestMessage().send(scope,options)

Создайте функцию, которая запрашивает учетные данные, используя Username свойство из Credentials по умолчанию. MATLAB вызывает эту функцию для получения имени и пароля, которые будут использоваться для ответа аутентификации.

Создать getMyCredentials функция.

function [u,p] = getMyCredentials(cred,req,resp,authInfo)
prompt = ["Username:" "Password:"];
defAns = [cred.Username ""];
title = "Credentials needed for " + getParameter(authInfo,'realm');
answer = inputdlg(prompt, title, [1, 60], defAns, 'on');
if isempty(answer)
    u = [];
    p = [];
else
    u = answer{1};
    p = answer{2};
end
end

Создайте сообщение запроса.

cred = matlab.net.http.Credentials('GetCredentialsFcn',@getMyCredentials);
options = matlab.net.http.HTTPOptions('Credentials',cred);
req = matlab.net.http.RequestMessage;

Отправить сообщение httpbin.org.

uri = 'httpbin.org/basic-auth/user/passwd';
resp = req.send(uri,options)

Введите любой текст. Чтобы выйти, нажмите кнопку Отмена.

Представлен в R2016b