由于经典的JNDI查找和RMI-IIOP方法调用,我的应用程序是一个独立的Swing客户端调用EJB无状态会话bean.它作为Java WebStart应用程序启动.我的目标是从获取客户端用户的身份EJBContext与getCallerPrincipal感谢的Kerberos SSO在Windows工作站,ActiveDirectory中和在Linux上运行的WebSphere服务器之间的方法.
由于信息中心文档,我已经在网络部署模式下成功配置了我的WebSphere单元以支持Kerberos身份验证.
这两个krb5.conf和krb5.keytab文件都OK,并在Linux测试kinit,klist并且wsadmin,$AdminTask validateKrbConfig解答true.
在客户端安装不只是指JAAS login.config文件,以实现与指挥系统属性.我的直觉告诉我这可能还不够.
但现在,我找不到更多信息来完成测试用例:
更新
由于没有运行JavaEE客户端容器./launchClient,我在JNLP中设置了要读取的必需属性sas.client.props和JAAS登录配置:
<property name="java.security.auth.login.config" value="C:\temp\wsjaas_client.config"/>
<property name="com.ibm.CORBA.ConfigURL" value="C:\temp\sas.client.props"/>
Run Code Online (Sandbox Code Playgroud)
我wsjaas_client.config是针对Oracle Java的,因此它包含:
WSKRB5Login{
com.sun.security.auth.module.Krb5LoginModule required
debug=true useTicketCache=true doNotPrompt=true;
};
Run Code Online (Sandbox Code Playgroud)
我的sas.client.props包含:
com.ibm.CORBA.securityEnabled=true
com.ibm.CORBA.authenticationTarget=KRB5
com.ibm.CORBA.loginSource=krb5Ccache
com.ibm.CORBA.loginUserid=
com.ibm.CORBA.loginPassword=
com.ibm.CORBA.krb5CcacheFile=
com.ibm.CORBA.krb5ConfigFile=C:\\temp\\krb5.conf
Run Code Online (Sandbox Code Playgroud)
目前,没有触发Kerberos身份验证:WAS/myserver.mydomain.com我的kerberos缓存(来自Windows或Linux工作站)中的SPN没有TGS,并且仍然匿名建立JNDI连接.
没有错误消息,没有警告,最后没有委托人.我如何诊断错误或缺乏?
更新2012/06/20
这是向前迈出的一步.在我的应用程序JNLP中运行Oracle Java,我已设置以下属性以使用IBM ORB并启用完整的跟踪和调试信息:
<property name="org.omg.CORBA.ORBSingletonClass" value="com.ibm.rmi.corba.ORBSingleton"/>
<property name="org.omg.CORBA.ORBClass" value="com.ibm.CORBA.iiop.ORB"/> …Run Code Online (Sandbox Code Playgroud) 我正试图在我的Android应用程序中用Fresco替换Picasso.但是我不确定如何使用Fresco简单地加载位图.
毕加索我会做以下几点.
Bitmap poster = Picasso.with(getActivity())
.load(url)
.resize(Utils.convertDpToPixel(WIDTH,HEIGHT))
.centerCrop()
.get();
Run Code Online (Sandbox Code Playgroud)
我一直无法弄清楚如何用这个Fresco创建一个Bitmap.有任何想法吗?
我正在使用从原始Java运行时上运行的独立EJB客户端到JavaEE服务器的自定义Principal测试JAAS Subject的传播.我的目标是JBoss和WebSphere实现.
根据这个论坛帖子,我预计它可以轻松地与JBoss一起使用.
这是我的EJB客户端代码代码段:
Subject subject = new Subject();
Principal myPrincipal = new MyPrincipal("me I myself");
subject.getPrincipals().add(myPrincipal);
PrivilegedExceptionAction<String> action = new PrivilegedExceptionAction<String>() {
public String run() throws Exception {
String result;
System.out.println("Current Subject: " + Subject.getSubject(AccessController.getContext()));
InitialContext ic = new InitialContext();
Business1 b = (Business1) ic.lookup("StatelessBusiness1");
result = b.getNewMessage("Hello World");
return result;
}
};
result = subject.doAs(subject, action);
System.out.println("result "+result);
Run Code Online (Sandbox Code Playgroud)
服务器端代码是:
public String getNewMessage(String msg) {
System.out.println("getNewMessage principal: " + sessionContext.getCallerPrincipal());
System.out.println("Current Subject: " …Run Code Online (Sandbox Code Playgroud) 我在使用hornetQ的ubuntu上使用jboss AS 6 Final
我使用管理面板在名为Message Buffer Queue的服务器上创建了一个新的Queue.
我收到以下错误:
Unable to validate user: guest for check type CONSUME for address jms.queue.MessageBufferQueue
Run Code Online (Sandbox Code Playgroud)
这是我的文件:
package org.jboss.ejb3timers.example;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.UUID;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
public class TestClass {
ConnectionFactory Hconnection=null;
Queue q=null;
Connection Hconn=null;
Context lContext=null;
MessageConsumer messageConsumer=null;
MessageProducer messageProducer=null;
javax.jms.Session session=null;
/** …Run Code Online (Sandbox Code Playgroud) 我有一个在JBoss 4.2.3应用服务器上运行的J2EE应用程序.可以通过Web界面访问该应用程序.身份验证通过基本身份验证完成.在EJB内部,我询问bean的安全上下文中的主体(登录用户的名称),并在允许此用户访问EJB的此方法时进行一些授权检查.EJB处于与处理Web前端的servlet不同的生活中,因此我无法直接访问spring应用程序上下文.
我想切换到Spring Security来处理用户登录.
如何将spring登录信息传播到JBoss安全上下文,这样我仍然可以使用我的EJB而不必重写它们?
我已经找到了页谈论"使用Spring Security到EJB层传播身份",但可惜的是它指的是一个旧版本的Spring Security(Acegi的)和我不熟悉不够使用Spring Security,使这项工作与实际版本(3.0.2).
这是使用WebLogic看起来类似的东西.