身份验证是确认用户身份的过程,它提供了一种方法来确保合法用户在您的网站上创建内容。通过身份验证,Bazaarvoice可以确认用户的电子邮件地址,并将电子邮件地址链接到Bazaarvoice网络中的个人资料。(身份验证并不是检测欺诈的方法;这是真实性)。

注意: 主持身份验证是推荐的身份验证方法。站点身份验证极大地减少了用户提交的数量,它要求技术团队执行额外的集成工作,将conversation与站点的登录过程联系起来。只有在法律或业务要求客户必须登录到conversation时,才使用站点身份验证。

站点身份验证要求用户登录到站点的身份验证系统。在用户提交产品评论、问题或答案之前,他们必须使用与访问您的站点时相同的凭据登录。只有当您有法律或业务需求要求您的客户必须登录到对话时,才使用此方法。

以下是托管和站点认证的工作流程:

主持身份验证 网站验证

融入对话

要成功地集成conversation并需要站点身份验证,必须执行这些任务。

步骤1:启用并配置站点认证

完成以下步骤在对话中设置站点身份验证:

  1. 登录到Bazaarvoice门户
  2. 来自传送门菜单中,选择配置
  3. 选择实例并进入配置.Site Manager将出现,列出可用的部署区域和实现。
  4. 实现部分中,选择编辑旁边是实现你需要配置。
  5. 在配置集线器的Settings部分中,选择用户身份验证
  6. 在用户身份验证页面的顶部,选择站点认证集成页签,显示“认证集成”界面。
  7. 启用要求站点身份验证选择。
  8. 方法确定是否要启用注入昵称数据选择。指使用站点身份验证注入数据有关注入昵称数据的信息。
  9. 使用提交时请提供电子邮件地址当用户提交评论、评论、问题或答案时,指定电子邮件地址是必需的、可选的还是不要求的选项:
    • 要求-提交时需提供电子邮件地址。这是默认选项。
    • 可选-可选择提交电子邮件地址。
    • 不要求-电子邮件地址不包含在提交表格中。
  10. 输入web地址(URL)暂存站点登录URL.在编写内容之前,测试站点上的用户将被重定向到此处登录。
  11. 输入web地址(URL)生产站点登录URL.您的生产站点上的用户在写入内容之前将被重定向到此处登录。

步骤2(可选):托管一个容器页面,并从对话中引用它的URL

容器页面便于站点身份验证重定向。

创建容器页面在conversation集成的同一个域中。通常,这是提供产品页面的域。如果你的实现使用bv.js时,应包含以下内容:

<!DOCTYPE html>    
         .js

注意:如果现有的实现使用侦察文件(bvapi.js),你的HTML文档看起来应该如下所示:

<!DOCTYPE html>    
        

取代container.htm与该页的规范URL的相对路径,并替换< client_name >< site_ID ><环境>,<地区>用你的价值观。

注意:规范URL包含关于页面的元数据。元数据将搜索引擎指向页面的正式地址。比如,如果你不想让搜索引擎来处理https://url.com?page=1而且https://url.com?page=2作为不同页面,提供一个绝对链接,如,指示搜索引擎将这两个url指向https://url.com

创建容器页面后,必须在对话中输入其URL,方法如下:

  1. 在配置集线器中,转到技术设置>网站配置文件
  2. 在中输入容器页面URL容器的URL
  3. 在配置集线器中,转到设置>用户身份验证
  4. 选择站点认证集成选项卡。
  5. 在中输入登台站点登录URL暂存站点登录URL
  6. 输入生产站点登录URL in生产站点登录URL

步骤3:生成用户身份验证字符串(UAS)

用户身份验证字符串(UAS)由散列和编码(但不加密)的键-值对组成。这个字符串使Bazaarvoice能够验证它来自可信的来源,从而防止第三方捏造或冒充用户。例如,您可以使用UAS注入数据如果您的实现使用站点身份验证,则转换为审查提交表单。

注意:必须在服务器端创建UAS以维护共享密钥的保密性。

