OAuth协议致力于使网站和应用程序(统称为消费方)能够在无须用户透露其认证证书的情况下,通过API访问某个web服务(统称为服务提供方)的受保护资源。更一般地说,OAuth为API认证提供了一个可自由实现且通用的方法。
一个典型的例子是某打印服务提供商printer.example.com(消费方),希望在无须用户提供其照片存储站点密码的情况下,访问用户储存在photos.example.net(服务提供方)上的个人照片。
OAuth协议致力于使网站和应用程序(统称为消费方)能够在无须用户透露其认证证书的情况下,通过API访问某个web服务(统称为服务提供方)的受保护资源。更一般地说,OAuth为API认证提供了一个可自由实现且通用的方法。
在运行OAuth的web例子的时候,遇到问题的总结。
1、下载源代码
svn co http://oauth.googlecode.com/svn/code/java/ oauth-java
2、将core和example中的oauth-provider和webapp分别作为java项目导入eclipse中。
core是一个项目
oauth-provider是一个项目
web是一个项目
3、将core作为一个jar从eclipse中导出,oAuth-core.jar
4、将oauth-provider以provider目录名部署到tomcat中
5、将webapp以web目录名部署到tomcat中
6、启动tomcat
7、访问 http://localhost/provider/ provider正常工作
8、访问http://localhost/web/index.jsp web正常工作
9、点击"Sample Provider",控制台提示错误信息为“java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available”
10、修改 consumer.properties
原来的内容:sample.serviceProvider.baseURL: http://localhost:9090/oauth-provider/
修改后内容:sample.serviceProvider.baseURL: http://localhost/provider/
新增加一行:sample.consumer.oauth_signature_method: PLAINTEXT
oAuth目前支持HMAC_SHA1、PLAINTEXT、RSA_SHA1算法
验证的过程分别验证以下几部分内容:
oauth_token token
oauth_timestamp
oauth_signature
oauth_signature_method
oauth_consumer_key
--------------------------------------
从高层次来看,OAuth按以下方式工作:
- 你的站点已与不同的webmail服务供应商建立了关系。
- 你共享一个密码短语或者公钥,这样你就能使用它访问web联系人。
- 你根据webmail服务供应商将用户重定向到登录页面。
- 该用户登录然后告诉webmail服务供应商你的站点访问其地址薄是没问题的。
Ryan Heaton已经实现了针对Spring security的OAuthhttp://spring-security-oauth.codehaus.org/
支持OAuth的站点包括Twitter、Ma.gnolia与Google(你可以在这里看到关于Alpha版的帖子)。
-------------------------
豆瓣API OAuth认证
http://www.douban.com/service/apidoc/auth
分享到:
相关推荐
Spring Security OAuth 是一个用于保护RESTful Web服务的框架,它为OAuth 1.0a和OAuth 2.0协议提供了全面的支持。在这个源码中,我们可能会看到如何将Spring Security与OAuth结合,以构建安全的Web应用程序和服务。...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、会话管理和加密等功能,而OAuth2则是一种开放标准,用于授权第三方应用访问用户资源。将Shiro与OAuth2集成,可以实现更灵活的安全控制,特别是在...
OAuth 2.0 是一种广泛使用的授权框架,它允许第三方应用在用户许可的情况下访问其私有资源。在本文中,我们将深入探讨 OAuth 2.0 的核心概念,并结合 Java 实现来理解其工作原理。 OAuth 2.0 主要分为四个角色:...
在本文中,我们将深入探讨如何使用Apache JMeter进行OAuth 1.0授权认证。OAuth 1.0是一种授权协议,允许第三方应用安全地访问用户在另一服务上的资源,而无需获得用户的用户名和密码。JMeter是一款强大的性能测试...
**OAuth2.0协议概述** OAuth2.0是一种授权框架,允许第三方应用在用户许可的情况下,访问特定资源。它主要用于安全地实现用户数据的共享,比如社交媒体登录、云存储服务等。OAuth2.0的核心是将用户的授权过程与实际...
OAuth Signpost是一个专门为Java开发者设计的开源库,它简化了OAuth协议的实现,使得开发者能够更轻松地在自己的应用程序中集成OAuth授权功能。OAuth是一种开放标准,主要用于安全地授权第三方应用访问用户存储在另...
OAuth让应用开发者可以在不获取用户密码的情况下,为用户提供一种安全的方式去授权第三方应用访问他们的资源。在PHP中实现OAuth,我们可以使用一些现有的库,例如这个例子中的"php-oauth"。 在PHP中实现OAuth,我们...
OAuth 2.0 是一种广泛使用的开放网络授权协议,它允许第三方应用安全地访问用户存储在其他服务上的数据,而无需获取用户的登录凭据。这个压缩包文件包含的是 OAuth 2.0 的服务端和客户端的源代码,这对于理解OAuth ...
【标题】:“djangooauthtoolkit为Django用户准备的OAuth2”是指一个名为“django-oauth-toolkit”的Python库,它专门用于在Django框架中实现OAuth2协议,帮助开发者为他们的Web应用添加安全的身份验证和授权功能。...
在这个"oauth jersey实现例子"中,我们将探讨如何结合OAuth和Jersey构建安全的RESTful API。 首先,OAuth的核心概念包括资源所有者(Resource Owner)、客户端(Client)、授权服务器(Authorization Server)和...
OAuth 2.0 协议中文译本共分为九大部分,分别介绍了 OAuth 2.0 协议的背景知识、术语中英对照表、OAuth 2.0 协议的中文译本、OAuth 2.0 协议的工作流程、OAuth 2.0 协议的安全机制、OAuth 2.0 协议的优点、OAuth 2.0...
**基于Django 2.1.2的OAuth2.0授权登录详解** OAuth2.0是一种开放标准,用于授权第三方应用访问用户存储在另一服务提供商(如社交媒体网站)上的私有资源,而无需共享用户的登录凭证。在Django框架中实现OAuth2.0...
SpringBoot集成OAuth2.0是将流行的OAuth2.0安全框架与SpringBoot应用程序相结合的过程,以便为API和Web应用提供安全的访问控制。OAuth2.0是一个授权框架,允许第三方应用在用户授权的情况下访问其受保护的资源,而...
微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...
`Python-Authlib` 是一个强大的库,专门设计用于实现OAuth 1和OAuth 2协议的客户端和服务端身份验证。OAuth 是开放标准,主要用于授权第三方应用访问用户资源,而无需分享其用户名和密码。这个库由 `lepture` 创建,...
springboot和apache的开源项目org.apache.oltu.oauth2组合搭建的oauth2环境,一般的oauth配置下就可以用了,但是我这个项目,是用原理上讲如何搭建oauth2,哪个controller转发到哪个controller,为什么这样,都有...
Spring Security OAuth2 是一个强大的框架,用于为Java应用提供OAuth2和OpenID Connect安全功能。OAuth2是一个授权框架,允许第三方应用在用户许可的情况下访问其受保护的资源,而OpenID Connect则是在OAuth2之上...
在这个"纯Java实现的OAuth2流程"中,我们将深入探讨如何不依赖Spring Boot来独立构建OAuth2的客户端和服务端。 首先,我们要理解OAuth2的基本流程,它通常包括四个角色:资源所有者(Resource Owner)、资源服务器...
OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用在用户无需透露其登录凭证的情况下,获取有限的访问权限去操作用户的资源。这个协议的主要目的是为了解决API的安全访问问题,尤其是在社交媒体、云存储和...
Java的oauth2.0 服务端与客户端的实现.zip 封装了oauth2.0的基本架构和实现,对照我的博客http://blog.csdn.net/jing12062011/article/details/78147306使用该源码。 下载项目压缩包,解压,里面两个maven项目:...