NutchServer的安全层

我曾作为GSoC 2016项目在Apache Nutch的NutchServer的Security Layer上工作,并完成了它。 在此博客文章中,我将解释其工作原理和使用方法。 首先,建议您阅读以前有关GSoC 2016接受的帖子: http ://furkankamaci.com/gsoc-2016-acceptance-for-apache-nutch/(如果您尚未阅读的话)。

Apache Nutch是一个高度可扩展和可扩展的开源Web爬网程序软件项目。 源于Apache Lucene,该项目已经多样化,现在包括两个代码库,分别是:

Nutch 1.x:成熟度高,可用于生产的履带。 1.x依靠Apache Hadoop数据结构实现精细的配置,这对于批处理非常有用。

Nutch 2.x:这是一个从1.x直接汲取灵感的新兴替代方案,但在一个关键方面有所不同。 通过使用Apache Gora处理对象到持久性映射,可以从任何特定的基础数据存储中抽象出存储。 这意味着我们可以实现极为灵活的模型/堆栈,以将所有内容(获取时间,状态,内容,已解析的文本,外链,内链等)存储到许多NoSQL存储解决方案中。

Nutch 2.x具有REST API,但上面没有安全层。 我已经实现了基本身份验证,摘要式身份验证,作为身份验证机制的SSL支持以及对NutchServer的细粒度授权支持。

当您想在NutchServer API上启用安全性时,应遵循以下方式:

  1. 通过将设置: restapi.auth属性设置为BASICDIGESTSSL ,在nutch-site.xml上启用安全性。 NONE是默认的,没有提供安全。
  2. 如果您选择了BASICDIGEST作为身份验证类型,则设置restapi.auth.users属性。 用户名,密码和角色应以竖线字符(|)分隔。每个用户应以逗号(,)分隔。 即admin | admin | admin,用户|用户|用户。 默认值为admin | admin | admin,user | user | user
  3. restapi.auth.ssl.storepath,restapi.auth.ssl.storepass,如果你有在restapi.auth属性选择SSL作为验证模式restapi.auth.ssl.keypass性能。

当您想通过客户端代码连接到NutchServer API时,可以按照以下方式进行操作:

1.基本认证

ClientResource resource = new ClientResource(protocol + "://" + domain + ":" + port + path);
resource.setChallengeResponse(challengeScheme, username, password);try {resource.get();
} catch (ResourceException rex) {//catch it
}

2.摘要式身份验证

在第1步中使用相同的代码,并在其后添加这些代码:

// Use server's data to complete the challengeResponse object
ChallengeRequest digestChallengeRequest = retrieveDigestChallengeRequest(resource);
ChallengeResponse challengeResponse = new ChallengeResponse(digestChallengeRequest, resource.getResponse(),
username, password.toCharArray());resource.setChallengeResponse(challengeResponse);
try {resource.get();
} catch (ResourceException rex) {//catch it
}...private ChallengeRequest retrieveDigestChallengeRequest (ClientResource resource) {ChallengeRequest digestChallengeRequest = null;for (ChallengeRequest cr : resource.getChallengeRequests()) {if (ChallengeScheme.HTTP_DIGEST.equals(cr.getScheme())) {digestChallengeRequest = cr;break;}}return digestChallengeRequest;
}

3. SSL

请遵循“基本身份验证”中的相同步骤,但是不要忘记将SSL证书添加到您的信任存储中。

NutchServer通过其REST API提供对许多功能的访问。 实施身份验证和授权使用户可以通过安全方式与其进行通信。

翻译自: https://www.javacodegeeks.com/2016/09/security-layer-nutchserver.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

借助opencv将unsigned char数组显示为图像

在用C或者C做图像处理程序时,经常需要把结果图显示出来看看效果,这时候可以借助opencv的Mat类型,如下:Mat gray1_mat(rect_height, rect_width, CV_8UC1, minsrc);//为了显示图片 先改为mat类型imshow("去雾图像显示", …

眼图观测实验报告_眼图观察测量实验

实验12眼图观察测量实验一、实验目的1.学会观察眼图及其分析方法,调整传输滤波器特性。二、实验仪器1.眼图观察电路(底板右下侧)2.时钟与基带数据发生模块,位号:G 3.噪声模块,位号E 4.100M双踪示…

C、C++申请指针内存的问题

关于指针的血和泪的教训 1、指针申请时一定要检查是否申请成功,当项目比较庞大时,内存有可能申请不成功导致程序中断,而这时候往往无从知道哪里出现了问题。如下:double* wid (double*)malloc((num1) *sizeof(double));//存储每个…

invalid use of null value

给mysql的数据表的一个字段插入数据,不成功, 然后在数据表设计中,把不是null勾选上,又提示 invalid use of null value 这种情况比较尴尬 只能删掉这一个字段,然后新建一个同样名字的字段,然后直接勾选不是null然后在保存就行了 转载于:https://www.cnblogs.com/jnhs/p/1008253…

android 13.0 Launcher3定制folder文件夹16宫格实现二

1. 概述 在13.0的系统产品rom定制化开发中,对于Launcher3的定制功能也是不少的,比如在Launcher3中添加默认文件夹,把默认的app添加的文件夹里面,其他的app 然后按顺序排序。在文件夹布局就是默认的16宫格布局,接下来分析下相关源码来实现功能 2.Launcher3定制化之修改添…

vim配置及插件安装管理(超级详细)

1写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一…

vue 父链和子组件索引_vue子组件和父组件双向绑定的几种方案

