2015-02-18 2 views
1

Я установил «Domino Sample REST Service Feature» с 901v00_11.20141217-1000 version of XPages Extension Library. Служба OpenNtfSample (com.ibm.domino.services.sample.service.SampleService) работает как обычно и единственная проблема с ней, что она полностью игнорирует настройки аутентификации на сервере.Аутентификация запросов службы REST Domino

Я пробовал как базовую, так и сеансовую аутентификацию, как описано в Authenticating Domino REST Service Requests, и результатом, который я получаю, является следующее: служба всегда возвращает данные и не запрашивает имя пользователя и пароль.

Сервер настроен с аутентификацией сеанса, и теперь я получить приглашение на ввод пароля при попытке получить доступ к

{my_server}/API/данные

, но не получает его, когда я открываю

{ my_server}/апи/образец

После того как я добавил это правило Web Site

Описание: сервис DAS Тип правила: Override Authentication Session Входящий шаблон URL: /API/

сервер изменил запрос на ввод пароля для

{my_server}/API/данные

но

{my_server }/api/sample

осталось открытым.

Неужели кто-нибудь испытал такую ​​ошибку? Может ли кто-нибудь помочь мне защитить пароль этой примерной службы, чтобы я мог начать разрабатывать свой собственный один раз на основе этого примера?

ответ

0

/api/sample Ресурс широко открыт нарочно. Это просто возвращает ссылку на ресурс контактов - /xpagesext.nsf/api/sample/contacts.

Если вы действительно хотите, чтобы предотвратить анонимный доступ к /API/образец ресурса, существует два возможных решения: 1) Отключить анонимный доступ для всех запросов HTTP, или 2) Внести изменения в класс RootResource. Первым решением является изменение конфигурации сервера. Я уверен, что вы можете найти подробности об этом в другом месте. Поскольку это StackOverflow, я сосредоточусь на втором решении.

Как вы уже заметили, мы не разрешаем анонимный доступ к ресурсу /api/data. Вы можете имитировать это поведение в ресурсе /api/sample с простым изменением на RootResource.getLinks(). В верхней части метода, просто добавьте следующие строки кода:

 boolean authenticated = false; 
     Session session = ContextInfo.getUserSession(); 
     if (session != null) { 
      String userName = session.getEffectiveUserName(); 
      if (userName != null && !userName.equals("Anonymous")) { 
       authenticated = true; 
      } 
     } 

     if (!authenticated) { 
      throw new NoAccessSignal("Need user context"); 
     } 

Кстати, вам не нужно будет сделать то же самое изменение в классе контактов ресурсов (ContactsListResource.java). Поскольку URL-адрес ресурса контактов включает имя базы данных (xpagesext.nsf), веб-сервер попытается открыть базу данных перед отправкой запроса службе REST. Вы можете предотвратить анонимный доступ к ресурсу контактов, изменив ACL xpagesext.nsf. Просто убедитесь, что доступ по умолчанию - «Нет доступа».

Смежные вопросы