`

Auth2.0安全认证规范

阅读更多

一,Auth2.0认证基本流程

#1,跳转到第三方账号登录页,由用户输入用户名+密码进行授权,获取授权码

#2,根据授权码获取访问码access_token和刷新码refresh_token

#3,根据access_token调用开放平台接口获取数据

#4,如果access_token过期失效,可以通过refresh_token获取一个新的access_token

ps:如果不需要用户进行第三方登录授权的,则可以省略步骤1,直接通过用户名+密码获取access_token和refresh_token;步骤1主要是针对类似第三方授权登录的场景,例如:QQ第三方授权登录等;

 

二,基于Auth2.0协议的第三方登录授权认证

    现在很多web网站登录页,都有第三方账号登录。例如:QQ,淘宝(taobao),微信(wechat),百度(baidu),新浪(sina) 等第三方账号授权登录;下面以QQ为例,介绍第三方账号授权登录的实现过程。

#前期准备阶段
  到腾讯开放平台上,注册网站应用及公司信息,绑定公司web站点生产环境域名(示例:www.pandan.xyz)该域名主要作用是当用户授权成功后,判断redirect重定向地址是否合法,防止redirect地址在传输过程中被串改。跳转到其他非法站点(白名单域名)。

#1,用户在网站登录页点击"QQ登录",则跳转到QQ登录授权页

#2,用户输入QQ用户名+密码,进行授权;授权成功后。QQ授权服务器会返回给浏览器一个redirect地址(这个重定向地址是我们传过去的,只不过QQ授权服务器在这个地址后加了一个参数:授权码)

#3,redirect地址是我们定义的接口地址,在接口逻辑中,获取QQ授权服务器返回的授权码,然后根据授权码,在服务端使用httpclient调用接口获取access_token和refresh_token

#4,使用access_token,调用QQ开放平台接口获取用户唯一标识ID和用户基本信息

#5,根据QQ服务器返回的用户唯一标识ID,查找我们系统数据库,该唯一标识是否关联我们应用ID,如果没有则跳转到绑定页面,如果已经绑定过,则根据关联的本应用ID,获取到用户在本应用中的账号和密码,去完成登录操作。

   

    对于移动端的第三方账号登录,开放平台针对不同终端(ios,android)提供了不同的SDK,用于接入第三方账号登录功能。

     腾讯开放平台针对web和app提供了两种接入方式:网站应用和移动应用,但是有一个比较坑爹的地方是

同一个QQ账号通过网站应用和移动应用返回的唯一标识是不一样的。这样就会导致同一个QQ账号在我们应用中绑定了多个账号。

     问题解决方式:

#方式一:移动端和web端都以网站应用接入,当在移动端点击"QQ登录"时,跳到web浏览器(html5页面)进行授权
适用场景:该功能还未上线,并没有脏数据入库。

#方式二:联系腾讯技术支持,将网站应用和移动应用之间关系打通,并选择其中一个为"主",另一个为"从";这样如果通过"从"获取用户唯一标识,返回的都是"主"的用户唯一标识。
适用场景:功能已经发版,已有用户数据入库。
ps:腾讯只支持两个应用之间的打通,不支持多个应用之间的互通,也就是说三个以上应用不能互通,只能大家都以一个为主,进行两两打通(比如A,B,C三个应用,共用一套账户体系,要实现QQ第三方账号登录,解决方案是比如大家都以A为主,A与B打通之后,然后A再与C打通);
    在两个应用打通之前,需要确定哪一个为"主",哪一个为"从",并且要把之前通过"从"绑定的唯一标识导出来,交给腾讯技术支持,他们会返回这部分"从"唯一标志和"主"唯一标志之间的一 一映射关系的。这样我们就可以对程序进行兼容处理;

 

分享到:
评论

相关推荐

    OAuth2.0 使用到的jar包

    OAuth2.0是一种广泛应用于各种在线服务的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需用户直接共享他们的...确保正确配置这些jar包,并遵循OAuth2.0的规范,可以构建出安全且符合标准的授权系统。

    PyOAuth:用 Flask python 编写的用于 Oauth 2.0 协议的即插即用小而高效的模板

    这个模板设计简洁高效,适用于快速搭建符合 OAuth 2.0 规范的身份验证服务。 **Flask:微型 Web 框架** Flask 是一个用 Python 编写的轻量级 Web 开发框架。它以其模块化、灵活的架构而闻名,非常适合构建简单的 ...

    Swift-AppAuth是用于iOS和MacOS的OAuth和OpenIDConnect客户端

    1. **标准兼容**:严格遵循OAuth 2.0和OpenID Connect规范,确保与其他认证服务器的互操作性。 2. **安全设计**:使用内置的URL Scheme和SFSafariViewController,避免了中间人攻击和其他安全风险。 3. **易于使用**...

    OAuth2.0 DotNetOpenAuth全套dll

    OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用安全地访问用户的资源,而无需获取用户的用户名和密码...注意,使用时需要遵循OAuth 2.0规范,正确配置授权服务器和客户端的设置,同时确保数据传输的安全性。

    前端开源库-auth-header

    Bearer Token通常用于OAuth 2.0认证流程,用户获取到令牌后,将其放在`Authorization`头的Bearer类型下,以访问受保护的API资源: ```javascript const token = 'your_access_token'; // 设置Bearer Token const ...

    swagger-spec:Swagger 2.0定义的规范

    7. **Security Definitions**: 定义了 API 的安全策略,如 OAuth2 认证、Basic Auth 或 API 密钥。 ```yaml securityDefinitions: basicAuth: type: basic apiKeyAuth: type: apiKey in: header name: X-API-...

    oauth2.0服务端PHP

    这个库为开发者提供了一个完整的OAuth 2.0服务器实现,包括认证、授权和令牌管理。 ### OAuth 2.0 简介 OAuth 2.0 是一种授权协议,主要目的是为了安全地实现第三方应用与资源服务器之间的数据交换。它适用于那些...

    前后端安全规范

    OAuth 2.0版本更为常用,其流程简单且安全性更高。 #### XSS攻击防范 XSS(跨站脚本攻击)是一种常见的Web安全漏洞,允许攻击者在受害者的浏览器上执行恶意脚本。XSS攻击分为两类:反射型XSS和存储型XSS。 - **...

    OAuth2.0 WebApiOWIN

    OWIN的Katana项目提供了多种中间件,可以方便地构建符合OAuth2.0规范的API。 项目"OAuthPractice"可能包含了以下部分: - **Startup.cs**:OWIN启动类,配置OAuth2.0授权流和中间件。 - **Controllers**:包含Web ...

    openid-AppAuth-Android-0.11.1-0-g5966cc7.zip

    这个库是基于OpenID Foundation的AppAuth规范,旨在提供一个安全且符合标准的认证和授权流程。在"openid-AppAuth-Android-0.11.1-0-g5966cc7.zip"文件中,包含了版本0.11.1的源代码和资源,具体版本号为5966cc7。 ...

    jmeter 实现oauth1.0授权认证

    接下来,创建另一个map(getSignOauthMap),用于构建签名的参数,同样按照OAuth规范进行排序。 最后,按照OAuth签名的规则,将排序后的参数字符串与密钥(consumer secret和token secret组合)进行HMAC-SHA256...

    PyPI 官网下载 | lab-orchestrator-lib-auth-2.2.0.tar.gz

    总结来说,"lab-orchestrator-lib-auth-2.2.0"是一个专门处理认证和授权的Python库,它提供了身份验证服务,帮助开发者构建安全的软件系统。通过PyPI,我们可以轻松下载并集成这个库到我们的Python项目中,提升开发...

    auth-server:验证服务器

    8. **安全性考虑**:除了实现认证和授权功能,auth-server还需要考虑安全性问题,如防止SQL注入、XSS攻击和CSRF攻击。这需要遵循最佳安全实践,例如使用预编译语句、输入验证、启用HTTPS等。 9. **扩展性和可维护性...

    swagger官方文档离线版

    6. **安全模式**:Swagger 2.0支持多种安全认证机制,如OAuth2、Basic Auth和API密钥,使得你可以定义API的安全要求。 7. **示例**:为了使API接口更具可读性,Swagger 2.0允许提供示例值,让开发者能够快速理解...

    苹果MFI认证SPEC

    苹果MFI(Made for iPhone/iPod/iPad)认证是一项重要的标准和技术规范,它为开发者提供了与苹果设备兼容的指南,确保第三方配件能够安全可靠地与苹果产品进行交互。这份SPEC文档详细介绍了MFI认证的关键技术和要求...

    企业级的 Go 语言实战项目:认证和授权系统(带配套课程).zip

    3. **身份验证机制**:理解常见的认证协议,如 HTTP Basic Auth、Bearer Tokens(JWT)、OAuth2.0,以及如何在 Go 中实现这些机制。 4. **授权模型**:设计和实现 RBAC 系统,定义角色、权限和角色映射,以及如何...

    xalanjava源码-opendj-kpa-auth:从code.google.com/p/opendj-kpa-auth自动导出

    XalanJava,作为Apache软件基金会的一个项目,是Java语言实现的XSLT处理器,它实现了W3C的XSL Transformations (XSLT) 1.0和2.0规范。XSLT是一种用于转换XML文档的语言,它能够将XML数据转换成其他格式,如HTML、PDF...

    meteor-lti-auth:从 lti 提供者中的 lti 消费者(如moodle)获取身份验证信息的包

    Meteor-LTI-Auth遵循了LTI的安全规范,确保敏感信息在传输过程中加密,同时验证过程中也防止了中间人攻击和其他潜在的安全风险。 5. **Moodle集成**:Moodle是全球广泛使用的开源LMS系统,支持多种教学工具的集成。...

Global site tag (gtag.js) - Google Analytics