文档

matlab.net.http.Credentials类

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

用于验证HTTP请求的凭据

描述

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

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

行为取决于认证方案。一般来说,MATLAB®搜索向量凭证对象用于应用于请求URI并支持指定的身份验证方案。金宝appMATLAB然后重新发送带有适当凭证的原始请求AuthorizationField头。如果应用多个凭证,则MATLAB使用最特定的凭证凭证对象为最强的方案。如果复制凭证对象存在时,MATLAB使用第一种方法。

MATLAB只实现基本消化身份验证方案。如果服务器需要其他方案,或者您没有为所需的方案提供凭据,那么身份验证响应消息将返回一个StatusCode401或407的对象。在这种情况下,您必须自己实现适当的响应。

验证成功后,MATLAB将信息保存在凭证对象。如果在对同一服务器的后续请求中应用这些凭据,则MATLAB不会等待来自服务器的身份验证挑战。要应用凭据,请提供相同的凭据凭证对象。

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

建设

例子

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

属性

全部展开

的向量指定的凭据的身份验证方案matlab.net.http.AuthenticationScheme对象。默认值为AuthenticationScheme。基本AuthenticationScheme。消化.如果计划为空,则凭据应用于所有身份验证方案。

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

如果其中一个选项是消化或者,如果计划为空,则发送这些凭据可能应用的第一个消息时不带授权报头字段。选项选择消息范围属性和请求URI。这些凭证仅在服务器响应挑战后使用,如果范围领域属性匹配URI和服务器挑战。

的向量指定的凭据应用的urimatlab.net.URI对象或字符串或字符向量。对象必须接受字符串URI构造函数或窗体的主机/道路/…

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

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

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

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

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

一个领域包含要显示的文本,以便用户知道要输入的名称和密码。服务器指定领域在一个AuthenticateField.使用一个领域当服务器为不同的uri要求不同的登录值,并且您希望通过编程方式为同一服务器上的不同领域指定不同的凭据时。如果提示输入名称和密码,请不要设置此属性。相反,显示领域属性中的AuthenticateField,以便用户知道要输入哪些凭据。

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

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

密码基本消化身份验证方案,指定为字符串或字符向量。使用密码属性来验证应用这些凭据的任何请求,除非GetCredentialsFcn属性已指定。如果密码值是[],则不提供密码。

函数返回用户名密码用于身份验证,指定为函数句柄。MATLAB调用GetCredentialsFcn函数获取用于身份验证响应的名称和密码。MATLAB忽略了用户名密码属性凭证

的函数签名GetCredentialsFcn是:

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

其中参数被指定为:

  • 信誉-这个的句柄凭证对象

  • 要求的事情-最后一次发出该认证请求的请求消息。

  • 分别地-来自服务器的响应消息,包含AuthenticateField.如果信誉。计划属性设置为only基本,则分别地参数可能为空。

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

  • prevUsernameprevPasswd(可选)-初始参数为空。的值GetCredentialsFcn函数在前一次调用中返回,服务器不接受该函数。如果您没有提示输入凭据,那么将这些值与您计划返回的值进行比较。如果相同,则设置用户名[]表示认证失败。如果提示用户输入凭据,则不需要指定这些参数。

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

  • 密码—使用密码。

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

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

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

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

数据类型: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) u = credit . username;提示{1}=的用户名:;提示{2}=的密码:;defAns = {char(u),};标题= [“需要的证书”char (getParameter (authInfo,“领域”)));answer = inputdlg(prompt, title, [1,60], defAns,“上”);如果Isempty (answer) u = [];P = [];其他的U = answer{1};P = answer{2};结束结束

创建请求消息。

credd = matlab.net.http.证书(“GetCredentialsFcn”, @getMyCredentials);选项= matlab.net.http.HTTPOptions(“凭证”、信誉);req = matlab.net.http.RequestMessage;

将讯息发送至httpbin.org

uri =“httpbin.org/basic-auth/user/passwd”;Resp = req.send(uri,options)

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

复制语义

句柄。要了解句柄类如何影响复制操作,请参见复制对象

凭证对象是处理对象,并在内部积累关于先前成功的身份验证的信息,以便您可以在后续消息中重用这些信息。如果您将此对象插入多个HTTPOptions对象,那么凭证可以在每次使用时进行更新。如果你复制凭证使用它的复制方法,那么MATLAB只复制您设置的可见属性,而不复制内部状态。

在R2016b中引入

这个话题有用吗?