v-model案例模仿v-model实现案例我是一串要和内部名字联动的一串文字(父组件)父组件改变值带动(父组件)点一下试试.sync方案实现案例这是父组件的东西。利用这个框改变值,看看有没有传到子组件,也可以改子组件看看这里有变化没// v-model方案 你写上一个…

程序逻辑上多一些提示

写程序时要想下各种可能出错的情况&#xff0c;提前给出错误提示&#xff0c;项目大了就可以比较容易找错误。 比如&#xff0c;当特征点个数小于4时不能计算单应矩阵&#xff0c;所以当个数小于4时先输出提示&#xff1a; if (matchePoints.size()>10)for (int i 0; i<…

安卓清理垃圾清理代码_用方面清理代码

安卓清理垃圾清理代码在我以前的文章中&#xff0c;我描述了字母转换&#xff0c;并且提到了我们使用AspectJ来解决该任务&#xff0c;但是我没有提及AspectJ的工作原理和一般性方面。 因此&#xff0c;在接下来的几行中&#xff0c;我将解释&#xff1a; 什么是面向方面的编程…

最大功率点跟踪_ADI公司推出集成最大功率点跟踪和I2C的80V降压升压电池充电控制器...

中国&#xff0c;北京 – Analog Devices, Inc. (ADI)&#xff0c;今日宣布推出LT8491降压-升压电池充电控制器&#xff0c;该控制器具有最大功率点跟踪(MPPT)、温度补偿和I2C接口等特性&#xff0c;适用于遥测和控制。该器件的工作电压可高于、低于或等于经调节的电池浮充电压…

VIM 编码配置

在 Vim 中&#xff0c;有四个与编码有关的选项&#xff0c;它们是&#xff1a;fileencodings、fileencoding、encoding 和 termencoding。在实际使用中&#xff0c;任何一个选项出现错误&#xff0c;都会导致出现乱码。因此&#xff0c;每一个 Vim 用户都应该明确这四个选项的含…

关于摄像头的一些零碎知识

项目上需要用到读取摄像头的帧数据&#xff0c;在对视频帧做算法处理。简单了解了一下摄像头的分类和如何读取。 1、总体上来说&#xff0c;在win平台下面摄像头数据采集无外乎两种方式vfw和direct show。其中vfw是不依赖于sdk的&#xff0c;只要有系统api即可实现摄像头数据的…

MQTT和Java入门

MQTT&#xff08;MQ遥测传输&#xff09;是一种轻量级的发布/订阅消息传递协议。 MQTT在物联网应用程序中得到了广泛使用&#xff0c;因为它被设计为在占用空间小的系统上运行在远程位置。 MQTT 3.1是OASIS标准&#xff0c;您可以在http://mqtt.org/上找到所有信息。 本文将指…

函数的命名空间

# 函数进阶 # a 1 # def func(): # print(a) # func()# 命名空间和作用域 # print() # input() # list # tuple#命名空间 有三种 #内置命名空间 —— python解释器# 就是python解释器一启动就可以使用的名字存储在内置命名空间中# 内置的名字在启动解释器的时候被加载进内…

在Linux环境下mysql的root密码忘记解决方法

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lxsym.blog.51cto.com/1364623/477027 MySQL密码的恢复方法之一 1&#xff0e;首先确认服务器出于安全的状态&#xff0c;也就是没有人能…

史迪仔的原型_星际宝贝三个版本对比,莉罗抛弃史迪仔,童年真的回不去了

星际宝贝这部动漫大家应该不陌生&#xff0c;以前为了看这部动漫&#xff0c;经常蹲着点打开电视&#xff0c;看到莉罗和626一天的烦恼都没了。星际宝贝可以说风靡全球&#xff0c;所以日漫还有国漫也不甘落后&#xff0c;纷纷和迪士尼完成了自己的星际宝贝&#xff0c;来跟宅编…

warning C4091: “typedef ”: 没有声明变量时忽略“_matcher”的左侧

C 警告 warning C4091: “typedef ”: 没有声明变量时忽略“_matcher”的左侧 typedef struct _matcher {int Idx1;int Idx2;double dis; };修改方法&#xff1a;删掉typedef &#xff0c;这是C语言的结构体&#xff0c;C 会自动分配。

C# 获取对象 大小 Marshal.SizeOf (sizeof 只能在不安全的上下文中使用)

C# 能否获取一个对象所占内存的大小&#xff1f; 今日&#xff0c;在项目重构的时候忽然想到一个问题&#xff0c;一个类哪些成员的增加&#xff0c;会影响一个类所占内存的大小&#xff1f;C#有没有办法知道一个对象占多少内存呢&#xff1f; 第一个问题&#xff1a;很快想到是…

警告warningC4018有符号/无符号不匹配

C警告 warning C4018: “<”: 有符号/无符号不匹配 警告代码如下&#xff1a;for (int i 0; i<matchePoints.size(); i){imagePoints1.push_back(keypoints1[matchePoints[i].Idx1].pt);imagePoints2.push_back(keypoints2[matchePoints[i].Idx2].pt);} 错误原因&…

tp5类的属性不存在_thinkPHP5.1框架中Request类四种调用方式示例

本文实例讲述了thinkPHP5.1框架中Request类四种调用方式。分享给大家供大家参考&#xff0c;具体如下&#xff1a;1. 传统调用访问方式&#xff1a;http://127.0.0.1/demo/demo3/test?namekk&age22/*** Created by PhpStorm.* User: 10475* Date: 2018/8/27* Time: 22:59*…