2016-11-03 12 views
0

Я новичок в WebSphere, я написал ejb и даже развернул его. Но когда я пытаюсь получить к нему доступ.Проблемы с доступом к безопасному Ejb's

Я получаю следующее сообщение об ошибке. Проблема связана с привязками или настройкой безопасности или сферы?

javax.ejb.EJBAccessException: SERVER (ID = 4773e3aa, хост = локальный) TRACE СТАРТ: javax.ejb.EJBAccessException: SECJ0053E: Ошибка авторизации для ??? при вызове (Bean) d365-EB_OFSConnectorService-ejb_jar # d365-ModuleConnectorService-ejb.jar # ModuleConnectorServiceBean processOFS: java.lang.String: 1 не предоставляется ни одна из требуемых ролей: d365user at com.ibm.ws.security.core .SecurityCollaborator.performAuthorization (SecurityCollaborator.java:626) на com.ibm.ws.security.core.EJSSecurityCollaborator.preInvoke (EJSSecurityCollaborator.java:265) в com.ibm.ws.ejbcontainer.runtime.EJBSecurityCollaboratorAdapter.preInvoke (EJBSecurityCollaboratorAdapter .java: 82) на com.ibm.ws.ejbcontainer.runtime.EJBSecurityCollaboratorAdapter.preInvoke (EJBSecurityCollaboratorAdapter.java:43) на com.ibm.ejs.container.EJSContainer.notifySecurityCollaboratorPreInvoke (EJSContainer.java:3895) на ком .ibm.ejs.container.EJSContainer.preInvokeAfterActivate (EJSContainer. Java: 3825) на com.ibm.ejs.container.EJSContainer.EjbPreInvoke (EJSContainer.java:3046) на com.kaiser.services.ofsconnector.ejb.EJSRemote0SLModuleConnectorServiceBean_8c753384.processOFS (EJSRemote0SLModuleConnectorServiceBean_8c753384.java) на com.kaiser. services.ofsconnector.ejb._EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie.processOFS__CORBA_WStringValue (_EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie.java:1) на com.kaiser.services.ofsconnector.ejb._EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie._invoke (_EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie.java) в com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler (ServerDelegate.java:669) at com.ibm.CORBA.iiop.ServerDelegate.dispatch (ServerDelegate.java:523) at com.ibm.rmi.iiop.ORB.proces s (ORB.java:523) at com.ibm.CORBA.iiop.ORB.process (ORB.java:1575) at com.ibm.rmi.iiop.Connection.doRequestWork (Connection.java:3039) at com.ibm.rmi.iiop.Connection.doWork (Connection.java:2922) at com.ibm.rmi.iiop.WorkUnitImpl.doWork (WorkUnitImpl.java:64) at com.ibm.ejs.oa.pool. PooledThread.run (ThreadPool.java:118) at com.ibm.ws.util.ThreadPool $ Worker.run (ThreadPool.java:1862) СЕРВЕР (id = 4773e3aa, host = localhost) TRACE END.

Я пробовал искать его в google, но не был успешным. предложения приветствуются.

Updates-1 В моей EJB-jar.xml, безопасность была определена как

<assembly-descriptor> 
    <security-role> 
     <role-name>d365user</role-name> 
    </security-role> 
    <method-permission> 
     <role-name>d365user</role-name> 
     <method> 
      <ejb-name>ModuleConnectorServiceBean</ejb-name> 
      <method-name>*</method-name> 
     </method> 
     <method> 
      <ejb-name>ModuleConnectorServiceBeanOMS</ejb-name> 
      <method-name>*</method-name> 
     </method>   
    </method-permission> 
</assembly-descriptor> 

IBM-EJB-банку-bnd.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <ejb-jar-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee" 
     xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" version="1.0"> 
     <session name="ModuleConnectorServiceBean"> 
     <resource-ref binding-name="jdbc/t24DataSource" name="jdbc/d365DataSource"/> 
     <resource-ref binding-name="jdbc/d365LockingDataSource" name="jdbc/d365LockingDataSource"/> 
     </session> 

     <session name="ModuleConnectorServiceBeanOMS"> 
     <resource-ref name="jdbc/d365DataSource" binding-name="jdbc/d365DataSource"/> 
     <resource-ref name="jdbc/d365LockingDataSource" binding-name="jdbc/d365LockingDataSource"/> 
     </session> 
    </ejb-jar-bnd> 
+0

Если вы все еще в стадии разработки, сделать попробуйте удалить аннотацию доступа к соответствующему EJB-методу. Это позволит выявить проблему в сети или (более вероятно) неверную привязку роли пользователя ->. – Leonardo

+0

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

ответ

1
SECJ0053E: Authorization failed for ??? while invoking (Bean)d365-EB_OFSConnectorService-ejb_jar#d365-ModuleConnectorService-ejb.jar#ModuleConnectorServiceBean 
processOFS:java.lang.String:1 is not granted any of the required roles: d365user 

Похоже, что ваш клиент не выполняет правильную аутентификацию и не передает учетные данные. Если это автономный клиент, убедитесь, что вы вызываете его с правильной конфигурации для SSL и CORBA, например:

<java_install_root>/bin/java 
-classpath com.ibm.ws.ejb.thinclient_8.5.0.jar:<list_of_your_application_jars_and_classes> 
-Djava.naming.provider.url=iiop://<your_application_server_machine_name> 
-Dcom.ibm.SSL.ConfigURL=file:///home/user1/ssl.client.props 
-Dcom.ibm.CORBA.ConfigURL=file:///home/user1/sas.client.props 
<fully_qualified_class_name_to_run> 

Для получения более подробной информации проверить это Running the IBM Thin Client for Enterprise JavaBeans (EJB)

+0

Почему вы используете эту конфигурацию ssl и sas? Я понимаю, что если мы используем аутентификацию, нам нужно предоставить SSL, но до сих пор не удалось понять, почему мы используем SAS. Не могли бы вы предоставить мне некоторую информацию об этом? – User27854

+1

@ user2900314 Если вам нужна аутентификация для ваших компонентов (и вам нужно, так как у вас есть записи разрешения метода в конфигурации EJB), тогда требуются обе конфигурации (ssl и Corba). SSL описывает настройки, связанные с транспортным уровнем, sas.client.props описывает настройки, используемые протоколом auth CSIv2. Вы можете найти дополнительную информацию здесь: [Протокол аутентификации для безопасности EJB] (http://www.ibm.com/support/knowledgecenter/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/csec_corba. HTML). – Gas

+0

Большое спасибо за информацию. – User27854

0

Я вижу ошибку авторизации выше. Пожалуйста, отметьте аннотации безопасности, такие как @RolesAllowed ("roleName") в своем ejb или дескрипторе развертывания (ejb-jar.xml), чтобы узнать, какие роли используются для защиты EJB.

Вам необходимо сопоставить эти роли с допустимыми пользователями в реестре пользователей (то есть LDAP). Только действительным пользователям будет разрешен доступ к вашему EJB.Вы можете использовать консоль администратора для отображения ролей безопасности для пользователей/групп, как указано ниже:

Приложения -> WebSphere Enterprise Приложения-> -> роль безопасности для пользователя отображения/групп -> выберите соответствующую роль и CLCK на «Пользователь карты» для отображения пользователей. Карта Специальный объект -> Все аутентифицированные в области приложения могут использоваться для предоставления доступа всем аутентифицированным пользователям вместо сопоставления отдельных пользователей.

+0

В Ejb не используются аннотации. Он использует привязки на основе xml. – User27854