Rest 自定义授权HTTP头

Rest 自定义授权HTTP头,rest,http,http-headers,authorization,restapi,Rest,Http,Http Headers,Authorization,Restapi,当客户端向API发送请求时,我需要对其进行身份验证。客户机有一个API令牌,我正在考虑使用标准的Authorization头将令牌发送到服务器 通常,此标题用于Basic和Digest身份验证。但我不知道是否允许自定义此标头的值并使用自定义身份验证方案,例如: Authorization: Token 1af538baa9045a84c0e889f672baf83ff24 你会推荐这个吗?或者有更好的方法发送令牌吗?您可以创建自己的自定义身份验证模式,使用授权:头-例如,这就是工作原理 作为一

当客户端向API发送请求时,我需要对其进行身份验证。客户机有一个API令牌,我正在考虑使用标准的
Authorization
头将令牌发送到服务器

通常,此标题用于
Basic
Digest
身份验证。但我不知道是否允许自定义此标头的值并使用自定义身份验证方案,例如:

Authorization: Token 1af538baa9045a84c0e889f672baf83ff24

你会推荐这个吗?或者有更好的方法发送令牌吗?

您可以创建自己的自定义身份验证模式,使用
授权:
头-例如,这就是工作原理

作为一般规则,如果服务器或代理不理解标准头的值,它们将忽略这些值。创建自己的标题键常常会产生意想不到的结果——许多代理会用自己无法识别的名称删除标题

话虽如此,使用cookies传输令牌可能是一个更好的主意,而不是
授权:
头,原因很简单,cookies被明确设计为携带自定义值,然而HTTP的内置auth方法的规范实际上并没有说明这两种方法中的任何一种——如果您想确切地看到它所说的话


关于这一点的另一点是,许多HTTP客户端库都内置了对摘要和基本身份验证的支持,但当试图在header字段中设置原始值时,可能会使操作更加困难,然而,它们都将提供对cookie的简单支持,并允许cookie中或多或少的任何值。

我建议不要对自定义方案名称使用HTTP身份验证。如果你觉得你有一些通用的东西,你可以定义一个新的方案。有关详细信息,请参阅。

这有点过时,但可能还有其他人在寻找同一问题的答案。您应该考虑哪些保护空间对您的API有意义。例如,您可能希望识别和验证客户端应用程序对API的访问,以将它们的使用限制在已知的、已注册的客户端应用程序上。在这种情况下,您可以使用
Basic
身份验证方案,将客户端标识符作为用户id,将客户端共享密钥作为密码。您不需要专有的身份验证方案,只需清楚地标识客户端为每个保护空间使用的身份验证方案即可。我希望每个保护空间只有一个,但HTTP标准允许在每个WWW Authenticate标头响应上使用多个身份验证方案,并且在每个响应中使用多个WWW Authenticate标头;对于API客户端来说,这会混淆要使用哪些选项。保持一致和清晰,然后将使用您的API。

如果是跨源请求,请阅读以下内容:

我遇到了这种情况,起初我选择使用
授权
标题,后来在遇到以下问题后将其删除

授权
标题被视为自定义标题。因此,如果使用
自动化
标题集发出跨域请求,浏览器首先发送飞行前请求。飞行前请求是OPTIONS方法发出的HTTP请求,该请求从请求中删除所有参数。您的服务器需要使用
Access Control Allow Headers
头响应,该头具有自定义头的值(
Authorization
Header)

因此,对于客户端(浏览器)发送的每个请求,浏览器都会发送一个额外的HTTP请求(选项)。这降低了API的性能。
您应该检查添加此选项是否会降低性能。作为一种解决方法,我使用http参数发送令牌,我知道这不是最好的方法,但我不能牺牲性能。

请在postman上尝试以下内容:-

在页眉部分,示例为我工作


授权:JWT6.2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 X2LKIJP02.在中国的一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,即时通讯2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 w1vdmuioltdfswiaWF0IjoxNDk1MzUwNzA5LCJleHAiOjE0OTUzNjA3ODl9.BkyB0LjKB4FIsCtnM5FcpcBLvKed_j7rCCxZddwiYnU

很高兴听到OAuth就是这样工作的。我不确定使用cookies会使客户端实现更简单。除非您的客户机是浏览器,否则在客户机中使用cookie的规则(路径、过期等)要比只记住设置头字段更复杂。大多数客户端库使设置正确的标题变得相当简单。@ThomasWatson虽然我不能在cookie作用域点上与您意见相左,但在这里这并不重要。HTTP身份验证(使用
授权:
头)的范围是每个域。这意味着,如果将cookie的域设置为“This domain”,并将路径设置为“/”,则其作用域将与HTTP auth的作用域相同。然而,这实际上取决于您——但是正如Julian Reschke指出的,您可能不应该定义一个新的身份验证方案,除非您
觉得您有一些