主要内容

matlab.net.http.Credentials类

包:matlab.net.http
超类:处理

用于验证HTTP请求的凭据

描述

凭证类指定用于发送请求消息的身份验证凭据。指定一个凭证对象在一个HTTPOptions对象。

RequestMessage.send方法使用凭据来响应来自服务器或代理的身份验证挑战。身份验证的挑战是AuthenticateField报头字段,并指定服务器或代理为满足请求而接受的一个或多个身份验证方案。

行为取决于认证方案。一般来说,MATLAB®求向量凭证对象,该对象应用于请求URI并支持指定的身份验证方案。金宝app然后MATLAB重新发送原始请求,并在AuthorizationField头。如果多重凭证适用,那么MATLAB使用最具体的凭证对象为最强的方案。如果复制凭证对象存在时,MATLAB使用第一个。

要查看MATLAB自动实现的认证方案,请参见AuthenticationScheme.如果服务器需要其他模式,或者您没有提供所需模式的凭据,那么身份验证响应消息将返回StatusCode401或407。在这种情况下,您必须自己实现适当的响应。

对于那些不需要用户名密码属性,例如Windows上的NTLM®,则可以使用默认值凭证对象。一个默认的凭证对象具有默认或空属性,并应用于所有受支持的模式和uri。金宝app您的授权凭据来自于登录时存储在系统中的信息,如Kerberos票据。要约束使用特定方案的条件,可以指定其他属性,例如范围领域.例如,将这些值设置为对某些url使用NTLM,对其他url使用Kerberos,并拒绝来自不匹配这些url和方案的服务器的身份验证请求。

对于需要用户名密码属性,如果MATLAB验证与凭证对象,MATLAB将结果保存在该对象中。MATLAB可以将这些凭证应用于后续请求,而无需等待来自服务器的身份验证挑战。为了利用捷径,提供同样的东西凭证对象对相同或其他的后续请求HTTPOptions对象。

凭证对象是句柄对象,并在内部积累有关先前成功的身份验证的信息。因此,您可以为后续消息重用该信息。如果您将该对象插入多个HTTPOptions对象,那么凭证对象可能会在每次使用时更新。如果你复制凭证使用它的复制方法,则MATLAB只复制您设置的可见属性,而不复制内部状态。

matlab.net.http.Credentials类是一个处理类。

类属性

密封
真正的

有关类属性的信息,请参见类属性

创建

描述

例子

obj = matlab.net.http.Credentials(名称、值)使用一个或多个名称-值对参数指定的附加属性创建HTTP凭据。的名字属性名和价值为对应值。可以以任意顺序指定多个名称-值对参数Name1, Value1,…,的家.未指定的属性被设置为默认值。

如果不带参数调用此构造函数,则凭证对象应用于并因此允许对所有uri和所有身份验证方案进行身份验证。但是,该对象仅适用于不需要用户名或密码的方案。例如,在Windows上,该对象使用登录用户的凭据启用NTLM和Kerberos身份验证。

属性

全部展开

的向量指定凭据的身份验证方案matlab.net.http.AuthenticationScheme对象。有关每个平台支持的方案的完整列表,请参阅金宝appAuthenticationScheme

如果计划为空(默认),则凭证应用于所有定义的身份验证方案。

有关身份验证的更多信息,请参见服务器身份验证代理服务器认证

如果计划被设置为基本只有这样,无论服务器是否请求身份验证,这些凭据都可以应用到请求。一个基本-only方案避免了响应身份验证挑战的额外往返。但是,如果服务器不需要基本身份验证,此方案不必要地公开用户名密码属性设置为服务器。

如果该属性包含除基本,或者如果计划为空(允许所有方案),则MATLAB不会在这些凭据应用到的第一个消息中发送任何授权信息。MATLAB等待服务器响应一个挑战,例如WWW-Authenticate字段。响应告诉MATLAB服务器接受什么身份验证方案。然后MATLAB选择其中最强的方案凭证,也与范围领域您指定的属性(如果有)。随后的消息发送到相同的服务器范围包含适当的授权信息,而不需要首先提出质疑。

属性:

GetAccess
公共
SetAccess
公共

所应用凭证的uri,指定为的向量matlab.net.URI对象、字符串或字符向量。属性的字符串必须是可接受的URI构造函数或窗体的主机/道路/…

