- 浏览: 1193785 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 12819weblogic部署ejb可以通过jar、ear方式。 两种部 ... -
WebLogic11g-集群相关概念
2013-09-18 09:02 5203weblogic集群架构相关的概念有: 1、服务器(serve ... -
WebLogic11g-负载分发
2013-09-17 07:18 28992负载均衡的实现方式有很多种,这里只介绍三种相对来说成本较低的方 ... -
WebLogic11g-半小时让你的domain集群化
2013-09-16 07:04 45201其实网上关于weblogic集群的资料非常多【大部分都是从创建 ... -
WebLogic11g-单双向SSL配置(以Springside3为例)
2013-09-13 06:56 237542、观察weblogic方便开发部署提供的演示秘钥库 (秘钥 ... -
WebLogic11g-常用运维操作
2013-09-11 08:49 33194希望这篇能把weblogic运维时经常遇到的问题、常用的配置汇 ... -
WebLogic11g-配置数据源及全局事务JTA
2013-09-10 07:29 10074这篇文章依然以Springside ... -
WebLogic11g-部署web应用(以Springside3为例)
2013-09-08 22:51 20025Weblogic11g部署web应用,有三种方式,非常简单,但 ... -
WebLogic11g-创建域(Domain)
2013-09-08 11:44 56657最近看到经常有人提问weblogic相关问题,所以闲暇之际写几 ... -
Weblogic9扩展JAAS应用注意点
2011-05-24 23:05 1868一、创建 MBean 定义文件MDF(与Weblogic8一致 ... -
模拟用户登录JAAS验证模块的weblogic应用
2011-03-06 13:58 2427登录JAAS验证模块的weblogic应用,有两种方法 一、直 ... -
BEA-000342 this server is unable to establish a connection to the node manager
2011-01-13 22:05 3585异常信息: <2011-1-13 下午09时21分4 ... -
Weblogic扩展JAAS身份验证案例
2010-12-28 15:24 3251步骤一、首先通过MDF的XML文件定义验证提供程序,文件路径为 ... -
weblogic集群节点监控
2010-12-27 16:41 6735由于项目需要,对weblogic集群做监控,并定时采集系统中队 ... -
weblogic与portal用户同步
2010-12-27 15:54 1636String url = "t3 ... -
WebLogic更改默认cookie名称JSESSIONID
2010-12-27 15:46 4632在weblogic中,如果需要更改默认的CookieName名 ... -
Configuring jdbcdslog on Weblogic and Oracle
2010-05-19 11:29 2428通过JavaEye新闻月刊了解到jdbcdslog工具,尝试在 ... -
Weblogic下部署axis的问题总结
2009-06-21 09:11 5003网上看过很多关于tomcat下的axis部署,却很少有 ... -
BEA-Portal 异常解决案例分析
2008-12-07 22:32 2297一、异常信息: 当在生产环境中登录portalAdmin应用时 ...
相关推荐
WebLogic平台的Web SSO(SAML)解决方案
Weblogic使用YALE(耶鲁)CAS实现SSO单点登录 的方法.doc
java实现自定义Weblogic监控java实现自定义Weblogic监控java实现自定义Weblogic监控
weblogic中文教程 讲解的很详细,感觉不错,共享出来 还有part2和part1,请搜索和下载
Apache实现weblogic集群配置
Weblogic 中文 教程 手册 weblogic 安装到管理的教程
本例详细介绍了如何配置JMS服务以及weblogic的安装及在weblogic中配置JMS服务,例子简单易懂,文档含代码,适合初学者学习使用
前台apache 后台 weblogic实现应用 weblogic91有开发版的license 对于中小型交易型网站的应用足够支撑了。
一、实验目的: 学会在WebLogic平台下部署Servlet与Jsp 二、实验环境 ... 在第上步中你已创建一个工作区,假设为mydomain,则在\bea\user_projects\domains中有一个mydomain目录。运行startWeblogic.cmd。
weblogic 中 如 何 配 置 WTC
weblogic中影响性能的参数全面总结,可以对weblogic性能调优!
一个简单的MVC模式的例子,在weblogic中部署
此配置文档仅适用于weblogic10.3.6版本或以上版本使用,不适用10.3.6以下版本使用。目前在10.3.6版本测试通过,但在10.3.0版本测试出现问题。...此文档参考《weblogic制作证书实现HTTPS 完整版》修改而成。
weblogic weblogic weblogic weblogic
weblogic 9.2的中文CHM帮助,网上收集后进行了打包,对10g及后续版本都有借鉴意义。值得推荐!
weblogic监控 weblogic调优 weblogic版本区别 weblogic启动关闭脚本
weblogic中使用JMS发送和接受消息(Queue and TOPIC)
weblogic中文文档,学习weblogic应用服务器的好资料
1.WEBLOGIC服务器管理概述 2.节点管理器 3.配置WEBLOGIC服务器与集群 4.用日志消息管理WEBLOGIC服务器 5.分发应用 6.配置WEBLOGIC服务器的WEB组件 7.代理对另一个HTTP服务器的请求 8.代理对WEBLOGIC集群的请求 9....
基于WEBLOGIC TUXEDO ORACLE技术实现远程出单系统.pdf