【问题标题】:What are authentication artifacts used for in hapi.js authentication schemes?hapi.js 身份验证方案中使用的身份验证工件是什么?
【发布时间】:2015-03-23 14:43:24
【问题描述】:

在 hapi.js API 中,他们指定身份验证方案也可以将工件作为凭证对象的一部分返回。

什么是身份验证工件,它们为什么有用?有没有一个很好的例子说明为什么 hapi 团队将此作为其 API 的一部分?

  • 结果 - 一个对象包含:
    • credentials - 经过身份验证的凭据。
    • 工件 - 可选的身份验证工件。

http://hapijs.com/api#serverauthschemename-scheme

【问题讨论】:

    标签: hapijs


    【解决方案1】:

    简答

    request.auth 上,您可以访问以下属性:

    • credentials - 识别或代表唯一用户的事物
    • artifacts - 非凭据的可选身份验证相关数据

    Hapi 身份验证方案不是有状态的,但它们可以将重要的身份验证数据存储在 request.auth.artifacts 中,以便以后该方案中的其他身份验证函数可以访问它。

    究竟什么是身份验证工件?

    首先让我们看一下artifact 的一般定义(来自维基百科):

    [artifacts] 指的是过程中产生的东西 手头而不是问题本身,即感兴趣的结果 源于手段而非目的。

    一旦完成对请求的初始身份验证,身份验证方案可以选择将有关身份验证尝试的一些内部信息(副产品)传回消费应用程序。

    很明显artifacts里面的数据对于每个scheme都不一样。当使用Hawk(与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 中找到它们为何有用的示例。请记住,auth scheme in hapi 可以调用 3 个不同的函数来进行身份验证:

    • authenticate - 验证初始请求所需的函数
    • payload - 可选择验证有效负载
    • response - 可选择验证响应

    在 hapi-auth-hawk 中,request.auth.artifacts 从初始请求中填充到 authenticate 方法中。这意味着如果稍后执行payloadresponse,它们可以访问request 对象的相同共享状态,而无需再次解析请求,因此它基本上只是一个方便的容器,用于从中提取相关的身份验证数据本例中的请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2011-04-13
      • 2011-06-12
      • 2018-12-23
      相关资源
      最近更新 更多