- 浏览: 1202238 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
insistboy:
写的太棒了,受不了
WebLogic11g-创建域(Domain) -
goldyeah:
厉害了 困扰我大半个月的问题解决了 谢谢博主
WebLogic11g-单双向SSL配置(以Springside3为例) -
zy315351965:
404伤不起
开源流程引擎Snaker -
nannan408:
双向的时候谷歌提示“不接受您的登录证书,或者您可能没有提供登录 ...
WebLogic11g-单双向SSL配置(以Springside3为例) -
一颗赛艇:
不成功啊。启动有问题 <Security> < ...
WebLogic11g-单双向SSL配置(以Springside3为例)
weblogic8实现SSO的一种简单方案,就是通过IdentityAsserter解决。
步骤一、SSO目标配置
步骤二、创建Identity Assertion Provider
1、产生MDF:ImepIdentityAsserter.xml
java -DcreateStubs="true" weblogic.management.commo.WebLogicMBeanMaker -MDF ImepIdentityAsserter.xml -files d:\src
2、创建提供程序实现
3、MJF打包
java weblogic.management.commo.WebLogicMBeanMaker -MJF ImepIdentityProvider.jar -files d:\src
4、服务端配置
把这个提供程序(ImepIdentityProvider.jar)复制到WL_HOME/server/lib/mbeantypes目录下,然后重新启动服务器。启动管理控制台,并导航到Security/myrealm Providers/Authentication节点。在可用验证器和身份确认器的列表中,应该可以找到“Configure a new ImepIdentityAsserter...”选项。选择这个选项并点击Create,就可以配置身份确认器了。在接下来的选项卡中,您将会注意到,支持的令牌类型被设置为ImepToken和对于ImepToken是活动的令牌。现在,必须重新启动服务器,从而使修改生效。
步骤三、测试
1、URLConnection测试
2、SSO源测试
由于IdentityAsserter需要客户端提供令牌,故在请求SSO目标应用时,需要在cookie中增加ImepToken属性
SSO目标在接收token并redirect的servlet代码片段为:
步骤一、SSO目标配置
<security-constraint> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.do</url-pattern> <url-pattern>*.html</url-pattern> <url-pattern>*.htm</url-pattern> <url-pattern>*.doc</url-pattern> <url-pattern>*.xls</url-pattern> <url-pattern>*.xlsx</url-pattern> <url-pattern>*.zip</url-pattern> <url-pattern>*.rar</url-pattern> <url-pattern>*.jpg</url-pattern> </web-resource-collection> <auth-constraint> <role-name>secrole</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>CLIENT-CERT</auth-method> <realm-name>myrealm</realm-name> </login-config> <security-role> <role-name>secrole</role-name> </security-role>
步骤二、创建Identity Assertion Provider
1、产生MDF:ImepIdentityAsserter.xml
<?xml version="1.0" ?> <!DOCTYPE MBeanType SYSTEM "commo.dtd"> <MBeanType Name = "ImepIdentityAsserter" DisplayName = "ImepIdentityAsserter" Package = "com.huawei.netforce.security.sso" Extends = "weblogic.management.security.authentication.IdentityAsserter" PersistPolicy = "OnUpdate" > <MBeanAttribute Name = "ProviderClassName" Type = "java.lang.String" Writeable = "false" Default = ""com.huawei.netforce.security.sso.ImepIdentityAsserterProviderImpl"" /> <MBeanAttribute Name = "Description" Type = "java.lang.String" Writeable = "false" Default = ""ImepIdentityAsserter Identity Assertion Provider"" /> <MBeanAttribute Name = "Version" Type = "java.lang.String" Writeable = "false" Default = ""1.0"" /> <MBeanAttribute Name = "SupportedTypes" Type = "java.lang.String[]" Writeable = "false" Default = "new String[] {"ImepToken"}" /> <MBeanAttribute Name = "ActiveTypes" Type = "java.lang.String[]" Default = "new String[] {"ImepToken"}" /> </MBeanType>
java -DcreateStubs="true" weblogic.management.commo.WebLogicMBeanMaker -MDF ImepIdentityAsserter.xml -files d:\src
2、创建提供程序实现
import java.io.PrintStream; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.login.AppConfigurationEntry; import weblogic.management.security.ProviderMBean; import weblogic.security.spi.*; public class ImepIdentityAsserterProviderImpl implements AuthenticationProvider, IdentityAsserter { private static final String TOKEN_TYPE = "ImepToken"; private static final String TOKEN_PREFIX = "username="; private String description; public ImepIdentityAsserterProviderImpl() { } public AppConfigurationEntry getAssertionModuleConfiguration() { return null; } public IdentityAsserter getIdentityAsserter() { return this; } public AppConfigurationEntry getLoginModuleConfiguration() { return null; } public PrincipalValidator getPrincipalValidator() { return null; } public String getDescription() { return description; } public void initialize(ProviderMBean mbean, SecurityServices services) { System.out.println("ImepIdentityAsserterProviderImpl.initialize"); ImepIdentityAsserterMBean myMBean = (ImepIdentityAsserterMBean)mbean; description = myMBean.getDescription() + "\n" + myMBean.getVersion(); } public void shutdown() { } public CallbackHandler assertIdentity(String type, Object token) throws IdentityAssertionException { if(!"ImepToken".equals(type)) { String error = "ImepIdentityAsserterProviderImpl received unknown token type \"" + type + "\"." + " Expected " + "ImepToken"; throw new IdentityAssertionException(error); } if(!(token instanceof byte[])) { String error = "ImepIdentityAsserterProviderImpl received unknown token class \"" + token.getClass() + "\"." + " Expected a byte[]."; throw new IdentityAssertionException(error); } byte tokenBytes[] = (byte[])token; if(tokenBytes == null || tokenBytes.length < 1) { String error = "ImepIdentityAsserterProviderImpl received empty token byte array"; throw new IdentityAssertionException(error); } String tokenStr = new String(tokenBytes); if(!tokenStr.startsWith("username=")) { String error = "ImepIdentityAsserterProviderImpl received unknown token string \"" + type + "\"." + " Expected " + "username=" + "username"; throw new IdentityAssertionException(error); } else { String userName = tokenStr.substring("username=".length()); return new ImepCallbackHandlerImpl(userName); } } }
import java.io.IOException; import javax.security.auth.callback.*; public class ImepCallbackHandlerImpl implements CallbackHandler { private String userName; public ImepCallbackHandlerImpl(String aUserName) { userName = aUserName; } public void handle(Callback callbacks[]) throws IOException, UnsupportedCallbackException { for(int i = 0; i < callbacks.length; i++) { Callback callback = callbacks[i]; if(!(callback instanceof NameCallback)) throw new UnsupportedCallbackException(callback, "Unrecognized Callback"); NameCallback nameCallback = (NameCallback)callback; nameCallback.setName(userName); } } }
3、MJF打包
java weblogic.management.commo.WebLogicMBeanMaker -MJF ImepIdentityProvider.jar -files d:\src
4、服务端配置
把这个提供程序(ImepIdentityProvider.jar)复制到WL_HOME/server/lib/mbeantypes目录下,然后重新启动服务器。启动管理控制台,并导航到Security/myrealm Providers/Authentication节点。在可用验证器和身份确认器的列表中,应该可以找到“Configure a new ImepIdentityAsserter...”选项。选择这个选项并点击Create,就可以配置身份确认器了。在接下来的选项卡中,您将会注意到,支持的令牌类型被设置为ImepToken和对于ImepToken是活动的令牌。现在,必须重新启动服务器,从而使修改生效。
步骤三、测试
1、URLConnection测试
try { //test账户需要在myrealm中进行配置 String token = "username=test"; //是否需要编码可在控制台配置时取消,默认为BASE64编码 BASE64Encoder encoder = new BASE64Encoder(); String encodedToken = encoder.encodeBuffer(token.getBytes()); URL url = new URL("http://localhost:7001/app/index.jsp"); URLConnection connection = url.openConnection(); connection.setRequestProperty("ImepToken",encodedToken); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line = ""; while((line = in.readLine()) != null) { System.out.println(line); } } catch(Exception e) { e.printStackTrace(); }
2、SSO源测试
由于IdentityAsserter需要客户端提供令牌,故在请求SSO目标应用时,需要在cookie中增加ImepToken属性
SSO目标在接收token并redirect的servlet代码片段为:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String tokenValue = request.getParameter("token"); String redirect = request.getParameter("redirect"); if(StringUtils.isNotEmpty(tokenValue)) { //IdentityAsserterProvider从cookie或者header中取token Cookie cookie = new Cookie("ImepToken", tokenValue); response.addCookie(cookie); response.setHeader("ImepToken",tokenValue); //添加P3P策略主要解决iframe集成时浏览器阻止跨域cookie response.setHeader("P3P","CP=CAO PSA OUR"); response.sendRedirect(redirect); } }
发表评论
-
WebLogic11g-EJB部署
2013-09-25 08:31 12889weblogic部署ejb可以通过jar、ear方式。 两种部 ... -
WebLogic11g-集群相关概念
2013-09-18 09:02 5276weblogic集群架构相关的概念有: 1、服务器(serve ... -
WebLogic11g-负载分发
2013-09-17 07:18 29060负载均衡的实现方式有很多种,这里只介绍三种相对来说成本较低的方 ... -
WebLogic11g-半小时让你的domain集群化
2013-09-16 07:04 45323其实网上关于weblogic集群的资料非常多【大部分都是从创建 ... -
WebLogic11g-单双向SSL配置(以Springside3为例)
2013-09-13 06:56 240392、观察weblogic方便开发部署提供的演示秘钥库 (秘钥 ... -
WebLogic11g-常用运维操作
2013-09-11 08:49 33297希望这篇能把weblogic运维时经常遇到的问题、常用的配置汇 ... -
WebLogic11g-配置数据源及全局事务JTA
2013-09-10 07:29 10284这篇文章依然以Springside ... -
WebLogic11g-部署web应用(以Springside3为例)
2013-09-08 22:51 20124Weblogic11g部署web应用,有三种方式,非常简单,但 ... -
WebLogic11g-创建域(Domain)
2013-09-08 11:44 56768最近看到经常有人提问weblogic相关问题,所以闲暇之际写几 ... -
Weblogic9扩展JAAS应用注意点
2011-05-24 23:05 1926一、创建 MBean 定义文件MDF(与Weblogic8一致 ... -
模拟用户登录JAAS验证模块的weblogic应用
2011-03-06 13:58 2489登录JAAS验证模块的weblogic应用,有两种方法 一、直 ... -
BEA-000342 this server is unable to establish a connection to the node manager
2011-01-13 22:05 3637异常信息: <2011-1-13 下午09时21分4 ... -
Weblogic扩展JAAS身份验证案例
2010-12-28 15:24 3304步骤一、首先通过MDF的XML文件定义验证提供程序,文件路径为 ... -
weblogic集群节点监控
2010-12-27 16:41 6832由于项目需要,对weblogic集群做监控,并定时采集系统中队 ... -
weblogic与portal用户同步
2010-12-27 15:54 1685String url = "t3 ... -
WebLogic更改默认cookie名称JSESSIONID
2010-12-27 15:46 4749在weblogic中,如果需要更改默认的CookieName名 ... -
Configuring jdbcdslog on Weblogic and Oracle
2010-05-19 11:29 2470通过JavaEye新闻月刊了解到jdbcdslog工具,尝试在 ... -
Weblogic下部署axis的问题总结
2009-06-21 09:11 5080网上看过很多关于tomcat下的axis部署,却很少有 ... -
BEA-Portal 异常解决案例分析
2008-12-07 22:32 2350一、异常信息: 当在生产环境中登录portalAdmin应用时 ...
相关推荐
3. 实现 SSO:在 Weblogic 服务器中实现 SSO 单点登录,使用 CAS 服务器来验证用户的身份。 使用 YALE CAS 实现 SSO 单点登录可以提供一个安全、可靠的身份验证解决方案,适合大多数的企业应用场景。
在WebLogic Server中实现SSO,关键在于利用SAML作为通信协议,通过身份提供者(IDP)和服务提供者(SP)之间的协作来实现用户的透明登录。具体来说: 1. **身份验证流程**:当用户尝试访问某个SP时,SP会重定向用户...
以下是对SSO简单实现的详细说明: 在实现SSO时,有多种方法可以选择: 1. **商业软件**:一些大型公司如 Netgrity(Siteminder)、Novell(iChain)、RSA(ClearTrust)等提供专门的SSO解决方案。这些软件通常具备...
Java单点登录(Single Sign-On, SSO)的实现是一个复杂但重要的任务,尤其是在大型企业或组织中,它能够提供用户友好的访问体验,减少多次输入凭证的繁琐过程。SSO技术的应用通常涉及到多系统间的身份验证整合,使得...
Apache 实现 WebLogic 集群配置是一种常见的负载均衡策略,它通过Apache HTTP服务器作为反向代理,将来自客户端的请求分发到多个WebLogic服务器实例上,从而提高应用程序的可用性和性能。以下是对该配置过程的详细...
JMS提供了一种标准接口,使得应用开发者可以使用不同的消息中间件(Message Broker),如WebLogic Server,而无需关心具体的实现细节。 WebLogic Server是一款由Oracle公司提供的企业级应用服务器,它支持JMS服务,...
java实现自定义Weblogic监控java实现自定义Weblogic监控java实现自定义Weblogic监控
1. 部署方式:包括手动部署、自动部署和热部署,可以通过控制台或者命令行工具(WLST,WebLogic Scripting Tool)进行。 2. 部署计划:定义何时、何地、如何部署应用程序,可以设置滚动更新策略,减少服务中断时间。...
在本文中,我们将深入探讨如何在WebLogic环境中部署EJB 2.0,特别是实现本地接口的Session Bean。 EJB 2.0是Java EE早期版本中的组件模型,用于构建可复用、分布式的企业级服务。它定义了三种主要类型的Bean:...
WebLogic Server作为Oracle提供的企业级Java应用服务器,支持WebSocket协议,为开发者提供了在Java EE环境中实现WebSocket应用的能力。本示例代码是针对在WebLogic上开发WebSocket应用的一个详细实例,旨在帮助...
在WebLogic中部署MVC(模型-视图-控制器)应用程序是一个常见的实践,尤其是在企业级Java应用开发中。WebLogic是Oracle公司提供的一个强大的Java EE(Enterprise Edition)应用服务器,它支持各种Java应用架构,包括...
weblogic中文教程 讲解的很详细,感觉不错,共享出来 还有part2和part1,请搜索和下载
在Weblogic Server 10.3.4中,这个问题可以通过在WEB-INF\lib目录下配置weblogic.xml文件来解决。该文件的配置内容如下: ```xml <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application ...
总之,通过Nginx实现Tomcat和WebLogic集群的负载均衡,不仅可以提高系统的可用性和响应速度,还能有效应对高并发访问。结合合理的故障处理机制和性能调优策略,可以构建出稳定且高效的Web服务架构。
8. **API参考**:"javadocs"子文件可能包含WebLogic Server的API详细文档,这些文档可以帮助开发者了解如何使用提供的API接口来编程,实现特定功能。 9. **故障排除**:文档通常会包含故障排查和诊断技巧,帮助管理...
可以配置角色、权限,设置SSL(Secure Sockets Layer)和TLS(Transport Layer Security)以保护通信安全,还可以实现单点登录(SSO)和企业目录集成。 七、性能优化 WebLogic的性能优化包括内存调优、线程池配置、...
在这篇文章中,我们将详细介绍如何在 Windows 系统下实现 Weblogic 的开机自动启动。 Weblogic 安装目录 在开始配置自动启动之前,我们首先需要找到 Weblogic 的安装目录。默认情况下,Weblogic 的安装目录位于 `C...