面向Java Web应用程序的OpenID,第1部分

在Java Web应用程序中使用OpenID身份验证

OpenID 是一套分散式身份验证系统。通过 OpenID 我可以证明自己拥有类似 http://openid.jstevenperry.com/steve 这样的 URL,而且可以使用经验证的身份登录任何支持 OpenID 的站点 — 比如 Google、Slashdot 或 Wordpress。OpenID 对终端用户来说无疑是个不错的工具。但是对 OpenID 的使用引发我产生这样的想法:“如果使用 OpenID 为我给客户编写的基于 Java 的 Web 应用程序创建标准可靠的身份识别系统,会怎么样呢?”

在这个由两部分组成的文章中,我将向您展示如何使用 openid4java 库和知名的 OpenID 提供者 myOpenID 为基于 Java 的 Web 应用程序创建身份验证系统。还将向您展示如何使用一个 OpenID 简单注册扩展(Simple Registration Extension)(SReg)接收用户信息。

首先我将解释什么是 OpenID 并说明如何获得自己的 OpenID。接下来,简短地介绍 OpenID 身份验证的运作方式。最后,概述使用 openid4java 执行 OpenID 身份验证所需的步骤。在本文第 2 部分,您将了解如何创建自己的 OpenID 提供者。

我将通篇使用基于 Wicket 的 Java Web 应用程序,这是我专门为本文编写的。您可以随时下载应用程序 源代码。另外,您可能希望看一下 openid4java 库。

注意:本文重点介绍面向 Java Web 应用程序的 OpenID,不过 OpenID 在任何软件架构模式中都有效。

OpenID 简介

OpenID 是证明用户拥有标识符的一种规范。现在,仅将标识符 看作惟一标识用户的 String。如果您像我一样,会拥有很多标识符或用户名。我在 Facebook、Twitter 和因特网上的大量其他站点上都有用户名。我经常尝试使用同一个用户名,但是这在我要注册的每个新站点上都不可行。因此,我需要记住所有的用户名及其对应的 Web 站点。这是一件很痛苦的事;我常常会用到 “忘记密码?” 这一提示信息。如果有一种方法可以在所有站点使用同一个标识符,该有多好!

OpenID 恰恰可以解决这个问题。通过 OpenID,我可以声明一个标识符,然后在采用 OpenID 协议的任意 Web 站点上使用它。最新统计(来自 OpenID Web 站点)显示有 50,000 多个网站支持 OpenID,包括 Facebook、Yahoo!、Google 和 Twitter。

OpenID 身份验证

OpenID 身份验证是 OpenID 的核心,它包括三个主要概念:

OpenID 标识符:一个惟一标识用户的文本字符串。

OpenID 依赖方(RP):一种在线资源(可能是一个 Web 站点,也可以是文件、图像或想要进行访问控制的任何资源),使用 OpenID 识别可以访问它的对象。

OpenID 提供者(OP):一个站点,用户可在该站点声明 OpenID,随后登录并为任意 RP 验证身份。

OpenID 基金会 是一个社团,该社团成员关注通过 OpenID 规范推进开源身份管理。

OpenID 如何运作?

假设有用户尝试访问属于 RP Web 站点的资源,且 RP 使用 OpenID。要访问该资源,用户必须以一种能被识别(规范化)为 OpenID 的形式呈现其 OpenID。OpenID 由 OP 的位置编码。然后 RP 采用用户标识符并将用户重定向到 OP,此时 OP 会要求用户证明其 ID 请求。

接下来简要介绍一下 OpenID 规范的每个组成部分及其作用。

时间: 2024-11-05 04:56:33

面向Java Web应用程序的OpenID,第1部分的相关文章

面向Java Web应用程序的OpenID,第2部分

为单点登录身份验证编写OpenID提供者 简介:本文中,您将学习如何使用 OpenID 保护 Java Web 应用程序资源,以防止被没有经过身份验证的用户的损害.在这个介绍 OpenID 身份验证规范的系列的第 2 部分中,Steve Perry 讲解如何使用 openid4java 库为单点登录场景创建 OpenID 提供者.通过在"闭环"架构中构建作为 OpenID 提供者的应用程序,可以让最终用户只需登录一次,即可访问多个应用程序.另外,您还将学习如何使用 OpenID Att

使用JLCA将Java Web应用程序转换为ASP.NET

