Я работал над уровнем безопасности для NutchServer из Apache Nutch в качестве своего проекта GSoC 2016 и закончил его. В этом посте я объясню, как это работает и как его использовать. Прежде всего, я предлагаю вам прочитать мои предыдущие посты о моем принятии GSoC 2016: http://furkankamaci.com/gsoc-2016-acceptance-for-apache-nutch/, если вы еще не читали его.
Apache Nutch — это расширяемый и масштабируемый программный проект с открытым исходным кодом. Происходящий из 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, вы должны сделать следующее:
- Включите безопасность в файле nutch-site.xml, установив для свойства : restapi.auth значение BASIC , DIGEST или SSL . НЕТ по умолчанию и не обеспечивает безопасность.
- Установите свойство restapi.auth.users, если вы выбрали BASIC или DIGEST в качестве типа аутентификации. Имя пользователя, пароль и роль должны быть разделены символом канала (|). Каждый пользователь должен быть разделен запятой (,). т.е. admin | admin | admin, пользователь | пользователь | пользователь. По умолчанию admin | admin | admin, пользователь | пользователь | пользователь
- Задайте свойства restapi.auth.ssl.storepath , restapi.auth.ssl.storepass и restapi.auth.ssl.keypass, если вы выбрали SSL в качестве режима аутентификации в свойстве restapi.auth .
Вы можете следовать этим путем, когда вы хотите подключиться к NutchServer API через ваш клиентский код:
1. Базовая аутентификация
|
1
2
3
4
5
6
7
8
|
ClientResource resource = new ClientResource(protocol + "://" + domain + ":" + port + path);resource.setChallengeResponse(challengeScheme, username, password);try { resource.get();} catch (ResourceException rex) { //catch it} |
2. Дайджест-аутентификация
Используйте тот же код на шаге 1 и добавьте их после него:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
// Use server's data to complete the challengeResponse objectChallengeRequest 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. Реализация аутентификации и авторизации позволяет пользователям общаться с ним безопасным способом.
| Ссылка: | Уровень безопасности для NutchServer от нашего партнера JCG Фуркана Камачи в блоге FURKAN KAMACI . |