<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    JAAS + EJB3.0 + Jboss unable to propaogate
</h3>
<span style="margin-bottom: 10px;">
    reply from <a href="http://community.jboss.org/people/Gauravag">Gaurav Agarwal</a> in <i>EJB 3.0</i> - <a href="http://community.jboss.org/message/552714#552714">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Thanks for ur help.Finaaly i made my application complete.</p><p>The code is as folows..</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Servlet where EJB is called and our authentication is done</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>try</b></font><font color="navy">{</font>
<font color="darkgreen">//here u need to get the logincontext called so that u get authenticated subject</font>
LoginContext loginContext = <font color="navy"><b>new</b></font> LoginContext(<font color="red">"login-config file name"</font>,<font color="navy"><b>new</b></font> PasswordCallbackHandler());
loginContext.login();
&#160;
<font color="darkgreen">//calling ur EJB module</font>
Properties properties = <font color="navy"><b>new</b></font> Properties();
 properties.setProperty(<font color="red">"INITIAL_CONTEXT_FACTORY"</font>,<font color="red">"org.jnp.interfaces.NamingContextFactory"</font>);
 properties.setProperty(<font color="red">"URL_PKG_PREFIXES"</font>,<font color="red">"org.jboss.naming:org.jnp.interfaces"</font>);
 properties.setProperty(<font color="red">"PROVIDER_URL"</font>,<font color="red">"jnp://localhost:1099"</font>);
&#160;&#160;&#160;&#160; 
Context&#160; context = <font color="navy"><b>new</b></font> InitialContext(properties);
Object object = context.lookup(<font color="red">"java/AttributeBI/remote"</font>);
<font color="darkgreen">//rest u now</font>
loginContext.logout();
<font color="navy">}</font><font color="navy"><b>catch</b></font>(Exception exception) <font color="navy">{</font>
 exception.printStackTrace();<font color="navy">}</font>