本文讨论: 资源定位 I/O 流 日志记录和集合 重构 本文使用了以下技术: ASP.NET.JLCA 和 C# 目录 关于 JLCA 定位资源 处理输入/输出 API 日志记录 集合 筛选器和 HTTP 处理程序 源树和命名约定 何时重构约定 目录布局和命名空间 属性 Pascal 大小写方法名称 总结 典型的软件开发周期遵循简单的模型:收集要求.设计应用程序.编写代码.测试软件和部署软件.但是,有时新的开发项目是基于客户想用来部署应用程序的平台而启动的.在这种情况下,可以将现有应用程序的基本

Java Web应用程序实现基础的文件下载功能的实例讲解_java

基础思路:之前的思路一直是弹出一个框问用户想要存放文件的位置,然后我再生成个文件放到那.然而我这个想法并没有成功. 点击链接来下载文件的方式很简便,后台把文件流输出来,通过浏览器实现下载功能,包括询问位置与文件存放,大多数浏览器会配置一个固定位置,不一定每次都问. 前端就非常简单了,一个<a>标签,href="后台方法地址",如果你的需求不能直接用超链接方式,可以在js里写 window.location.href ="后台方法地址". 这样跳转到后台方

用ant发布java web应用程序时转换jsp文件产生的xml文件怎么和WEB-INF里面的web.xml文件结合

问题描述 转换jsp文件到java类产生的xml文件<?xmlversion="1.0"encoding="ISO-8859-1"?><!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"><!--Automaticallyc

使用Apache Wink和Ajax构建富Java Web应用程序

本文将介绍 Apache Wink,演示如何安装它,并附带一个简单的管理任务列 表的 RESTful Web 服务.本文的示例基于 Apache Wink 发行版携带的 Bookmarks 示例.尽管如此,本文中的示例使用了不同的消息格式,可以使用 Asynchronous JavaScript + XML (Ajax) 从 Web 页面轻松调用,从而丰富了用 户体验. REST 和 Ajax RESTful Web 服务通过使用某种 URL 结构公开,并提 供了一个简化的接口来对 Web 服务

Java 开发 2.0: 使用方便的 EC2--快速创建 CRUD Web 应用程序并在 Amazon Elastic Compute Cloud 上运行它

提供一个 EC2 实例来托管 Java Web 应用程序将非常简单.在这一期 Java 开发 2.0 中,我们将快速构建一个利用 Groovy.Spring 和 Hibernate(通过 Grails 框架)的 Web 应用程序并将其部署到一个 EC2 实例. 正如您从 "Java 开发 2.0:您也可以租用 EC2" 中了解到的一样,Amazon 的 Elastic Compute Cloud (EC2) 是一个用于托管(Linux®.OpenSolaris 甚至 Windows®)

面向Java开发人员的Ajax:Java对象序列化(1)

ajax|java对象 本文我们讨论 Ajax 开发的基础知识,但是将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据. 多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他们的 Web 应用程序上.在传统的 Web 应用程序中,视图组件由 JSP 或者其他表示技术(例如 Velocity 模板)构成. 这些表示组件动态地生成全新的 HTML 页面,替代用户以前正在查看的页面,从而更新用户界面.但是,在 Java Web 应用程序使用 Ajax UI 的情况

面向Java开发人员的Ajax: Ajax的Java对象序列化

在这个系列的 第一篇文章 中,我介绍了 Ajax 的构造块: 如何用 JavaScript XMLHttpRequest 对象从 Web 页面向服务器发送异步请求. 如何用 Java servlet 处理和响应请求(向客户机返回 XML 文档). 如何在客户端用响应文档更新页面视图. 这一次,我将继续讨论 Ajax 开发的基础知识,但是将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据. 多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他们的 Web 应用

Java Web中的入侵检测及简单实现

web 在Java Web应用程中,特别是网站开发中,我们有时候需要为应用程序增加一个入侵检测程序来防止恶意刷新的功能,防止非法用户不断的往Web应用中重复发送数据.当然,入侵检测可以用很多方法实现,包括软件.硬件防火墙,入侵检测的策略也很多.在这里我们主要介绍的是Java Web应用程序中通过软件的方式实现简单的入侵检测及防御. 该方法的实现原理很简单,就是用户访问Web系统时记录每个用户的信息,然后进行对照,并根据设定的策略(比如:1秒钟刷新页面10次)判断用户是否属于恶意刷新. 我们的入侵