OAUTH2核心参数说明
grant_type参数说明表格:
grant_type
|
说明
|
authorization_code
|
标准的Server授权模式
|
password
|
基于用户密码的授权模式
|
client_credentials
|
基于APP密钥的授权模式
|
refresh_token
|
刷新accessToken
|
response_type参数说明表格:
response_type
|
说明
|
code
|
标准的Server授权模式响应模式
|
token
|
脚本的授权响应模式,直接返回token,需要对回调进行校验
|
OAUTH2各种请求流程
Authorization Code(标准请求流程,必须实现)
标准的的Server授权模式,与目前开放平台的Session机制很像。
APP首先发送获取code请求
GET /authorize?response_type=code&client_id=s6BhdRkqt3&
redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
Host: server.example.com
容器返回code
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=i1WsRn1uB1
APP根据code发送获取token请求
POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&client_id=s6BhdRkqt3&
client_secret=gX1fBat3bV&code=i1WsRn1uB1&
redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
容器直接返回token
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"access_token":"SlAV32hkKG",
"token_type":"example",
"expires_in":3600,
"refresh_token":"8xLOxBtZp8",
"example_parameter":"example-value"
}
Implicit Grant(直接发放模式)
适用于运行于浏览器中的脚本应用,需要校验callback地址,而且只返回该应用注册的回调地址
APP直接请求token
GET /authorize?response_type=token&client_id=s6BhdRkqt3&
redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
Host: server.example.com
容器通过重定向返回token
HTTP/1.1 302 Found
Location: http://example.com/rd#access_token=FJQbwq9&
token_type=example&expires_in=3600
Resource Owner Password Credentials (基于用户名与密码模式)
称之为用户名密码模式,需要提供终端用户的用户名和密码,适用于比如操作系统或者高权限的应用。
APP直接带上用户名和密码请求
POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=password&client_id=s6BhdRkqt3&
client_secret=47HDu8s&username=johndoe&password=A3ddj3w
容器直接返回token
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"access_token":"SlAV32hkKG",
"token_type":"example",
"expires_in":3600,
"refresh_token":"8xLOxBtZp8",
"example_parameter":"example-value"
}
Client Credentials
基于APP的密钥直接进行授权,APP的权限非常大,慎用。这个模式可以考虑用于目前我们不需要弹出授权的特殊应用,如淘江湖,前端插件等。
APP直接根据客户端的密码来请求
POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=s6BhdRkqt3&
client_secret=47HDu8s
容器直接返回token
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"access_token":"SlAV32hkKG",
"token_type":"example",
"expires_in":3600,
"refresh_token":"8xLOxBtZp8",
"example_parameter":"example-value"
}
优先考虑实现的流程
Authorization Code为我们需要优先支持的流程,很多开源的OAUTH实现都是优先实现了该授权流程。ETAO的B2C网站会用这个流程与开放平台交互。
开源实现
目前OAUTH 2有比较多的开源实现,其中比较好的开源实现是OAuth for Spring Security,大家可以参考http://static.springsource.org/spring-security/oauth/tutorial.html这个网址去具体了解。有兴趣的同学可以去这个网址去下载其源代码看看http://maven.springframework.org/milestone/org/springframework/security/oauth/spring-security-oauth/1.0.0.M2/spring-security-oauth-1.0.0.M2-sources.jar ,容器主要关注下面几个类:org.springframework.security.oauth2.provider.OAuth2AuthorizationFilter
org.springframework.security.oauth2.provider. DefaultOAuth2GrantManager
org.springframework.security.oauth2.provider.verification.VerificationCodeFilter
第一个和第二个类为参数校验和参数解析,第三个类为响应生成的类。
TIP主要关注下面的类:
org.springframework.security.oauth2.provider.OAuth2ProtectedResourceFilter
这个类主要实现了对AccessToken的校验
- 大小: 51.5 KB
分享到:
相关推荐
通过学习这些示例,你可以了解到如何定义OAuth2的客户端、如何配置授权服务器和资源服务器,以及如何在实际应用中实现SSO。 总结来说,Spring Cloud结合OAuth2提供了强大的安全机制,可以有效地管理和控制微服务的...
总结,通过Spring Cloud Security和OAuth2,我们可以轻松地在微服务环境中实现安全的授权和访问控制。这个示例提供了实际操作的起点,帮助开发者快速理解和实践OAuth2认证机制。通过学习和实践,你可以更好地理解...
总结来说,这个案例将指导你如何使用Spring Security OAuth2搭建一个完整的SSO系统,包括认证服务器的设置、客户端应用的配置以及OAuth2流程的实现。通过学习这个案例,你可以深入理解SSO的工作原理,并能够将其应用...
总结,这个"oauth2-sso"项目提供了一个基础的OAuth2和SSO实现,涵盖了授权服务器和客户端的互动,展示了如何在实际应用中安全地获取和使用访问令牌。通过这个DEMO,开发者可以学习OAuth2的基本工作原理,并将其应用...
**Python制裁(Sanction):超简易OAuth2客户端实现** 在现代互联网开发中,权限管理和身份验证已经成为不可或缺的一部分。OAuth2是一种广泛采用的...对于初学者来说,这是一个很好的学习OAuth2和Python库开发的案例。
OAuth 2.0 是一个授权框架,用于安全地允许第三方应用访问用户的数据,而无需共享用户的...在`oauthserver`和`oauthclient01`这两个Maven项目中,你可以看到实际的代码实现,这将有助于深入学习和实践OAuth 2.0的使用。
OAuth 2.0 是一种广泛使用的授权框架,它允许第三方应用安全地访问用户在另一服务上的资源,而无需获取用户的账号密码。在安卓平台上,OAuth 2.0 的实现...通过分析 `oauth_使用demo`,你可以深入学习并实践这些概念。
总结起来,Spring Cloud Gateway整合OAuth2是提升微服务安全性的重要手段,而采用Nacos作为配置中心和注册中心,则有助于简化系统管理,提高服务的可靠性。这两者的结合,为构建高效、安全的分布式系统提供了强大的...
**Laravel 开发中的 OAuth2 服务器实现** OAuth2 是一个授权框架,广泛应用于...这个开源项目 "Laravel开发-oauth2-server-laravel" 提供了一个完整的实现示例,对于学习和实践Laravel OAuth2集成具有很高的参考价值。
总结,"spring-boot-oauth2-mybatis"项目展示了如何利用Spring Boot 1.5的便捷性,结合OAuth2的安全特性,以及MyBatis的灵活数据访问,构建一个高效、安全的Web应用。这个项目为学习和实践这些技术提供了很好的参考...
总结来说,"fxos-oauth2-jquery-demo"项目提供了一个实际操作的平台,帮助开发者学习和掌握在Firefox OS环境下使用OAuth2进行授权,同时可能也涉及了对OAuth3的探索。通过分析和实践这个项目,开发者能够提升在Web...
描述中提到本文主要介绍了使用 Spring Oauth2 框架获取当前登录用户信息的实现代码,并通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。这表明文章的主要内容...
总结,OAuth在微服务分布式架构中起到了关键的权限管理和安全控制作用。通过理解OAuth的原理和流程,开发者可以更好地设计和实现安全的分布式系统。"quanxian"文件夹的代码提供了实战学习的机会,通过深入研究这些...
总结来说,gRPC、OAuth和SSL的结合使用能为你的服务提供强大的安全性和可扩展性。通过正确配置SSL以保证通信安全,利用OAuth2进行身份验证,你可以为用户提供安全的API访问,同时保护你的系统免受潜在威胁。在实践中...
总结来说,OAuth 2.0是一种强大的授权机制,这个“oauth的demo”为我们提供了直观的学习材料,帮助我们掌握OAuth的工作原理,以及如何在实际项目中应用和实现这一机制。通过深入研究这个demo,开发者可以更好地理解...
总结来说,理解OAuth认证机制是进行微博应用开发的基础,而上传图片则是常见的用户交互功能。通过OAuth认证,应用可以安全地代表用户进行操作,如发布信息、分享图片等,从而提升用户体验。在实际开发过程中,需要...
总结来说,这个"oauth2.0例子"为我们提供了一个实践OAuth 2.0授权和SSO功能的平台。通过分析和理解tonr和sparklr项目的源代码,我们可以更深入地学习OAuth 2.0的工作原理,以及如何在实际应用中实现鉴权和单点登录。...
《OAuth2服务配置与方法详解——以moauth-well...通过学习和实践,我们可以利用OAuth2的授权机制,以及moauth-wellknown的便利性,创建更加安全、易用的互联网应用。同时,也要时刻关注安全问题,确保用户数据的安全。
ASP.NET Web API与Owin OAuth密码模式是现代Web应用程序中常用的身份验证...这对于学习和理解OAuth2.0在实际项目中的应用非常有帮助。开发者可以在此基础上进行扩展,添加更多的安全性和功能,以适应不同的应用场景。
总结,Java实现微信OAuth2.0网页授权涉及多个步骤,需要理解OAuth2.0协议,掌握HTTP请求的发送与处理,以及JSON数据的解析。在实际开发中,还需要考虑错误处理和安全性问题,确保服务的稳定性和用户数据的安全。通过...