&#160;
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Here i have my custom login module which requires (NOTE:user defined) PricipalClass,GroupClass(for roles) ,CallbackHandlers for username and passwords and last CulomLoginModule that implements LoginModule</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre ___default_attr="java" jivemacro="code">PasswordCallbackHandler</pre><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> PasswordCallbackHandler <font color="navy"><b>implements</b></font> CallbackHandler <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> PasswordCallbackHandler() <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> handle(Callback[] callbacks)<font color="navy"><b>throws</b></font> java.io.IOException, UnsupportedCallbackException <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>for</b></font> (<font color="navy"><b>int</b></font> i = 0; i &lt; callbacks.length; i++) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (callbacks[i] <font color="navy"><b>instanceof</b></font> NameCallback) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.print(<font color="red">"*"</font>+((NameCallback)callbacks[i]).getPrompt());
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ((NameCallback)callbacks[i]).setName(<font color="red">"username"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font> <font color="navy"><b>else</b></font> <font color="navy"><b>if</b></font> (callbacks[i] <font color="navy"><b>instanceof</b></font> PasswordCallback) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.print(<font color="red">"*"</font>+((PasswordCallback)callbacks[i]).getPrompt());
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; String pass=<font color="navy"><b>new</b></font> String(<font color="red">"password"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ((PasswordCallback)callbacks[i]).setPassword(pass.toCharArray());
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font><font color="navy">}</font><font color="navy">}</font><font color="navy">}</font>&#160;&#160;&#160; 
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>PrincipalClass</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> UserPrincipal <font color="navy"><b>implements</b></font> Principal,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Serializable<font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>private</b></font> String name;
&#160;
&#160;&#160;&#160; <font color="darkgreen">/*** Description : UserPrincipal constructor*/</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> UserPrincipal()<font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; name=<font color="red">""</font>;
&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//UserPrincipal()</font>
&#160; <font color="darkgreen">/** * Description : Parameterize constructor * @param name&#160; */</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> UserPrincipal(String name)<font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.name=name;
&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//UserPrincipal()</font>
&#160;
&#160;&#160;&#160; <font color="darkgreen">/** * Description : This method is to get Name * @return&#160; */</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> String getName() <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> this.name;
&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//getName()</font>
&#160;
&#160;&#160;&#160;&#160; <font color="navy"><b>public</b></font> String toString() <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>return</b></font>(<font color="red">"UserPrincipal:&#160; "</font> + this.name);
&#160;&#160;&#160; <font color="navy">}</font>
&#160;
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> equals(Object o) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (o == <font color="navy"><b>null</b></font>) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (<font color="navy"><b>this</b></font> == o) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (!(o <font color="navy"><b>instanceof</b></font> UserPrincipal)) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; UserPrincipal that = (UserPrincipal) o;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (this.getName().equals(that.getName())) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
&#160;&#160;&#160; <font color="navy">}</font>
&#160;
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>int</b></font> hashCode() <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> this.name.hashCode();
&#160;&#160;&#160; <font color="navy">}</font>
&#160;
<font color="navy">}</font><font color="darkgreen">//UserPrinciple</font>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Pricicpal Group</p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> PrincipalGroup <font color="navy"><b>implements</b></font> Group, Serializable<font color="navy">{</font>
&#160; <font color="navy"><b>private</b></font> <font color="navy"><b>final</b></font> String name;
&#160; <font color="navy"><b>private</b></font> <font color="navy"><b>final</b></font> Set&lt;Principal&gt; users = <font color="navy"><b>new</b></font> HashSet&lt;Principal&gt;();
&#160;
&#160; <font color="navy"><b>public</b></font> PrincipalGroup(String name) <font color="navy">{</font>
&#160;&#160;&#160; this.name = name;
&#160; <font color="navy">}</font>
&#160;
&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> addMember(Principal user) <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>return</b></font> users.add(user);
&#160; <font color="navy">}</font>
&#160;
&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> removeMember(Principal user) <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>return</b></font> users.remove(user);
&#160; <font color="navy">}</font>
&#160;
&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> isMember(Principal member) <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>return</b></font> users.contains(member);
&#160; <font color="navy">}</font>
&#160;
&#160; <font color="navy"><b>public</b></font> Enumeration&lt;? <font color="navy"><b>extends</b></font> Principal&gt; members() <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>return</b></font> Collections.enumeration(users);
&#160; <font color="navy">}</font>
&#160;
&#160; <font color="navy"><b>public</b></font> String getName() <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>return</b></font> name;
&#160; <font color="navy">}</font>
&#160;
&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> equals(Object o) <font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>if</b></font> (o == <font color="navy"><b>null</b></font>) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (<font color="navy"><b>this</b></font> == o) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (!(o <font color="navy"><b>instanceof</b></font> PrincipalGroup)) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; PrincipalGroup that = (PrincipalGroup) o;
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> (this.getName().equals(that.getName())) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
&#160;&#160;&#160; <font color="navy">}</font>
&#160;
&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>int</b></font> hashCode() <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> this.name.hashCode();
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;
<font color="navy">}</font>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>PasswordLoginModule</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> PasswordLoginModule <font color="navy"><b>implements</b></font> LoginModule<font color="navy">{</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> Subject subject;
&#160;&#160;&#160; <font color="navy"><b>public</b></font> CallbackHandler callbackHandler;
&#160;&#160;&#160; <font color="navy"><b>public</b></font> UserPrincipal user_principal;
&#160;&#160;&#160; <font color="navy"><b>private</b></font> UserPrincipal[] roles;
&#160;&#160;&#160; <font color="navy"><b>public</b></font> UserCredential user_credential;
&#160;&#160;&#160; Map sharedState;
&#160;&#160;&#160; Map option;
&#160;&#160;&#160; String url;
&#160;&#160;&#160; String driver;
&#160;&#160;&#160; <font color="navy"><b>private</b></font> String username;
&#160;&#160;&#160; <font color="navy"><b>private</b></font> String password;
&#160;&#160;&#160; <font color="navy"><b>boolean</b></font> debug, result;
&#160;&#160;&#160; Vector&lt;UserCredential&gt; vector_credentials;
&#160;&#160;&#160; Vector&lt;UserPrincipal&gt; vector_principal;
&#160;
&#160;
&#160;&#160;&#160; <font color="darkgreen">/**
&#160;&#160;&#160;&#160; * Description : Initialization method for PasswordLoginModule
&#160;&#160;&#160;&#160; * @param subject
&#160;&#160;&#160;&#160; * @param callbackHandler
&#160;&#160;&#160;&#160; * @param sharedState
&#160;&#160;&#160;&#160; * @param options
&#160;&#160;&#160;&#160; */</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> initialize(Subject subject,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; CallbackHandler callbackHandler,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Map sharedState,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Map options) <font color="navy">{</font>
&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"----------Initialization In Login Module----------"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.subject=subject;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.callbackHandler=callbackHandler;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.sharedState=sharedState;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.option=options;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; vector_principal = <font color="navy"><b>new</b></font> Vector();
&#160;&#160;&#160;&#160;&#160;&#160;&#160; vector_credentials = <font color="navy"><b>new</b></font> Vector();&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font>(option.containsKey(<font color="red">"debug"</font>)) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; debug = <font color="red">"true"</font>.equals(option.get(<font color="red">"debug"</font>));
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//if</font>
&#160; <font color="navy">}</font><font color="darkgreen">//Initialization</font>
&#160;
&#160;&#160; <font color="darkgreen">/**
&#160;&#160;&#160;&#160; * Description : login method of module
&#160;&#160;&#160;&#160; * @return
&#160;&#160;&#160;&#160; * @throws LoginException
&#160;&#160;&#160;&#160; */</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> login() <font color="navy"><b>throws</b></font> LoginException <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font>( debug ) <font color="navy">{</font>
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Callback[] callbacks = <font color="navy"><b>new</b></font> Callback[2];
&#160;&#160;&#160;&#160;&#160;&#160;&#160; callbacks[0] = <font color="navy"><b>new</b></font> NameCallback(<font color="red">"UserName :"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; callbacks[1] = <font color="navy"><b>new</b></font> PasswordCallback(<font color="red">"Password :"</font>, <font color="navy"><b>true</b></font>);&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>try</b></font> <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; callbackHandler.handle(callbacks);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font><font color="navy"><b>catch</b></font>(Exception ex) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ex.printStackTrace();
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; username = ((NameCallback) callbacks[0]).getName();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"user name =&#160; "</font>+username);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; password = <font color="navy"><b>new</b></font> String(((PasswordCallback) callbacks[1]).getPassword());
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"pass =&#160; "</font>+password);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; user_principal = <font color="navy"><b>new</b></font> UserPrincipal(username);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; vector_principal.add(user_principal);
 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; roles = <font color="navy"><b>new</b></font> UserPrincipal[] <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>new</b></font> UserPrincipal(<font color="red">"done"</font>) <font color="darkgreen">// for example</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>;
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; UserCredential userCredential = <font color="navy"><b>new</b></font> UserCredential();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; userCredential.setProperty(<font color="red">"Roles"</font>,<font color="red">"done"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; vector_credentials.add(userCredential);
&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//login()</font>
&#160;
&#160;
&#160; <font color="darkgreen">/**
&#160;&#160;&#160;&#160; * Description : Commit method to set subject over logincontext
&#160;&#160;&#160;&#160; *&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; after successful login
&#160;&#160;&#160;&#160; * @return
&#160;&#160;&#160;&#160; * @throws LoginException
&#160;&#160;&#160;&#160; */</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> commit() <font color="navy"><b>throws</b></font> LoginException <font color="navy">{</font>
&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font>( debug ) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"------------Commit Event----------"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>if</b></font> ( subject.isReadOnly() ) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>throw</b></font> <font color="navy"><b>new</b></font> LoginException(<font color="red">"Subject is Readonly"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//if</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>try</b></font><font color="navy">{</font>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.subject.getPrincipals().addAll(vector_principal);
&#160;
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; PrincipalGroup group = <font color="navy"><b>new</b></font> PrincipalGroup(<font color="red">"Roles"</font>);
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>for</b></font> (UserPrincipal role : roles) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; group.addMember(role);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; subject.getPrincipals().add(group);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; subject.getPublicCredentials().addAll(vector_credentials);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font><font color="navy"><b>catch</b></font>(Exception ex)<font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ex.printStackTrace(System.out);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>throw</b></font> <font color="navy"><b>new</b></font> LoginException(ex.getMessage());
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//catch</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>else</b></font> <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>false</b></font>;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//commit()</font>
&#160;
&#160;&#160;&#160; <font color="darkgreen">/**
&#160;&#160;&#160;&#160; * Description : This method get called when login is get aborted
&#160;&#160;&#160;&#160; * @return
&#160;&#160;&#160;&#160; * @throws LoginException
&#160;&#160;&#160;&#160; */</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> abort() <font color="navy"><b>throws</b></font> LoginException <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"-----------Abort Event--------------"</font>);
&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//abort()</font>
 <font color="darkgreen">/**
&#160;&#160;&#160;&#160; * Decription : This method is to get logout from logincontext
&#160;&#160;&#160;&#160; * @return
&#160;&#160;&#160;&#160; * @throws LoginException
&#160;&#160;&#160;&#160; */</font>
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>boolean</b></font> logout() <font color="navy"><b>throws</b></font> LoginException <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; vector_principal.clear();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; vector_credentials.clear();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>return</b></font> <font color="navy"><b>true</b></font>;
&#160;&#160;&#160; <font color="navy">}</font><font color="darkgreen">//logout()&#160;&#160; </font>
&#160;&#160; <font color="navy">}</font><font color="darkgreen">// PasswordLoginModule</font>
&#160;
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java">@Stateless(name=mapped.JNDI_NAME)
@RolesAllowed(<font color="red">"done"</font>)
<font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> AttributeBO <font color="navy"><b>implements</b></font> AttributeBI <font color="navy">{</font>
&#160;
<font color="navy"><b>private</b></font> SessionContext sctx;
&#160;
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> setMessageContext(MessageContext messageContext) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.messageContext = messageContext;
&#160;&#160;&#160; <font color="navy">}</font>
@Resource
<font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> setSctx(SessionContext sctx)<font color="navy">{</font>&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.sctx = sctx;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160; <font color="navy">}</font>
@Resource
<font color="navy"><b>private</b></font> <font color="navy"><b>void</b></font> seteJBContext(EJBContext eJBContext) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.eJBContext = eJBContext;
&#160;&#160;&#160; <font color="navy">}</font>
<font color="navy"><b>private</b></font> AttributeEAO attributeEAO;
&#160;
 @EJB
 <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> setAttributeEAO(AttributeEAO attributeEAO) <font color="navy">{</font>
&#160; this.attributeEAO = attributeEAO;
&#160; 
 <font color="navy">}</font>
&#160;
 <font color="darkgreen">/**
&#160; * Description : This method is to create Attribute
&#160; * @param attribute
&#160; */</font>
 <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> createAttribute(Attribute attribute) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160; Principal user_principle=sctx.getCallerPrincipal();
&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"Ejb Side Principal "</font>+user_principle.getName());
&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"Ejb Side isCallerInRole "</font>+sctx.isCallerInRole(<font color="red">"done"</font>));
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
 <font color="navy">}</font><font color="darkgreen">//createAttribute()</font>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Now in this i want to get my credentials but there is no existing metood to receive the credentials.. Credentails may contain some propertiesas our own variable values...</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>my jboss-xml is as</p><pre class="jive-pre"><code class="jive-code jive-xml"><span class="jive-xml-tag">&lt;jboss&gt;</span>