按照以下步骤创建可用于数据注入的UAS:

  1. 确定UAS中包含的键-值对,必须在字符串中用&分隔。以下是支持的键:
    关键 描述 要求
    日期 今天的日期,格式为YYYYMMDD或YYYY-MM-DD。 是的
    用户标识

    使用者的用户ID。不要为该值使用电子邮件地址。

    是的
    maxage UAS到期前的天数。默认为1天。增加这个值在预认证url中很有用,比如在电子邮件活动中使用的url。 没有
    verifiedpurchaser 验证用户是否购买了一个或多个产品(必威手机版本真正的).省略此参数或将其设置为如果用户不是经过认证的购买者。 没有
    subjectids 验证用户已购买的产品外部id列表,从而确保verifiedpurchaserKey不能应用于其他产品。必威手机版本如果指定多个id,用“/”分隔。 没有
    年龄 年龄范围,不带空格。例如:35 to4465年orover 没有
    性别 使用者的性别(男性). 没有
    emailaddress 贡献者的电子邮件地址。这个值必须是url编码的。 是的
    IncentivizedReview 贡献者是否获得了免费的产品或服务以供审查(真正的).省略此参数或将其设置为如果用户没有得到免费的产品或服务。 没有
    OrderNumber 贡献者购买的订单ID。 没有
    用户名 贡献者的用户名。 没有
    联系 自动添加默认的Staff隶属关系徽章()传送到使用此网址提交的文件。这个徽章表明写评论的人受雇于你的公司。(了解更多关于徽章的知识在这里)。将此参数设置为工作人员 没有
  2. 如果键-值对包含保留字符,则必须这样做url这个角色。

    例如,字符串雅各'sLadder必须编码为雅各% 27 sladder

步骤4:编码UAS

哈希和编码UAS与您的Bazaarvoice共享编码键,以创建一个UAS令牌:

  1. 若要查找共享编码键,请单击技术设置»网站配置文件在配置集线器。下基本信息的值共享编码键字段。
  2. 创建一个url编码的查询字符串,包括必选参数和可选参数,如下例所示:

    日期= 20161225用户id = shopper123&maxage = 30 &verifiedpurchaser = True
  3. 通过将url编码的参数字符串与编码键散列来创建签名。
  4. 十六进制编码url编码的参数字符串。
  5. 将签名和参数字符串组合。

下面是一个服务器端伪代码示例:

