- 浏览: 563554 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (145)
- apache-struts (3)
- apache-shiro (4)
- apache-wicket (1)
- spring (34)
- spring-data-jpa (2)
- spring-mvc (20)
- spring-security (1)
- spring-webflow (1)
- hibernate (2)
- mongodb (1)
- ibatis (5)
- mysql (4)
- 开源组件 (18)
- java (3)
- maven (7)
- jBPM (1)
- EJB (1)
- JMS (2)
- servlet / jsp (9)
- javascript / jquery (10)
- 工作技巧 (12)
- ubuntu (6)
- bootstrap (10)
- javaee (1)
- 他山石 (7)
- jetbrick (1)
最新评论
-
yubao2008:
[size=x-small]为什么我也这样试了, 就是没有生效 ...
javax.servlet.http.HttpServletResponse 得到 status_code -
chenrl:
...
SpringMVC杂记(十五) spring-mvc controller 的切面 -
LONGTENGLONG:
你好,这样配置的,得到的集合为空,是什么原因?
apache-shiro杂记(一) 统计在线用户数目 -
xiafengfeiwu:
[flash=200,200][url]引用[/url][/f ...
apache-shiro 学习笔记 -
3108493554:
你好 ,有些问题想请教下,加下我qq310849354,你这上 ...
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
SpringMVC杂记(十六) spring-mvc 与 openid4java
以GoogleOpenID 为例,试验了OAuth单点登录的用法
以GoogleOpenID 为例,试验了OAuth单点登录的用法
<dependency> <groupId>org.openid4java</groupId> <artifactId>openid4java</artifactId> <version>0.9.8</version> </dependency>
import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.openid4java.OpenIDException; import org.openid4java.consumer.ConsumerManager; import org.openid4java.consumer.VerificationResult; import org.openid4java.discovery.DiscoveryInformation; import org.openid4java.discovery.Identifier; import org.openid4java.message.AuthRequest; import org.openid4java.message.AuthSuccess; import org.openid4java.message.ParameterList; import org.openid4java.message.ax.AxMessage; import org.openid4java.message.ax.FetchRequest; import org.openid4java.message.ax.FetchResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.util.UriComponentsBuilder; import com.google.common.base.Throwables; @Controller @RequestMapping("/openid") @SuppressWarnings("rawtypes") public class SecurityOpenIDController { public static final String GOOGLE_ENDPOINT = "https://www.google.com/accounts/o8/id"; private static final Logger LOGGER = LoggerFactory.getLogger(SecurityOpenIDController.class); public final ConsumerManager manager = new ConsumerManager(); @RequestMapping("/login") public void login( UriComponentsBuilder builder, HttpServletRequest request, HttpServletResponse response ) throws Exception { // configure the return_to URL where your application will receive // the authentication responses from the OpenID provider String returnUrl = builder.path("/openid/return").build().toUriString(); // --- Forward proxy setup (only if needed) --- // ProxyProperties proxyProps = new ProxyProperties(); // proxyProps.setProxyName("proxy.example.com"); // proxyProps.setProxyPort(8080); // HttpClientFactory.setProxyProperties(proxyProps); // perform discovery on the user-supplied identifier List discoveries = manager.discover(GOOGLE_ENDPOINT); // attempt to associate with the OpenID provider // and retrieve one service endpoint for authentication DiscoveryInformation discovered = manager.associate(discoveries); // store the discovery information in the user's session request.getSession().setAttribute("openid-disc", discovered); // obtain a AuthRequest message to be sent to the OpenID provider AuthRequest authReq = manager.authenticate(discovered, returnUrl); // attribute Exchange FetchRequest fetch = FetchRequest.createFetchRequest(); fetch.addAttribute("email", "http://axschema.org/contact/email", true); fetch.addAttribute("firstName", "http://axschema.org/namePerson/first", true); fetch.addAttribute("lastName", "http://axschema.org/namePerson/last", true); // attach the extension to the authentication request authReq.addExtension(fetch); if (!discovered.isVersion2()) { // Option 1: GET HTTP-redirect to the OpenID Provider endpoint // The only method supported in OpenID 1.x // redirect-URL usually limited ~2048 bytes response.sendRedirect(authReq.getDestinationUrl(true)); } else { // Option 2: HTML FORM Redirection (Allows payloads >2048 bytes) response.sendRedirect(authReq.getDestinationUrl(true)); } } @RequestMapping("/return") public void verifyResponse(HttpServletRequest request) { String email = null; String lastName = null; String firstName = null; try { // extract the parameters from the authentication response // (which comes in as a HTTP request from the OpenID provider) ParameterList response = new ParameterList(request.getParameterMap()); // retrieve the previously stored discovery information DiscoveryInformation discovered = (DiscoveryInformation) request.getSession().getAttribute("openid-disc"); // extract the receiving URL from the HTTP request StringBuffer receivingURL = request.getRequestURL(); String queryString = request.getQueryString(); if (queryString != null && queryString.length() > 0) { receivingURL.append("?").append(request.getQueryString()); } // verify the response; ConsumerManager needs to be the same // (static) instance used to place the authentication request VerificationResult verification = manager.verify(receivingURL.toString(), response, discovered); // examine the verification result and extract the verified // identifier Identifier verified = verification.getVerifiedId(); if (verified != null) { AuthSuccess authSuccess = (AuthSuccess) verification.getAuthResponse(); if (authSuccess.hasExtension(AxMessage.OPENID_NS_AX)) { FetchResponse fetchResp = (FetchResponse) authSuccess.getExtension(AxMessage.OPENID_NS_AX); List emails = fetchResp.getAttributeValues("email"); email = (String) emails.get(0); List lastNames = fetchResp.getAttributeValues("lastName"); lastName = (String) lastNames.get(0); List firstNames = fetchResp.getAttributeValues("firstName"); firstName = (String) firstNames.get(0); LOGGER.debug("email: {}", email); LOGGER.debug("lastName: {}", lastName); LOGGER.debug("firstName: {}", firstName); } // success // 在这里与安全框架集成 apache-shiro/spring-security // 这里要根据相关的信息自己定义Principal } } catch (OpenIDException e) { LOGGER.error(e.getMessage(), e); Throwables.propagate(e); } } }
评论
1 楼
slovewithf
2015-05-07
怎么一运行就报
Caused by: java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException
at org.openid4java.consumer.ConsumerManager.<init>(ConsumerManager.java:146)
没找到构造函数呢
Caused by: java.lang.NoClassDefFoundError: org/apache/http/client/ClientProtocolException
at org.openid4java.consumer.ConsumerManager.<init>(ConsumerManager.java:146)
没找到构造函数呢
发表评论
-
SpringMVC杂记(十八) ServletRequestAttributes的应用
2014-02-28 12:38 14226看了一下SpringMVC的源代码,原来SpringMVC也提 ... -
SpringMVC杂记(十七) HandlerMethodArgumentResolver接口应用example
2014-01-24 15:29 12210自从spring3.1 开始就有了这个接口,可以为@Reque ... -
SpringWebflow杂记(一) 框架初探,与SpringMVC的集成
2013-10-23 17:18 1717今日研究了一下SpringWebFlow这个项目,作为Spri ... -
SpringMVC杂记(十五) spring-mvc controller 的切面
2013-08-01 19:42 6148SpringMVC杂记(十五) spring-mvc cont ... -
Spring集成CXF
2013-06-24 15:53 1575Spring集成CXF 零) jar依赖 <dep ... -
SpringMVC杂记(十四) Ajax方式的JSR303认证
2013-06-13 07:29 4526自己定义一个Exception,用来表示数据绑定失败 im ... -
SpringMVC杂记(十三) 使用FreeMarker作为视图层
2013-06-09 11:55 3406实在没什么好说的,直接上配置文件好了 <bean i ... -
SpringMVC杂记(十二) 自定义Interceptor从Active Directory得到域信息
2013-06-04 14:04 3209一)最近项目中要求实现Web应用的SSO(Single Sig ... -
通过spring,javamail,和freemarker集成发送HTML方式的电子邮件
2013-05-30 14:02 4875一) 现在项目中用的javamail和org.springfr ... -
SpringMVC杂记(十一) 使用Excel视图
2013-04-06 16:06 6633SpringMVC杂记(十一) 使用Excel视图 一) 其 ... -
Spring集成junit
2012-12-24 10:43 1510package junit; import org. ... -
BootstrapPlugin - daterangepicker 使用笔记
2012-11-13 12:17 21083BootstrapPlugin - daterangepick ... -
SpringMVC杂记(十) 验证码生成
2012-11-06 10:18 2789以前写过一篇关于这个的博客,现在用SpringMVC了,重写一 ... -
SpringMVC杂记(九) 模拟其他类型(非GET,POST)的请求
2012-10-22 10:49 26981) 以前一个小兄弟问我,SpringMVC是否可以使用很多浏 ... -
SpringMVC杂记(八) 使用阿里巴巴的fastjson
2012-07-21 08:27 102751) 国产开源软件要支持的 <dependency& ... -
ActiveMQ学习笔记(二) JMS与Spring
2012-06-24 10:21 7438上文可见,JMS Native API使用起来不是特别方便。好 ... -
我的SpringSecurity实践
2012-04-08 07:49 8987我的SpringSecurity实践 (一) 数据库与实体类 ... -
SpringMVC杂记(七) Jackson与Hibernate LazyLoding无法正常工作解决办法
2012-03-21 13:35 7064SpringMVC杂记(七) Jackson与Hibernat ... -
SpringMVC杂记(六) 下载文件
2012-03-21 09:04 4287SpringMVC杂记(六) 下载文件 1) jar依赖 ... -
SpringMVC杂记(五) JSR303数据验证
2012-03-16 16:30 12441SpringMVC杂记(五) JSR303数据验证 1) 首 ...
相关推荐
标签:spring、alibaba、csp、sentinel、adapter、webmvc、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变...
Spring MVC 是 Spring 框架的一个重要组成部分,用于构建基于 Java 的 Web 应用程序。这个官方中文文档详细地介绍了如何使用 Spring MVC 来开发高效、可维护的 MVC(Model-View-Controller)架构的应用。Spring MVC ...
标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
spring-webmvc.jar 各个版本,免费下载 spring-webmvc-RELEASE.jar 各个版本,免费下载 如果不能免费下载,关注我,评论区联系我索要!
标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
除了Spring-MVC之外,可能还使用了其他的Java Web技术,如JSP、Servlet、JavaScript、jQuery等,以及可能的前端框架如Bootstrap或Vue.js来优化用户体验。 综上所述,这个基于Spring-MVC的在线测试系统是一个学习和...
另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring JDBC和MyBatis等持久层框架用于数据库操作,以及Spring Data JPA、Hibernate等ORM工具,使得...
标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...
spring-webmvc-4.1.0.RELEASE.jar用于Spring框架的mvc注解
spring-mvc.xml资源下载,本xml为springmvc最纯净版xml!
【标题】"SpringMVC-Mybatis-Shiro-redis-master" 涉及的是一个集成框架项目,这个项目集成了四个关键的技术组件:SpringMVC、MyBatis、Shiro和Redis。这些技术在现代Java Web开发中扮演着重要角色。 **SpringMVC**...
赠送jar包:spring-webmvc-4.3.20.RELEASE.jar 赠送原API文档:spring-webmvc-4.3.20.RELEASE-javadoc.jar 赠送源代码:spring-webmvc-4.3.20.RELEASE-sources.jar 包含翻译后的API文档:spring-webmvc-4.3.20....
spring-mvc与xfire的集成 对于这样的集成,看看里面的配置文件就行了 一个简单的接口,对应一个简单的实现。 然后在配置文件里指明就可以了。 DispatcherServlet本身会管理xfire的请求 配置文件中配置的key可以理解...
spring-webmvc-4.3.14.RELEASE SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是...
spring-webmvc.jar 各个版本,免费下载 spring-webmvc-RELEASE.jar 各个版本,免费下载 如果不能免费下载,关注我,评论区联系我索要!
spring-webmvc.jar 各个版本,免费下载 spring-webmvc-RELEASE.jar 各个版本,免费下载 如果不能免费下载,关注我,评论区联系我索要!
spring-webmvc.jar 各个版本,免费下载 spring-webmvc-RELEASE.jar 各个版本,免费下载 如果不能免费下载,关注我,评论区联系我索要!
标签:spring、webmvc、springframework、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...
在 Web 开发领域,特别是基于 Java 的应用开发中,Spring MVC 框架因其灵活高效的特点而被广泛采用。然而,随着互联网技术的发展,网络安全问题日益凸显,XSS (跨站脚本) 攻击与 SQL 注入攻击成为常见的安全威胁之一...