我曾作为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

NutchServer的安全层相关推荐

  1. java action dao_java中Action层、Service层和Dao层的功能区分

    一.Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DA ...

  2. 【C#实践】详解三层转七层:登录

    背景 一开始借用别人的代码,敲完也是很多地方看不懂!不知道从什么地方下手!不懂三层到七层到底是怎么映射过去的! 后来就是多查,慢慢有大体的轮廓,逐个部分解决! 过程: 1.看整体,对于不懂的部分,先查 ...

  3. 详细通俗重点CRF层讲解

    本文翻译自GitHub博客上的原创文章,结尾有原文链接.文章没有晦涩的数学公式,而是通过实例一步一步讲解CRF的实现过程,是入门CRF非常非常合适的资料. 相关项目代码: BERT-BiLSMT-CR ...

  4. 什么是采样层(pooling)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bobo_jiang/article/d ...

  5. 『PyTorch』第十一弹_torch.optim优化器 每层定制参数

    一.简化前馈网络LeNet 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 im ...

  6. 深入理解 Embedding层的本质

    继上文https://blog.csdn.net/weixin_42078618/article/details/82999906探讨了embedding层的降维效果,时隔一个月,分享一下嵌入层在NP ...

  7. LeetCode简单题之二叉树的层平均值

    题目 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值.与实际答案相差 10-5 以内的答案可以被接受. 示例 1: 输入:root = [3,9,20,null,null ...

  8. 王道考研 计算机网络笔记 第五章:传输层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

  9. GPU自动调度卷积层

    GPU自动调度卷积层 本文对GPU使用自动调度程序. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,无需任何调度命令或模板.自动调度程序 ...

最新文章

  1. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...
  2. mysql 服务器监控系列-黄杉 mysqldba
  3. C语言二级指针Demo - Win32 版本
  4. 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授
  5. CSS3的transform:将元素旋转,缩放,移动,倾斜
  6. 16、mysql中函数的创建和使用
  7. 解决: Spring Boot报错 This application has no explicit mapping ... a fallback
  8. java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法
  9. 约束最优化方法 (三) 外部罚函数法
  10. 比特率 波特率 带宽与容量
  11. kubernetes 容器持久化存储PV、PVC、StorageClass
  12. php 3种常见设计模式
  13. java+junit百科_JUnit介绍
  14. 为移动硬盘(硬盘盒)安装linux(傻瓜式,简单,高效)
  15. mysql创建子用户代码_mysql创设用户及受权
  16. 3D建模 UG8.0 32位安装过程
  17. 使用get password破解windows密码
  18. LearnOpenGL 1.5 纹理
  19. (附源码)springboot实验室预约管理系统的开发毕业设计261141
  20. 2022学年第一学期郑州大学ACM招新赛选拔赛

热门文章

  1. 为什么大公司一定要使用DevOps
  2. Tomcat 的 Server 文件配置详解
  3. Spring思维导图,让Spring不再难懂(cache篇)
  4. Class的getName、getSimpleName与getCanonicalName的区别
  5. (五)SpringBoot 能挣钱的几个项目!!!
  6. 2020蓝桥杯省赛---java---B---4( 合并检测)
  7. Android 获取屏幕宽度和高度直接转换为DP
  8. mybatis_user_guide(8) 日志
  9. 动态资源Servlet接口
  10. sbe 详解_内部简单二进制编码(SBE)