전체 J2EE 아키텍처가 처음입니다. 누군가 나를 도울 수 있을까요?EJB 3.0 서버에 대한 응용 프로그램 클라이언트를 인증하는 방법
내가 로그인과 스윙 클라이언트, 시스템 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의/로그인-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
을 사용할 수 있습니까? 그리고 어떻게 모든 것을 작동하게합니까?
나는 응용 프로그램 클라이언트의 승인과 같은 사소한 일을 그냥 만들려고 노력하고 있습니다. 내 자신이 멍청하게 느껴진다.
대단히 감사합니다.
위의 달성 방법을 공유해주세요. –