一个空范围值,或为空宿主路径在这个向量中匹配所有宿主路径属性。不要离开范围空如果计划被设置为基本只有,除非您只访问受信任的服务器。这种设置组合发送用户名密码来访问任何服务器HTTPOptions包含这些凭证

用MATLAB比较范围使用请求消息URI来确定这些凭据是否适用。如果请求URI在路径中引用的是同一主机,则需要使用凭据范围.一个范围包含一个URI来命名一个没有路径的主机适用于该主机上的所有路径。

例如,一个mathworks.com的主机名范围将请求匹配到www.tatmou.comanything.mathworks.com.一个mathworks.com/下载188bet金宝搏products/stateflowURI匹配到的请求www.tatmou.com/下载188bet金宝搏products/stateflow/features而不是www.tatmou.com/下载188bet金宝搏products.的/下载188bet金宝搏产品路径不在/下载188bet金宝搏产品/ stateflow

只有宿主港口,路径的属性范围使用uri。通常你只指定宿主名称,如www.tatmou.com.如果您知道仅对主机中的某些路径需要凭据,则添加路径或者路径的一部分。

属性:

GetAccess
公共
SetAccess
公共

凭证的身份验证领域,指定为字符串数组、字符向量或字符向量的单元数组,其中包含描述凭证领域的正则表达式。默认值是空的,它匹配所有领域。如果该向量中的任何值是空字符串,则它只匹配空或未指定的值领域.将正则表达式锚定到身份验证的开始或结束领域字符串,包括适当的角色。

一个领域包含要显示的文本,以便用户知道要输入的名称和密码。服务器指定领域在一个AuthenticateFieldResponseMessage.通常,将此属性保留为空。使用一个领域当服务器需要不同uri的不同登录值时,您希望以编程方式为同一服务器上的不同领域指定不同的凭据。如果提示输入名称和密码,则不要设置此属性。相反,显示领域财产的AuthenticateField以便用户知道要输入哪个凭据。

在MATLAB中比较表达式领域对身份验证领域AuthenticateField以确定这些凭据是否适用。一旦MATLAB使用这些领域中的一个成功地进行了身份验证,MATLAB就会缓存关于身份验证的信息凭证.对主机的后续请求和应用于这些请求的路径凭证使用此缓存信息进行身份验证。这避免了身份验证挑战或调用的开销GetCredentialsFcn函数。

属性:

GetAccess
公共
SetAccess
公共

身份验证方案的用户名,以字符串或字符向量的形式指定。此属性仅适用于需要显式配置的模式用户名密码而不是那些从系统中获取你的证书的计划。

如果你设置用户名密码属性为任何字符串(包括空字符串),则用户名用于对这些凭据应用的任何请求进行身份验证,除非GetCredentialsFcn都是确定的。如果将此属性设置为[],则必须指定GetCredentialsFcn或者不尝试身份验证。

如果您不想在代码中嵌入用户名,则将此属性保留为空,并指定GetCredentialsFcn提示用户输入名称或从其他来源获取名称。

属性:

GetAccess
公共
SetAccess
公共

身份验证方案的密码,指定为字符串或字符向量。此属性仅适用于需要显式配置的模式用户名密码而不是那些从系统中获取你的证书的计划。

如果你设置用户名密码属性为任何字符串(包括空字符串),则密码用于对这些凭据应用的任何请求进行身份验证,除非GetCredentialsFcn都是确定的。如果将此属性设置为[]没有GetCredentialsFcn属性,则不提供密码。

如果您不想在代码中嵌入密码,则将此属性保留为空,并指定GetCredentialsFcn提示用户输入密码或从其他来源获取密码。

属性:

GetAccess
公共
SetAccess
公共

函数返回用户名密码对于身份验证,指定为函数句柄。此属性仅适用于需要指定用户名和密码的方案。

MATLAB调用GetCredentialsFcn函数获取用于身份验证响应的名称和密码。MATLAB忽略了用户名密码属性凭证

的函数签名GetCredentialsFcn是:

(用户名、密码)= GetCredentialsFcn(信誉、点播、resp、authInfo prevUsername, prevPasswd)