<span class="jive-xml-tag">&lt;security-domain&gt;</span>java:/jaas/PassAuth<span class="jive-xml-tag">&lt;/security-domain&gt;</span>
<span class="jive-xml-tag">&lt;/jboss&gt;</span>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>my config file ia as</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code">PassAuth{
&#160;&#160;&#160;&#160;&#160; com.mqa.iam.module.PasswordLoginModule required debug="true" 
};
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Also my login config is like this :</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-xml"><span class="jive-xml-tag">&lt;application-policy name="PassAuth"&gt;</span>
&#160;&#160;&#160; <span class="jive-xml-tag">&lt;authentication&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;login-module code="ur own cutomloginmodule" flag="required"&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;module-option name="debug"&gt;</span>true<span class="jive-xml-tag">&lt;/module-option&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/login-module&gt;</span>&#160; 
<span class="jive-xml-comment">&lt;!--this is used to propagate the values from web to ejb this is must --&gt;</span>&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;login-module code="org.jboss.security.ClientLoginModule" flag="required"&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/login-module&gt;</span>&#160;&#160;&#160; 
&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/authentication&gt;</span>
&#160; <span class="jive-xml-tag">&lt;/application-policy&gt;</span>
</code></pre></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/552714#552714">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in EJB 3.0 at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>