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
分享到:
相关推荐
只需几行代码,就能实现OpenID登录功能。 5. **社区支持**:作为开源项目,PHP OpenID有活跃的开发者社区,持续更新和完善,解决新出现的问题和兼容性问题。 **压缩包内容详解** 在"php-openid-2.1.3"这个压缩包...
使用OAuth 2.0和OpenID Connect的微服务在Google中进行身份验证并向用户获取信息。 技术栈: Maven; Sprint Boot; Spring网 Spring安全; OAuth2身份验证; Angular JS,HTML,CSS。 1.要在Google App中注册您...
该系统可以使用户使用 OpenID 账户来登录 Java Web 应用程序,并且可以获取用户的基本信息,例如名称、电子邮件地址等。 OpenID 认证流程可以分为以下几个步骤: 1. 用户请求访问 Java Web 应用程序时,系统会...
例如,当你使用“用Google账户登录”时,就是OAuth2在起作用。 3. SAML:这是一种XML格式的安全声明标准,允许身份提供商(IdP)向服务提供商(SP)传输用户的身份验证信息。SAML常用于企业级单点登录(SSO)系统,...
- **社交登录集成**:许多网站提供OpenID服务,如Google、Yahoo等,你可以利用JOpenID让用户通过这些平台账户登录。 - **自定义IDP集成**:如果你的系统也提供OpenID服务,可以使用JOpenID库作为参考,构建自己的...
OpenID 是一种开放的身份验证协议,它允许用户使用一个中央身份提供者(Identity Provider,IDP)来登录多个网站,而无需为每个网站创建单独的账户。在 ASP.NET MVC 框架中,表单身份验证是默认的安全机制,用于验证...
本PHP代码包提供了一个完整的解决方案,帮助开发者实现OpenID登录功能,让用户能够使用Google、Yahoo、Facebook等知名平台的账号直接登录自己的网站。 ### 1. OpenID原理 OpenID的工作流程主要包括两个角色:消费...
配置方面,管理员可以在设置页面选择是否开启OpenID登录,设置OpenID按钮的文本和外观,以及自定义验证失败时的提示信息。 五、未来发展趋势与挑战 随着SSO的需求日益增长,OpenID技术在WordPress中的应用将更加...
在PHP网站开发中,集成第三方登录接口是一种常见的需求,它为用户提供便利,允许他们通过已有的社交账号(如QQ、微博、淘宝、人人网、Google和豆瓣)进行快速登录,而无需创建新的账户。本项目"php网站登录接口集成...
其次,【第三方账户】登录是另一种常见的无密码登录方式,允许用户使用如Facebook、Google等第三方平台的账号进行登录。这种方式直观易懂,但存在对第三方服务的依赖风险,一旦第三方服务出现问题,可能会影响到使用...
1. **身份验证与授权**:患者通过谷歌账户登录,这是OAuth或OpenID Connect等身份验证协议的应用,提供了安全的单点登录(SSO)体验。 2. **用户管理**:医生需要在系统中注册,可能涉及资料提交、审核等过程,以...
3. **登录请求**:用户尝试访问RP网站时,如果未登录,会被重定向到一个OpenID登录页面。 4. **身份验证**:用户输入他们的OpenID URL,然后被重定向到IdP进行身份验证。 5. **验证响应**:IdP验证用户后,将返回一...
通过集成 OpenID,phpBB3 可以支持用户使用他们已经在其他支持 OpenID 的网站(如 Google、Yahoo 或 AOL)上的账号登录论坛,降低了用户的记忆负担,也增加了论坛的易用性。 OpenID for phpBB 的实现通常包括以下几...
这个强大的工具集成了多种功能,包括本地账户的创建、登录、密码重置,以及与社交媒体平台(如 Facebook、Twitter 和 Google)的集成,使得在 Django 项目中实现全面的身份验证系统变得轻而易举。 **一、主要功能**...
6. **用户认证与授权**:可能涉及到OAuth2.0、OpenID Connect等身份验证协议,实现第三方登录(如Google、Facebook等),这需要与这些服务提供商的API进行交互。 7. **网络编程**:使用HttpURLConnection、OkHttp...
3. OpenID框架:这是一种分布式身份验证标准,允许用户使用一个通用账号在多个网站登录,但在中国,由于隐私和利益问题,OpenID的接受度相对较低。 SSO系统的优势主要体现在以下几个方面: - 用户体验:用户只需...
这种验证方式要求用户通过其Windows账户登录,且该账户必须存在于配置好的Active Directory域中。 2. **修改登录方式的必要性** 修改登录方式的原因可能包括:支持外部用户(非AD用户)登录、整合其他身份验证系统...