Я работал над уровнем безопасности для 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 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. Реализация аутентификации и авторизации позволяет пользователям общаться с ним безопасным способом.
Ссылка: | Уровень безопасности для NutchServer от нашего партнера JCG Фуркана Камачи в блоге FURKAN KAMACI . |