hapi.js 身份验证方案中使用的身份验证工件是什么?
What are authentication artifacts used for in hapi.js authentication schemes?
在 hapi.js API 中,他们指定身份验证方案也可以 return 工件作为凭据对象的一部分。
身份验证工件到底是什么?它们为什么有用?有没有一个很好的例子来说明为什么 hapi 团队将此作为他们的一部分 API?
- result - 一个包含以下内容的对象:
- 凭据 - 经过身份验证的凭据。
- artifacts - 可选的身份验证工件。
简答
在 request.auth
您可以访问以下属性:
credentials
- 识别或代表唯一用户的事物
artifacts
- 非凭据的可选身份验证相关数据
Hapi 身份验证方案不是有状态的,但它们可以将重要的身份验证数据存储在 request.auth.artifacts
中,以便以后可以由方案中的其他身份验证函数访问。
身份验证工件到底是什么?
首先让我们看一下artifact的一般定义(来自维基百科):
[artifacts] refer to something that arises from the process
in hand rather than the issue itself, i.e., a result of interest that
stems from the means rather than the end.
身份验证方案可以选择将有关身份验证尝试的一些内部信息(副产品)传回消费应用程序,一旦它完成对请求的初始身份验证。
显然artifacts
里面的数据每个scheme都不一样。使用 Hawk (with hapi-auth-hawk) 时,工件将是一个包含 Hawk 特定信息的对象,例如时间戳、随机数和来自请求的 MAC 代码:
{
method: 'GET',
host: '127.0.0.1',
port: '8000',
resource: '/resource/1?b=1&a=2',
ts: '1426940961',
nonce: 'IRd0nH',
hash: undefined,
ext: 'and welcome!',
app: undefined,
dlg: undefined,
mac: 'tKolc1UJ5w8zGcDT6+knQFDHAdJtf0/rDLOZHTzUCoU=',
id: 'dh37fgj292je'
}
...为什么有用?
可以在 hapi-auth-hawk. Remember an auth scheme in hapi 中找到它们有用的示例 可以调用 3 个不同的函数来进行身份验证:
authenticate
- 验证初始请求所需的函数
payload
- 可选地验证有效载荷
response
- 可选地验证响应
在 hapi-auth-hawk 中,request.auth.artifacts
被填充到初始请求的 authenticate
方法中。这意味着如果稍后执行 payload
或 response
,它们可以从 request
对象访问相同的共享状态,而无需再次解析请求,所以它基本上只是一个方便的容器在这种情况下,从请求中提取的相关身份验证数据。
在 hapi.js API 中,他们指定身份验证方案也可以 return 工件作为凭据对象的一部分。
身份验证工件到底是什么?它们为什么有用?有没有一个很好的例子来说明为什么 hapi 团队将此作为他们的一部分 API?
- result - 一个包含以下内容的对象:
- 凭据 - 经过身份验证的凭据。
- artifacts - 可选的身份验证工件。
简答
在 request.auth
您可以访问以下属性:
credentials
- 识别或代表唯一用户的事物artifacts
- 非凭据的可选身份验证相关数据
Hapi 身份验证方案不是有状态的,但它们可以将重要的身份验证数据存储在 request.auth.artifacts
中,以便以后可以由方案中的其他身份验证函数访问。
身份验证工件到底是什么?
首先让我们看一下artifact的一般定义(来自维基百科):
[artifacts] refer to something that arises from the process in hand rather than the issue itself, i.e., a result of interest that stems from the means rather than the end.
身份验证方案可以选择将有关身份验证尝试的一些内部信息(副产品)传回消费应用程序,一旦它完成对请求的初始身份验证。
显然artifacts
里面的数据每个scheme都不一样。使用 Hawk (with hapi-auth-hawk) 时,工件将是一个包含 Hawk 特定信息的对象,例如时间戳、随机数和来自请求的 MAC 代码:
{
method: 'GET',
host: '127.0.0.1',
port: '8000',
resource: '/resource/1?b=1&a=2',
ts: '1426940961',
nonce: 'IRd0nH',
hash: undefined,
ext: 'and welcome!',
app: undefined,
dlg: undefined,
mac: 'tKolc1UJ5w8zGcDT6+knQFDHAdJtf0/rDLOZHTzUCoU=',
id: 'dh37fgj292je'
}
...为什么有用?
可以在 hapi-auth-hawk. Remember an auth scheme in hapi 中找到它们有用的示例 可以调用 3 个不同的函数来进行身份验证:
authenticate
- 验证初始请求所需的函数payload
- 可选地验证有效载荷response
- 可选地验证响应
在 hapi-auth-hawk 中,request.auth.artifacts
被填充到初始请求的 authenticate
方法中。这意味着如果稍后执行 payload
或 response
,它们可以从 request
对象访问相同的共享状态,而无需再次解析请求,所以它基本上只是一个方便的容器在这种情况下,从请求中提取的相关身份验证数据。