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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值