응용 프로그램 클라이언트를 EJB 3.0 서버로 인증하는 방법
문제
나는 전체 J2EE 아키텍처를 처음 접했습니다. 누군가 나를 도울 수 있습니까?
로그인이있는 스윙 클라이언트, 기계 A의 비밀번호 필드가 있습니다.
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://localhost:1099/");
InitialContext ctx = new InitialContext(p);
ejb = (MyBeanRemote) ctx.lookup("DemoServer/MyBean/remote");
기계 B의 JBOSS5에 EJB 3.0이 있습니다.
@Stateful
@DeclareRoles({"editor", "viewer"})
public class MyBean implements MyBeanRemote, Serializable {
@RolesAllowed({"editor"})
public boolean modify() throws Exception {
if(!ctx.isCallerInRole("editor")) throw new SecurityException("Can't modify");
return true;
}
@RolesAllowed({"viewer","editor"})
public boolean view() throws Exception {
if(!ctx.isCallerInRole("viewer")) throw new SecurityException("Can't view");
return true;
}
}
서버에 사용자와 역할이있는 DB가 있습니다 (conf/login-conf.xml).
<application-policy name="jboss-secure">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="unauthenticatedIdentity">guest</module-option>
<module-option name="dsJndiName">java:/MyDerby</module-option>
<module-option name="principalsQuery">SELECT Password FROM Users WHERE Username=?</module-option>
<module-option name="rolesQuery">SELECT Role, 'Roles' FROM Users WHERE Username=?</module-option>
</login-module>
</authentication>
</application-policy>
Meta-Inf/jboss.xml :
<jboss>
<security-domain>java:/jaas/jboss-secure</security-domain>
</jboss>
내가 이해 한 바와 같이, 클라이언트가 올바르게 인증 될 때까지 EJB 참조를 받아서는 안됩니다. logincontext를 어떻게 사용하고 전혀 사용합니까? 할 수 있습니다 @EJB private MyBeanRemote ejb
? 그리고 모든 일을 어떻게 작동시킬 수 있습니까?
나는 단지 겉보기에 사소한 것을 구축하려고 노력하고 있습니다 : 응용 프로그램 클라이언트의 승인. 내 자신이 멍청하게 느껴진다.
매우 감사합니다.
해결책
나는 최근에 Jaas와 함께 일을했고 그것이 매우 까다로울 수 있음을 알았습니다. 이 두 가지 리소스를 확인하십시오. http://www.jaasbook.com/ 그리고 http://docs.jboss.org/jbossas/admindevel326/html/ch8.chapter.html
나는 또한 다른 Jaas Resources Book을 많이 가지고 있습니다. http://delicious.com/chronosmark/jaas 다른 두 사람이하지 않으면 그들 중 하나가 당신을 도울 것입니다.
다른 팁
튜토리얼이 있습니다 여기
제휴하지 않습니다 StackOverflow