function makeUserToken(encodingKey, parameters){//使用HMAC编码签名的SHA-256 signature = hash_hmac('sha256', parameters,encodingKey) //连接签名和十六进制编码的参数字符串uas = signature + hex(parameters) //返回用户认证字符串返回uas} ENCODING_KEY = 'abcd1234' // BV共享密钥从config hub requiredParameters = 'date=20161225&userid=valuedCustomer' extraParameters = 'maxage=90& verified买方=True' allParameters = requiredParameters + '&' + extraParameters userAuthString = makeusertokenmac (ENCODING_KEY, allParameters)
进口javax.crypto.Mac;进口javax.crypto.spec.SecretKeySpec;进口org.apache.commons.codec.binary.Hex;进口java.nio.charset.StandardCharsets;public String makeUserTokenHmac(String encodingKey, String parameters) {Mac sha256_HMAC = Mac. getinstance ("HmacSHA256");SecretKeySpec secret_key = new SecretKeySpec(encodingKey.getBytes(), "HmacSHA256");sha256_HMAC.init (secret_key);String hash = hexe . encodehexstring (sha256_HMAC.doFinal(parameters.getBytes()));String hexParameters = hexs . encodehexstring (parameters.getBytes(StandardCharsets.UTF_8));返回hash + hexParameters; }
Var crypto = require('crypto');function makeUserTokenHmac(encodingKey, parameters) {let hmac = crypto。createHmac (sha256, encodingKey) .update(参数);Let signature = hmac.digest('hex');let hexParameters = parameters.split(") .map(c => c. charcodeat (0).toString(16)) .join(");返回签名+ hexParameters;}
require 'openssl' def makeUserTokenHmac(encodingKey, parameters) hash = openssl::HMAC。digest('sha256', encodingKey, parameters) signature = hash.unpack('H*')。first hexParameters = parameters.unpack('H*')。第一个返回“#{signature}#{hexParameters}”结束
<?php函数makeusertokenmac ($encodingKey, $parameters){//使用HMAC SHA-256编码签名$signature = hash_hmac('sha256', $parameters, $encodingKey);//连接参数$uas = $signature的签名和十六进制编码字符串。bin2hex(参数);//返回用户认证字符串return $uas;} ? >
使用系统;使用先;使用text;使用System.Security.Cryptography;命名空间uasC{类程序{静态void Main(string[] args) {const string SharedKey = "SHAREDKEYGOESHERE";string userId = "date=20190708&userid=9100040964&maxage=30";using(HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(SharedKey))) {string userIdSignature = bydswarestring (hmac. computehash (Encoding.UTF8.GetBytes(userId)));string hexUserId = bytesstring (Encoding.UTF8.GetBytes(userId));控制台。(userIdSignature + hexUserId); } string BytesToHexString(byte[] input) { StringBuilder sb = new StringBuilder(64); for (int i = 0; i < input.Length; i++) { sb.Append($ "{input[i] :X2}"); } return sb.ToString(); } } } }

步骤5:提供一个UAS令牌

如果您正在使用BV加载器(bv.js),设置集成代码,将生成的UAS令牌包含在页头元素的元元素中。将此令牌包含在具有Conversations集成代码的任何页面上,例如在产品页面上。当用户登录到站点的身份验证系统时,应该提供此属性,并向Bazaarvoice发送用户已登录的信号。

例如:

< >头……> < /头

总是发生标签(如userToken)在BV加载器(bv.js)脚本标签。当BV加载器加载时,它只看到DOM中可见的内容。如果一个标签被放置在BV加载器之后,它将在加载时对BV加载器不可见。如果它被放置在BV加载器之前,它将是可见的。

对于未登录到您的身份验证系统的用户,请离开userToken属性为空(或将其排除在集成代码之外)。

注意:如果现有的实现使用侦察文件(bvapi.js),设置集成代码,以将生成的UAS令牌包含在$ BV.configure ()而是调用函数。

例如:

BV美元。configure('global', {productId: 'test1', userToken: '17743067190f0343f24f75df730dfe58646174653d323031332d30352d3031267573657269643d7465737475736572313233'});

步骤6:将用户重定向到容器页面

如果您计划向用户发送链接并确保他们保持登录状态,则可以包含bveventid参数,以确保登录页面(在配置集热器中设置)将用户重定向到托管的Conversations容器页面。的bveventid参数表示用户在被重定向到登录之前试图写一篇评论。重定向必须包括:

  • bveventid参数,其完整的、未修改的值。例如:
    bveventid = 1234 asfr
  • UAS令牌;例如:
    bvuserToken = 17743067190 f0343f24f75df730dfe58646174653d323031332d30352d3031267573657269643d7465737475736572313233

URL应该看起来像这样:

https://www.example.com/container.htm?bveventid=123asfr&bvuserToken=17743067190f0343f24f75df730dfe58646174653d323031332d30352d3031267573657269643d7465737475736572313233

测试您的站点授权集成

按照以下步骤进行测试,如果需要,还可以对集成进行故障排除:

  1. 浏览到你的评分和评论页面,然后选择“写评论”链接。您应该被重定向到您的登录页面,并看到bveventid在页面URL中。如果您没有被重定向,则站点身份验证未启用。请联系Bazaarvoice寻求帮助。
  2. 成功登录后,验证您被重定向到容器页面,并且bveventid和UAS令牌出现在容器页面URL中。如果它们不存在,那么您可能没有正确地检查bveventid,并且应该检查以确保您准确地遵循了集成步骤。
  3. 确认您随后被重定向到产品页面(您在其中选择了“写评论”),并且提交表单已经出现。(确认bveventid并且它与您在步骤1中验证的一致)。此外,验证UAS令牌是否存在并且有效。

站点身份验证要求用户登录到站点的身份验证系统。在用户提交产品评论、问题或答案之前,他们必须使用与访问您的站点时相同的凭据登录。只有当您有法律或业务需求要求您的客户登录到对话时,才使用此方法。

有关站点和托管身份验证的概述,包括它们的工作流程,请参阅用户身份验证

  1. 使用配置集线器,选择用户身份验证,然后执行这些任务:
    1. 选择站点认证集成选项卡。
    2. 启用要求站点身份验证选择。
    3. 启用注入昵称数据选项(可选)。
    4. 提交时请提供电子邮件地址要求(可选)。
    5. 输入web地址(URL)暂存站点登录URL.在编写评论之前,测试站点上的测试用户将被重定向到此处登录。
    6. 输入web地址(URL)生产站点登录URL.你的生产站点上的用户在写评论之前会被重定向到这里。
  2. 选择技术设置然后复制共享编码键
  3. 生成用户身份验证字符串(UAS)
  4. 包括UAS令牌在产品显示页面上的集成代码中。
  5. 时,确保登录页重定向到容器页bveventid查询参数存在。

参考这些代码示例根据需要。