`
lgcjar
  • 浏览: 18253 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

google 账户网站登录(openid)

阅读更多
LoginAction.java
OpenIdManager manager = new OpenIdManager();
			manager.setReturnTo("http://61.121.243.211:8080/demo1/responseOpenid");
			manager.setRealm("http://61.121.243.211:8080/demo1/");
			manager.setTimeOut(10000);
			Endpoint endpoint = manager.lookupEndpoint("Google");
			Association association = manager.lookupAssociation(endpoint);
			request.getSession().setAttribute("openid_association", association);
			request.getSession().setAttribute("OpenIdManager", manager);
			String url = manager.getAuthenticationUrl(endpoint, association);
			response.sendRedirect(url);

ResponseOpenidServlet.java
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String url=req.getRequestURL().toString()+"?"+req.getQueryString();	
		Association association =(Association)req.getSession().getAttribute("openid_association");
		OpenIdManager manager = (OpenIdManager)req.getSession().getAttribute("OpenIdManager");
		if(association!=null&&manager!=null){
			HttpServletRequest request = createRequest(url);
			Authentication authentication = manager.getAuthentication(request, association.getRawMacKey());
			String id=authentication.getIdentity();
			String email=authentication.getEmail();
			if(id!=null){
				LoginUser loginUser=new LoginUser();
				loginUser.setUsrno(email);
				req.getSession().setAttribute("loginUser", "loginUser");
				resp.sendRedirect("index.jsp"); //首页
			}else{
				resp.sendRedirect("login.jsp"); 
			}
		}else{
			resp.sendRedirect("login.jsp"); 
		}
	}
	
	HttpServletRequest createRequest(String url) throws UnsupportedEncodingException {
		int pos = url.indexOf('?');
		if (pos == (-1))
			throw new IllegalArgumentException("Bad url.");
		String query = url.substring(pos + 1);
		String[] params = query.split("[\\&]+");
		final Map<String, String> map = new HashMap<String, String>();
		for (String param : params) {
			pos = param.indexOf('=');
			if (pos == (-1))
				throw new IllegalArgumentException("Bad url.");
			String key = param.substring(0, pos);
			String value = param.substring(pos + 1);
			map.put(key, URLDecoder.decode(value, "UTF-8"));
		}
		return (HttpServletRequest) Proxy.newProxyInstance(LoginAction.class.getClassLoader(), new Class[] { HttpServletRequest.class }, new InvocationHandler() {
			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
				if (method.getName().equals("getParameter"))
					return map.get((String) args[0]);
				throw new UnsupportedOperationException(method.getName());
			}
		});
	}

web.xml
<servlet>
	    <servlet-name>responseOpenid</servlet-name>
    	<servlet-class>com.action.ResponseOpenidServlet</servlet-class>
	 </servlet>

	 <servlet-mapping>
	    <servlet-name>responseOpenid</servlet-name>
    	<url-pattern>/responseOpenid</url-pattern>
     </servlet-mapping>
<servlet>
	    <servlet-name>login</servlet-name>
    	<servlet-class>com.action.LoginAction</servlet-class>
		<init-param> 
			<param-name>forward</param-name>
			<param-value>index.jsp</param-value>
		</init-param>
		<init-param> 
			<param-name>errorURL</param-name>
			<param-value>login.jsp</param-value>
		</init-param>
	 </servlet>
	 <servlet-mapping>
		<servlet-name>login</servlet-name>
    	<url-pattern>/login</url-pattern>
     </servlet-mapping>

ops.properties
Google = https://www.google.com/accounts/o8/id

分享到:
评论

相关推荐

    php-openid-2.1.3

    只需几行代码,就能实现OpenID登录功能。 5. **社区支持**:作为开源项目,PHP OpenID有活跃的开发者社区,持续更新和完善,解决新出现的问题和兼容性问题。 **压缩包内容详解** 在"php-openid-2.1.3"这个压缩包...

    spring-boot-security-oauth2-google:使用OAuth 2.0和OpenID Connect的微服务向Google进行身份验证并向用户获取信息

    使用OAuth 2.0和OpenID Connect的微服务在Google中进行身份验证并向用户获取信息。 技术栈: Maven; Sprint Boot; Spring网 Spring安全; OAuth2身份验证; Angular JS,HTML,CSS。 1.要在Google App中注册您...

    外文文献翻译---面向java-web应用程序的openid本科学位论文.doc

    该系统可以使用户使用 OpenID 账户来登录 Java Web 应用程序,并且可以获取用户的基本信息,例如名称、电子邮件地址等。 OpenID 认证流程可以分为以下几个步骤: 1. 用户请求访问 Java Web 应用程序时,系统会...

    基于python的统一身份认证授权管理解决方案,支持多种标准协议(LDAP, OAuth2, SAML, OpenID)

    例如,当你使用“用Google账户登录”时,就是OAuth2在起作用。 3. SAML:这是一种XML格式的安全声明标准,允许身份提供商(IdP)向服务提供商(SP)传输用户的身份验证信息。SAML常用于企业级单点登录(SSO)系统,...

    java源码:OpenID的Java客户端 JOpenID.rar

    - **社交登录集成**:许多网站提供OpenID服务,如Google、Yahoo等,你可以利用JOpenID让用户通过这些平台账户登录。 - **自定义IDP集成**:如果你的系统也提供OpenID服务,可以使用JOpenID库作为参考,构建自己的...

    具有表单身份验证的OpenID

    OpenID 是一种开放的身份验证协议,它允许用户使用一个中央身份提供者(Identity Provider,IDP)来登录多个网站,而无需为每个网站创建单独的账户。在 ASP.NET MVC 框架中,表单身份验证是默认的安全机制,用于验证...

    OPEN ID PHP代碼

    本PHP代码包提供了一个完整的解决方案,帮助开发者实现OpenID登录功能,让用户能够使用Google、Yahoo、Facebook等知名平台的账号直接登录自己的网站。 ### 1. OpenID原理 OpenID的工作流程主要包括两个角色:消费...

    wordpress-openid-tools:WordPress OpenID插件的一些构建工具

    配置方面,管理员可以在设置页面选择是否开启OpenID登录,设置OpenID按钮的文本和外观,以及自定义验证失败时的提示信息。 五、未来发展趋势与挑战 随着SSO的需求日益增长,OpenID技术在WordPress中的应用将更加...

    php网站登录接口集成

    在PHP网站开发中,集成第三方登录接口是一种常见的需求,它为用户提供便利,允许他们通过已有的社交账号(如QQ、微博、淘宝、人人网、Google和豆瓣)进行快速登录,而无需创建新的账户。本项目"php网站登录接口集成...

    阮一峰:回顾网站-无密码登录-的常见做法.docx

    其次,【第三方账户】登录是另一种常见的无密码登录方式,允许用户使用如Facebook、Google等第三方平台的账号进行登录。这种方式直观易懂,但存在对第三方服务的依赖风险,一旦第三方服务出现问题,可能会影响到使用...

    •这是一个病人医生预约WebApp 患者使用谷歌帐户登录,医生需要先在系统中注册才能登录 •患者可以在时段内进行预约,并且将创建

    1. **身份验证与授权**:患者通过谷歌账户登录,这是OAuth或OpenID Connect等身份验证协议的应用,提供了安全的单点登录(SSO)体验。 2. **用户管理**:医生需要在系统中注册,可能涉及资料提交、审核等过程,以...

    mod_auth_oid:Apache httpd的OpenID依赖方-开源

    3. **登录请求**:用户尝试访问RP网站时,如果未登录,会被重定向到一个OpenID登录页面。 4. **身份验证**:用户输入他们的OpenID URL,然后被重定向到IdP进行身份验证。 5. **验证响应**:IdP验证用户后,将返回一...

    OpenID for phpBB-开源

    通过集成 OpenID,phpBB3 可以支持用户使用他们已经在其他支持 OpenID 的网站(如 Google、Yahoo 或 AOL)上的账号登录论坛,降低了用户的记忆负担,也增加了论坛的易用性。 OpenID for phpBB 的实现通常包括以下几...

    djangoallauthDjango应用程序集成解决身份验证登记账户管理以及第三方社会账户认证

    这个强大的工具集成了多种功能,包括本地账户的创建、登录、密码重置,以及与社交媒体平台(如 Facebook、Twitter 和 Google)的集成,使得在 Django 项目中实现全面的身份验证系统变得轻而易举。 **一、主要功能**...

    基于android做一个账户管理系统的app.rar

    6. **用户认证与授权**:可能涉及到OAuth2.0、OpenID Connect等身份验证协议,实现第三方登录(如Google、Facebook等),这需要与这些服务提供商的API进行交互。 7. **网络编程**:使用HttpURLConnection、OkHttp...

    单点登录系统

    3. OpenID框架:这是一种分布式身份验证标准,允许用户使用一个通用账号在多个网站登录,但在中国,由于隐私和利益问题,OpenID的接受度相对较低。 SSO系统的优势主要体现在以下几个方面: - 用户体验:用户只需...

    wss 3.0 登录方式修改

    这种验证方式要求用户通过其Windows账户登录,且该账户必须存在于配置好的Active Directory域中。 2. **修改登录方式的必要性** 修改登录方式的原因可能包括:支持外部用户(非AD用户)登录、整合其他身份验证系统...

Global site tag (gtag.js) - Google Analytics