matlab.net.http.Credentials class

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

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

Описание

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

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

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

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

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

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

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

The 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 узла без пути, применяется ко всем путям на этом узле.

Для примера, a 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. The /products путь не на или глубже /products/stateflow.

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

Атрибуты:

GetAccess
public
SetAccess
public

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

A Realm содержит текст для отображения, чтобы пользователь знал, какие имя и пароль вводить. Сервер задает Realm в AuthenticateField a 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 (необязательно) - Первоначально пустые аргументы. Если он не пуст, то эти аргументы являются значениями GetCredentialsFcn функция, возвращенная в предыдущем вызове, но отклоненная сервером. Если вы не запрашиваете учетные данные, сравните эти значения с теми, которые вы планируете вернуть. Если они те же самые, то аутентификация, вероятно, повторится неудача. Задайте username на [] чтобы MATLAB вернул отказ аутентификации. Если вы запрашиваете у пользователя учетные данные, то вам не нужно указывать эти аргументы. Пользователь может выбрать повторный ввод тех же или других учетных данных.

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

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

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

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

Начиная с Credentials является классом handle, 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)

Введите любой текст. Чтобы выйти, выберите Cancel.

Введенный в R2016b