其中参数指定为:

  • 信誉-处理这个凭证对象

  • 要求的事情-引发此身份验证挑战的最近发送的请求消息。

  • 分别地—来自服务器的响应消息,包含一个AuthenticateField.如果信誉。计划属性设置为基本作为唯一的选择,然后分别地参数可能为空。

  • authInfo(可选)-向量中的一个元素AuthInfo对象返回的AuthenticateField.convertMATLAB选择匹配这些凭证的方法。这个数组中的每个对象都有计划至少有一个领域参数。

  • prevUsernameprevPasswd(可选)-初始参数为空。如果非空,则这些参数是GetCredentialsFcn函数在前一个调用中返回,但被服务器拒绝。如果您没有提示输入凭据,那么将这些值与您计划返回的值进行比较。如果它们是相同的,那么身份验证很可能再次失败。集用户名[],以便MATLAB返回验证失败。如果提示用户输入凭据,则不需要指定这些参数。用户可以选择重新输入相同或不同的凭据。

  • 用户名—要使用的用户名。如果服务器只需要密码,而不需要用户名,则设置用户名为空字符串('').如果用户名值是[],则身份验证失败。

  • 密码—使用密码。

通过实现GetCredentialsFcn函数,并离开用户名和/或密码属性凭证如果为空,则可以实现提示从用户获取这些值,而无需将它们嵌入到您的程序中。在提示符中,显示请求URI或authInfo。领域参数。另一个方便的模式是设置用户名属性并提示仅输入密码。您的提示符可以显示现有的用户名,或prevUsername,并向用户提供更改它的选项。

GetCredentialsFcn函数中检查凭据信誉参数和请求和响应消息中的报头字段,以确定正在访问哪个资源。因此,该函数可以提示用户输入正确的凭据。一般来说,应该显示提示符authInfo。领域让用户知道身份验证的上下文。

凭证是句柄类吗GetCredentialsFcn函数将用户名和密码保存在信誉论点。您可以在以后的请求中使用该对象,而无需再次调用该函数。MATLAB在内部保存成功的用户名和密码,以应用于未来的请求。然而,MATLAB可能并不总是能够确定使用这些凭据是否相同的用户名和密码适用于不同的请求。

如果GetCredentialsFcn返回空数组[](不是空字符串''),则应该拒绝身份验证,MATLAB在响应消息中将服务器身份验证失败返回给调用者RequestMessage.send.如果您实现了一个用户提示,并且用户在提示中单击了取消,则此行为是适当的。如果prevUsernameprevPasswd与您将返回的名称和密码相同,那么当您以编程方式提供名称和密码时,您必须返回[].此值表示不接受您的凭据,您没有其他选择。否则,可能会发生无限循环调用GetCredentaislFcn重复功能。

属性:

GetAccess
公共
SetAccess
公共

数据类型:function_handle

例子

全部折叠

创建仅发送到适当服务器的凭据。

进口matlab.net.http.Credentials范围= URI (“http://my.server.com”);信誉=凭证(“用户名”“约翰。”“密码”“秘密”“范围”、范围);选择= HTTPOptions (“凭证”、信誉);

发送消息。如果服务器需要身份验证,则事务涉及多个消息的交换。

resp = RequestMessage () .send(范围、选择);...

接下来,重用包含相同凭据的选项。由于已经成功地使用了凭据,因此该事务需要一条消息。

resp = RequestMessage () .send(范围、选项)

属性创建一个提示输入凭据的函数用户名财产的凭证对象作为默认值。MATLAB调用此函数以获取用于身份验证响应的名称和密码。

创建getMyCredentials函数。

函数[u,p] = getMyCredentials(cred,req,resp,authInfo) prompt = [/ cn] / /修改密码"用户名:""密码:"];defAns =[信誉。用户名""];title =“所需证书”+ getParameter (authInfo,“领域”);答案= inputdlg(prompt, title, [1,60], defAns,)“上”);如果[] = [];p = [];其他的u =回答{1};p =回答{2};结束结束

创建请求消息。

信誉= matlab.net.http.Credentials (“GetCredentialsFcn”, @getMyCredentials);选择= matlab.net.http.HTTPOptions (“凭证”、信誉);要求= matlab.net.http.RequestMessage;

将消息发送给httpbin.org

uri =“httpbin.org/basic-auth/user/passwd”;resp = req.send (uri,选项)

输入任何文本。退出,选择取消

介绍了R2016b