2014-02-03 1 views
1

Нужны предложения, чтобы узнать, возможно ли это в Camel для приведенного ниже сценария.Apache Camel - вызов вызовов http или rest (отфильтрован через систему безопасности Shiro)

Мы пытаемся использовать Apache Camel для тестирования интеграции веб-приложения. Приложение должно получить доступ через вызовы службы отдыха. Каждый запрос приложений фильтруется с помощью безопасности. Когда я делаю спокойный вызов или http-вызов этого приложения, мне нужно настроить необходимую информацию об аутентификации в заголовке и убедиться, что запрос верблюда успешно обработан. Есть ли способ сделать это на верблюде - «вызов http или отдыха для доступа к приложению, чьи запросы защищены apache shiro»? Я вижу, что у Camel есть сильная компонента безопасности, которая больше похожа либо на авторизацию верблюжьих маршрутов, либо на определение безопасности для верблюжьих маршрутов, и я не вижу, что могу использовать их для этой цели?

Я попытался настроить ярлыки проверки подлинности в заголовке различными способами (например, используя свойство аутентификации Exchange), но он не работает. Любые предложения, пожалуйста?

ОБНОВЛЕНИЕ: Shiro поддерживает свою собственную сессию и выглядит ID_пользователь и его/ее разрешение (называемый Shiro Subject), чтобы убедиться, что его аутентифицированный и авторизованный запрос. Всякий раз, когда мы отправляем запрос на защищенное приложение Shiro, он фильтрует запрос, проверяет запрос, чтобы узнать, разрешено ли ему право доступа к функциям приложения, а затем разрешить нам. Если информация пользователя недоступна на сеансе Shiro, это будет перейдите на экран входа в систему. Наше веб-приложение раскрыло функциональность как услуги по отдыху. Возможно ли в Camel позвонить в такое приложение, которое встроено в систему безопасности Apache Shiro? В принципе, я должен высмеять тему Shiro и установить в HTTP-заголовке, чтобы он выглядел как запрос с проверкой Shiro.

Я пробовал делать http-звонки с токеном Shiro Authentication, установленным в заголовках обмена. Но его неудача. Возможно ли это в Camel или я иду в неправильном направлении? Любое предложение или помощь в этом отношении очень ценится. Ниже приведено подмножество кода, с которым я играл.

// заверните в Subject

Subject subjectUnderTest = new Subject.Builder(getSecurityManager()) 
     .principals(new SimplePrincipalCollection("Username", "RealmName")).authenticated(true).buildSubject();  

MockEndpoint OutEndpoint = getMockEndpoint("mock.out"); 

OutEndpoint.expectedMessageCount(1); 

Endpoint InEndpoint = context.getEndpoint("direct.in"); 


Map<String, Object> headers = new HashMap<String, Object>(); 

headers.put(Exchange.HTTP_METHOD, "GET"); 

headers.put(Exchange.AUTHENTICATION, subjectUnderTest); 

template.sendBodyAndHeaders(InEndpoint, "test body", headers); 

Благодаря Viggy

+0

Как правило, вы можете установить любой заголовок, который вам нравится на обмене верблюдов, и этот заголовок будет отправлен как HTTP-заголовок с вашим запросом. Каковы были бы точные требования к аутентификации через Shiro? – Ralf

+0

Я добавил свои обновления о том, что я пытался сделать в нашем приложении. – Viggy

ответ

0

Я думаю, вы должны использовать ниже код, чтобы установить имя пользователя и пароль. Установите CamelContext с этими конфигурациями.

HttpConfiguration config = new HttpConfiguration(); 
config.setAuthMethod(AuthMethod.Basic); 
config.setAuthUsername("donald"); 
config.setAuthPassword("duck"); 
HttpComponent http = context.getComponent("http", HttpComponent.class); 
http.setHttpConfiguration(config); 

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

  • Нет связанных вопросов^_^