matlab.net.http.Credentials class

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

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

Описание

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

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

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

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

Для схем, которые не требуют Username и Password свойства, такие как NTLM на Windows®, можно использовать Credentials по умолчанию объект. Credentials по умолчанию объект имеет или пустые свойства по умолчанию и применяется ко всем поддерживаемым схемам и URIs. Ваши учетные данные авторизации прибывают из информации, такой как билеты Kerberos, которые хранятся в вашей системе, когда вы входите в систему. Чтобы ограничить условия, при которых используется конкретная схема, можно задать дополнительные свойства, такие как Осциллограф и Область. Например, установите эти значения, чтобы использовать 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 объект применяется и таким образом разрешает аутентификацию для всего URIs и всех схем аутентификации. Однако объект работает только на схемы, которые не требуют имени пользователя или пароля. Например, на Windows, объект включает NTLM и аутентификацию Kerberos с помощью учетных данных зарегистрированного пользователя.

Свойства

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

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

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

Для получения дополнительной информации об аутентификации, смотрите Аутентификацию Аутентификации сервера и Прокси-сервера.

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

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

Атрибуты:

GetAccess
public
SetAccess
public

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

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

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

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

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

Атрибуты:

GetAccess
public
SetAccess
public

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

Realm содержит текст, чтобы отобразиться так, чтобы пользователь знал что имя и пароль войти. Сервер задает Realm в AuthenticateField из ResponseMessage. В общем случае оставьте это свойство пустым. Используйте Realm когда сервер требует различных значений входа в систему для различного URIs, и вы хотите задать программно различные учетные данные для различных областей на том же сервере. Если вы запрашиваете имя и пароль, не устанавливайте это свойство. Вместо этого отобразите 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, если установлено, и дают пользователю опцию, чтобы изменить его.

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.

Введенный в R2017b