OAuth2å®ç°åç¹ç»å½SSO
1. åè¨
ææ¯è¿ä¸è¥¿å§ï¼çå«äººåç好åå¾ç®åä¼¼çï¼å°èªå·±å»åçæ¶åå°±åç§é®é¢ï¼âä¸çå°±ä¼ï¼ä¸åå°±éâãç½ä¸å ³äºå®ç°SSOçæç« ä¸å¤§å ï¼ä½æ¯å½ä½ ççç §çåçæ¶åå°±ä¼åç°æ ¹æ¬ä¸æ¯é£ä¹åäºå¿ï¼ç®ç´è®©äººæçï¼å°¤å ¶æ¯å¯¹äºæè¿æ ·çèé¸ãå ç»æ²æï¼ç»äºæå®äºï¼å³å®è®°å½ä¸æ¥ï¼ä»¥ä¾¿åç»æ¥çãå æ¥çä¸ä¸ææ
2. åå¤
2.1. åç¹ç»å½
æ常è§çä¾åæ¯ï¼æ们æå¼æ·å®APPï¼é¦é¡µå°±ä¼æ天ç«ãèåç®çæå¡çé¾æ¥ï¼å½ä½ ç¹å»ä»¥åå°±ç´æ¥è·³è¿å»äºï¼å¹¶æ²¡æè®©ä½ åç»å½ä¸æ¬¡
ä¸é¢è¿ä¸ªå¾æ¯æåç½ä¸æ¾çï¼æè§å¾ç»å¾æ¯è¾æç½ï¼
å¯ææç¹å¿ä¸æ¸ æ°ï¼äºæ¯æåç»äºä¸ªç®ççï¼
éè¦çæ¯ç解ï¼
2.2. OAuth2
æ¨è以ä¸å ç¯å客
ã OAuth 2.0 ã
ã Spring Security对OAuth2çæ¯æ ã
3. å©ç¨OAuth2å®ç°åç¹ç»å½
æ¥ä¸æ¥ï¼åªè®²è·æ¬ä¾ç¸å ³çä¸äºé ç½®ï¼ä¸è®²åçï¼ä¸è®²ä¸ºä»ä¹
ä¼æå¨ç¥ï¼å¨OAuth2å¨ææææå¡å¨ãèµæºæå¡å¨ã客æ·ç«¯è¿æ ·å 个è§è²ï¼å½æ们ç¨å®æ¥å®ç°SSOçæ¶åæ¯ä¸éè¦èµæºæå¡å¨è¿ä¸ªè§è²çï¼ææææå¡å¨å客æ·ç«¯å°±å¤äºã
æææå¡å¨å½ç¶æ¯ç¨æ¥å认è¯çï¼å®¢æ·ç«¯å°±æ¯å个åºç¨ç³»ç»ï¼æ们åªéè¦ç»å½æååæ¿å°ç¨æ·ä¿¡æ¯ä»¥åç¨æ·ææ¥æçæéå³å¯
ä¹åæä¸ç´è®¤ä¸ºæé£äºéè¦æéæ§å¶çèµæºæ¾å°èµæºæå¡å¨éä¿æ¤èµ·æ¥å°±å¯ä»¥å®ç°æéæ§å¶ï¼å ¶å®æ¯ææ³éäºï¼æéæ§å¶è¿å¾éè¿Spring Securityæè èªå®ä¹æ¦æªå¨æ¥å
3.1. Spring Security ãOAuth2ãJWTãSSO
å¨æ¬ä¾ä¸ï¼ä¸å®è¦åæ¸ æ¥è¿å 个çä½ç¨
é¦å ï¼SSOæ¯ä¸ç§ææ³ï¼æè 说æ¯ä¸ç§è§£å³æ¹æ¡ï¼æ¯æ½è±¡çï¼æ们è¦åçå°±æ¯æç §å®çè¿ç§ææ³å»å®ç°å®
å ¶æ¬¡ï¼OAuth2æ¯ç¨æ¥å 许ç¨æ·ææ第ä¸æ¹åºç¨è®¿é®ä»å¨å¦ä¸ä¸ªæå¡å¨ä¸çèµæºçä¸ç§åè®®ï¼å®ä¸æ¯ç¨æ¥ååç¹ç»å½çï¼ä½æ们å¯ä»¥å©ç¨å®æ¥å®ç°åç¹ç»å½ãå¨æ¬ä¾å®ç°SSOçè¿ç¨ä¸ï¼åä¿æ¤çèµæºå°±æ¯ç¨æ·çä¿¡æ¯ï¼å æ¬ï¼ç¨æ·çåºæ¬ä¿¡æ¯ï¼ä»¥åç¨æ·æå ·æçæéï¼ï¼èæ们æ³è¦è®¿é®è¿è¿ä¸èµæºå°±éè¦ç¨æ·ç»å½å¹¶ææï¼OAuth2æå¡ç«¯è´è´£ä»¤ççåæ¾çæä½ï¼è¿ä»¤çççææ们éç¨JWTï¼ä¹å°±æ¯è¯´JWTæ¯ç¨æ¥æ¿è½½ç¨æ·çAccess_Tokenç
æåï¼Spring Securityæ¯ç¨äºå®å ¨è®¿é®çï¼è¿éæ们æ们ç¨æ¥å访é®æéæ§å¶
4. 认è¯æå¡å¨é ç½®
4.1. Mavenä¾èµ
è¿éé¢æéè¦çä¾èµæ¯ï¼spring-security-oauth2-autoconfigure
4.2. application.yml
4.3. AuthorizationServerConfigï¼éè¦ï¼
说æï¼
4.4. WebSecurityConfigï¼éè¦ï¼
4.5. èªå®ä¹ç»å½é¡µé¢ï¼ä¸è¬æ¥è®²é½æ¯è¦èªå®ä¹çï¼
èªå®ä¹ç»å½é¡µé¢çæ¶åï¼åªéè¦åå¤ä¸ä¸ªç»å½é¡µé¢ï¼ç¶åå个Controllerä»¤å ¶å¯ä»¥è®¿é®å°å³å¯ï¼ç»å½é¡µé¢è¡¨åæ交çæ¶åmethodä¸å®è¦æ¯postï¼æéè¦çæ¶åactionè¦è·è®¿é®ç»å½é¡µé¢çurlä¸æ ·
åä¸è®°ä½äºï¼è®¿é®ç»å½é¡µé¢çæ¶åæ¯GET请æ±ï¼è¡¨åæ交çæ¶åæ¯POST请æ±ï¼å ¶å®çå°±ä¸ç¨ç®¡äº
4.6. å®ä¹å®¢æ·ç«¯
4.7. å è½½ç¨æ·
ç»å½è´¦æ·
å è½½ç»å½è´¦æ·
4.8. éªè¯
å½æ们çå°è¿ä¸ªçé¢çæ¶åï¼è¡¨ç¤ºè®¤è¯æå¡å¨é ç½®å®æãã
5. 两个客æ·ç«¯
5.1. Mavenä¾èµ
5.2. application.yml
è¿écontext-pathä¸è¦è®¾æ/ï¼ä¸ç¶éå®åè·åcodeçæ¶åå被æ¦æª
5.3. WebSecurityConfig
说æï¼
5.4. MemberController
5.5. Order项ç®è·å®æ¯ä¸æ ·ç
5.6. å ³äºéåº
éåºå°±æ¯æ¸ 空ç¨äºä¸SSO客æ·ç«¯å»ºç«çææçä¼è¯ï¼ç®åçæ¥è¯´å°±æ¯ä½¿ææ端ç¹çSession失æï¼å¦ææ³åå¾æ´å¥½çè¯å¯ä»¥ä»¤Token失æï¼ä½æ¯ç±äºæ们ç¨çJWTï¼æ èæ¤éTokenå°±ä¸æ¯é£ä¹å®¹æï¼å ³äºè¿ä¸ç¹ï¼å¨å®ç½ä¸ä¹ææå°ï¼
æ¬ä¾ä¸éç¨çæ¹å¼æ¯å¨éåºçæ¶åå éåºä¸å¡æå¡å¨ï¼æå以åååè°è®¤è¯æå¡å¨ï¼ä½æ¯è¿æ ·æä¸ä¸ªé®é¢ï¼å°±æ¯éè¦ä¸»å¨ä¾æ¬¡è°ç¨å个ä¸å¡æå¡å¨çlogout
6. å·¥ç¨ç»æ
éä¸æºç ï¼ blogs.com/cjsblog/p/.html
blogs.com/cjsblog/p/.html
blogs.com/cjsblog/p/.html
blogs.com/cjsblog/p/.html
blogs.com/lihaoyang/p/.html
blogs.com/charlypage/p/.html
/t/.html
9. ææ¡£
blogs.com/cjsblog/p/.html
OAuth2.0原理图解:第三方网站为什么可以使用微信登录
假设小明开发了一个A网站,需要支持微信登录和淘宝账号登录。第方登录第方登录如果你是源码源码微信或者淘宝开发人员,你会怎么设计这个功能?本文结合淘宝开放平台官方文档以淘宝账号为例。第方登录第方登录
从最简单视角去思考,源码源码练练看javafx源码用户在网站A输入淘宝用户名和密码,第方登录第方登录网站A调用淘宝接口校验输入信息,源码源码校验通过则登陆成功,第方登录第方登录整体流程如下图:
上述思路存在什么问题?最显著问题就是源码源码信息安全问题。问题第一个方面是第方登录第方登录用户需要将淘宝用户名和密码输入网站A,这样会带来用户名和密码泄露风险。源码源码问题第二个方面是第方登录第方登录如果用户不信任网站A,那么也不会输入淘宝用户名和密码,源码源码影响网站A业务开展。第方登录第方登录
OAuth是一种流行标准。如果执行这行这个标准,wap手游源码那么用户可以在不告知A网站淘宝用户名和密码情况下,使用淘宝账号登陆A网站。
目前已经发展到OAuth2.0版本,相较于1.0版本更加关注客户端开发者简易性,而且为桌面应用、web应用、手机设备提供专门认证流程。
OAuth2.0标准定义了四种角色:
四种角色交互流程:
本文场景对应四种角色:
OAuth2.0标准定义了以下四种授权模式:
四种授权模式中最常用的是授权码模式,例如微信开发平台文档介绍对于网站应用微信OAuth2.0授权登录目前支持授权码模式,所以本文只介绍授权码模式,后续文章会详细比较四种模式。
第一个流程是创建应用,A网站开发者首先去淘宝开放平台创建应用,开放平台会生成一个client_id作为A网站唯一标识。
第二个流程是授权流程,用户在A网站点击使用淘宝账号登陆时,发卡 提货源码实际上跳转至A网站拼接授权URL页面,这个页面由淘宝提供。用户在授权页面输入淘宝用户名和密码,校验成功后跳转至A网站回调地址,这时A网站会拿到一个code,后台再使用code去获取access_token。
第三个流程是获取信息,获取到access_token相当于获取到一把钥匙,再按照规范调用淘宝对外提供接口就可以获取到用户数据。
第一个方面A网站开发人员需要在淘宝开放平台进行申请,需要输入个人信息或者公司信息,这样A网站可靠性有了一定程度保证。
第二个方面在第一章节方案用户需要在A网站输入淘宝用户名和密码,但是在OAuth2.0方案虽然也要输入淘宝用户名密码,但是这个页面由淘宝官方提供,安全性得到了保证。征婚交友asp源码
第三个方面access_token(令牌)并没有在浏览器中传递,而是需要A网站在获取到code之后去后台程序换取,避免了钥匙泄露风险。
第四个方面code(授权码)在浏览器传递有一定风险,但是具有两个特性一定程度保证了安全:
在第二章节详细分析了OAuth2.0协议,在实现流程章节分析了创建应用、授权流程、获取信息三个流程,我们发现一个问题:在流程图步骤资源服务器需要远程调用授权服务器check_token端点校验令牌是否消息,这样比较消耗性能。
如果资源服务器和授权服务器约定一个密钥对,授权服务器用秘钥加密令牌,当资源服务器接收到令牌时进行解密直接对令牌进行校验,这样可以节省远程交互。
JSON Web Token(JWT)可以解决上述问题,作为一个开放标准(RFC )定义了一种紧凑的erp源码 安装教程自包含方式,用于作为JSON对象在各方之间安全地传输信息。
JWT分为头部、有效载荷和签名三个部分。头部包含签名算法以及token类型。有效载荷包含真正业务信息,例如用户ID、姓名、邮箱、权限信息。头部和有效载荷任何人都可以读出来,所以需要用签名防止篡改:头部和有效载荷分别进行Base编码,编码后用 . 连接组成新字符串,再使用头部声明算法进行签名。
JWT令牌内容:
JWT解码内容:
在第二章节详细分析了OAuth2.0协议,我们还发现一个问题:客户端在获取到令牌之后,还需要调用资源服务器接口获取用户信息,有没有一种协议可以在返回令牌时同时将用户是谁返回呢?
回答这个问题之前首先对比一组概念:授权与认证。授权关注通信实体具有什么权限,认证关注通信实体是谁。OAuth2.0只有授权流程,返回令牌之后授权流程已经完成,OpenID Connect在此基础上进行了扩展,客户端能够通过认证来识别用户。
OpenID Connect定义了三种角色:
三种角色交互流程:
本文场景对应三种角色:
OIDC标准协议新增id_token字段,这个字段符合JWT标准格式。为什么不与第三章节一样在access_token包含有效负载信息,而是新增id_token字段?因为即使access_token可以加入用户信息并且防篡改,但是用户每次请求都需要携带access_token,增加了带宽和用户信息泄露风险。
OIDC标准协议要求提供了一个/userinfo端点,可以通过access_token调用获取用户信息,那么id_token已经包含了用户信息,为什么还要提供此端点呢?
原因是id_token提供用户基本信息,如果客户端只要求获取基本信息,那么无需调用/userinfo端点。如果需要获取用户详细信息,那么可以调用/userinfo端点。
JWT在线编码工具
JWT在线解码工具
淘宝开放平台用户授权介绍
网站应用微信登录开发指南
欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习
自己有微信公众平台第三方平台的源码包,但是不知道怎么安装?我用的是bae,如何把代码上传,什么的放哪?
下载一个SVN,然后按照百度BAE上传代码的文档一步步操作。少的在项目内的可以直接打包在war包里面,在BAE上一样可以访问;之后需要上传的话可以放在百度云存储BUCKET里面。
云存储的使用方法参看文档:/wiki/index.php?title=docs/cplat/stor/guide
别人手上有拷贝我的源码,是不是可以随时修改我的软件什么的?
我也是做软件的,你担心的情况是不存在的。你委托第三方开发的软件,对方有源码是一个正常的事情。
你的软件运行在你的电脑上(服务器上),第三方理论上是拿不到你服务器相关设置的权限,也就无法修改你的软件代码。
即使被黑客攻击,导致服务出现故障,那也是服务器安全设置有问题,需要修复相关漏洞即可。
给你打个比方:一个炉子产出了两个烧饼,你一个,对方一个;他怎么吃他的那个饼,跟你的饼有影响吗?
放心吧,好好做自己的事情,计算对方使坏,你还有法律武器呢。
微信第三方平台到底怎么使用,完全不明白,有没有人说清楚...
一、微信第三方平台到底怎么使用,完全不明白,有没有人说清楚...所谓微信第三方平台,是指借助腾讯家的微信公众平台,增加微会员、微客服、微服务等其他功能的微信第三方服务平台。
据悉,在苏州做微信公众平台开发的公司有很多,比如苏州微往,苏州微时代等,每家都有自己的特点和优势,你可以去看看
二、微信第三方平台源码怎么使用?
这些程序有很多限制有的需要独立的服务器权限才可以
你的程序是有简单的要求和说明么
三、微信web开发者工具怎么使用?
微信web开发者工具使用,用到的工具:电脑,步骤如下:
下载安装微信web开发者工具,打开微信web开发者工具界面如下:
2.输入要调试微信程序的url,并选择移动设备的类型(安卓或者ios),以安卓为例:
说明:左边选择相应的区块,右边的代码就会追踪到。
注意事项:打开调试工具中的url需要微信公众号平台授权登录微信web开发者工具。
四、现在使用微信第三方服务平台源码都有好处,有没有好点的推荐的
可以随意进行系统二次开发级OEM,方便对接知名ERP系统。微三云提供“整套系统源码输出”,商家可以掌握数据,拥有自己的数据平台,这是当下比较流行的运营模式
2024-11-13 11:21
2024-11-13 10:44
2024-11-13 10:11
2024-11-13 09:39
2024-11-13 09:19