struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限
使用 Authing 可以轻松接入许多社会化登录,同时无需翻看社会化登录提供方的繁琐接入文档,让开发者更加专注业务从而提升开发效率。
这看起来很方便,But,通过 Authing 登录的社会化登录用户,无法获取更高级的权限!以 Github 举例:授权域功能上线之前,通过 Authing 登录的 Github 用户无法授权读写仓库、读写 Issues 等权限;此功能上线后,通过 Authing 登录的 Github 用户将拥有这些高阶权限的授权能力。如 Github 授权域(图中的 Scope 参数):
QQ 授权域(图中的 Scope 参数):
微博授权域(图中的 Scope 参数):
开发者只需要勾选以上 checkbox 就可以很方便的拥有这些能力!授权流程
用户通过 Authing 登录;
用户在 Authing 登录界面中点击「使用 Github 登录」;
用户通过 Github 登录后 Authing 将 Github 的信息集成到 Authing 用户信息中;
Authing 返回 Code 给开发者配置好的 redirct_uri;
开发者使用 Code 换取 access_token;
开发者使用 access_token 换取用户信息;
开发者在用户信息中获取用户在 Github 平台的 access_token,然后获取操作 Github 的更高级权限;
开发者完成用户认证并开始引导用户执行业务流程;
下图是一个简化流程:开启社会化登录授权域创建 Github 应用在 Github 申请 OAuth 应用,同时授权回调地址填写 Authing 提供的地址:https://oauth.authing.cn/oauth/github/redirect,如下图所示:
创建完成后记录 Client ID 和 Client Secret:
配置社会化登录在Authing 控制台中依次点击第三方登录 -> 社会化登录 -> Github,打开 Github 登录,填写 Github OAuth 应用信息,并在 Scopes 多选框中勾选 repo,最后点击确定:
repo 授权域的作用是授权第三方应用读写 Github 仓库的权限。如果你想了解其他 Scope 的含义,请查看这篇文档:https://docs.authing.cn/authing/advanced/social-login/social-login-scopes。体验拥有更高权限的 Github 登录访问登录页面在 Authing 控制台 > 第三方登录 > OIDC 应用,找到你的 OIDC 应用,点击体验按钮。
如果没有 OIDC 应用,请先创建 OIDC 应用。转到登录界面后,点击「使用 Github 登录」,如下图所示:
在弹出的窗口中,与 Github 完成登录认证,之后会显示确权页面,可见此处提示需要授权 repo,如下图所示:
点击授权按钮,之后是 Authing 单点登录中的确权环节:
点击「授权登录」,之后会跳转到在 OIDC 应用中设置的业务回调地址:
获取到 code 之后,你可以参考以下链接完成登录:1. https://docs.authing.cn/authing/advanced/oidc/oidc-authorization#04-shi-yong-code-huan-qu-token获取社会化登录 token那么接下来如何从 Authing 获取并使用 Github 的 access_token,使用更高级的权限呢?只要获取用户资料即可,Github 的 access_token 存在用户资料中。以下以 Authing Node.js SDK 来举例:安装 authing-js-sdk:
$ npm install authing-js-sdk
初始化 SDK 并获取用户资料:
const Authing = require('authing-js-sdk');
const userPoolId = "你的用户池 ID";
const secret = "你的用户池 Secret";
let authing = new Authing({
userPoolId,
secret
});
async function go() {
let user = await authing.user({id: 'Authing 用户 ID'});
console.log(user);
}
go();
返回结果:
{
...
"thirdPartyIdentity": {
"provider": "github",
"refreshToken": null,
"expiresIn": null,
"updatedAt": "2020-02-11T21:56:50+08:00",
"accessToken": "1a20a073f967264a7e7d05528236525b1376a4a9"
}
...
}
使用社会化登录 token从上一步的返回结果中取出 Github Token 后,调用读取用户仓库信息的 API:
$ curl -H "Authorization: token 1a20a073f967264a7e7d05528236525b1376a4a9" https://api.github.com/user/repos\?visibility\=private
可以看到返回了用户的私有仓库信息:刷新社会化登录 token如果社会化登录方的 token 在一定时间后失效,会导致旧的 token 无法访问社会化登录方的服务,因此需要刷新社会化登录方的 token,并使用新的 token 调用相关服务。你可以调用 SDK 中的 refreshThirdPartyToken 方法来刷新社会化登录 token:
const Authing = require('authing-js-sdk');const userPoolId = "你的用户池 ID"const secret = "你的用户池 Secret"let authing = new Authing({ userPoolId, secret})async function go() { let res = await authing.refreshThirdPartyToken('Authing 用户 ID'); console.log(res);}go();
返回结果:
{
refreshSuccess: true,
message: 'github token 无需刷新,官网文档已说明长期有效',
provider: 'github',
refreshToken: null,
accessToken: '1a20a073f967264a7e7d05528236525b1376a4a9',
updatedAt: '2020-02-11T21:57:04+08:00'
}
由于 Github 不提供 refresh_token 并且 access_token 长期有效,所以此处其实并未真正刷新 token。其他社会化登录方如微信、QQ 提供刷新 token 功能,通过 SDK 刷新 token 时,Authing 会发出刷新 token 请求,并返回新的 accessToken 和 refreshToken。总结以上就是 Authing + Github 社会化登录的使用方式。总结起来,Authing 帮你省去了服务器处理 OAuth 2.0 协议中 code 换 token,token 换用户信息的过程,能够直接将用户信息返回给你。同时 Authing 易用的 SDK 能够帮你快速接入获取、刷新用户社会化登录 token 的功能。如果你还需要其他社会化登录,比如微博、微信,那么此时的身份整合与管理作用的优势就体现出来,同时你也无需阅读国内质量参差不齐的授权登录开发文档。你只需要填写配置信息,Authing 会帮你拼接授权 URL 链接,Authing 会帮你处理 OAuth 2.0 协议中换取用户信息的繁琐过程,并将用户信息直接返回给你的业务地址,Authing 会帮你绑定不同的第三方社会化登录提供商,Authing 为你提供简单易用的 SDK,轻松获取、刷新用户的社会化登录 token。
struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限相关推荐
- 新的一年,从事液晶×××、数字标牌技术支持的我,希望有更大的进步,寻找一份更有挑战性的工作!...
液晶×××.数字标牌 技术支持 新的一年,希望有更大的进步,在寻找一份更有挑战性的工作! 本人从事液晶×××.数字标牌技术支持工作已有一年多,想寻求一份更有挑战性的工作.本人曾做过以下工作: 担任×× ...
- 【第二十二讲】获取参数名
[第二十二讲]获取参数名 文章目录 [第二十二讲]获取参数名 将 `Bean2.java` 编译后,失去参数 加 `-parameters` 编译后有参数 加 `-g` 编译后有参数 获取参数 封装接 ...
- js地址栏获取参数的方法,解决中文乱码问题,能支持中文参数
第一种:参数只能是英文的. //获取地址栏参数//只能是英文参数 function GetQueryString(name) { var reg = new RegExp("(^|& ...
- 在线获取百度BDUSS源码 支持5种登录方式
简介: 这个是模拟百度登录获取BDUSS的源码,更新总共5种获取方式,分别是普通登录.扫码登录.短信验证码登录和第三方登录(包括QQ登录和微信登录),可无视异地和登录保护. 网盘下载地址: http: ...
- 社会化登录小结 (豆瓣为例)
社会化登录之豆瓣小结 1:登录豆瓣网,注册一个开发者账号,然后选择我的应用. 2:创建我的应用: 回调地址很重要,要和自己请求时的回调地址一致.QQ对于回调地址只是匹配域名,其他几个是直接匹配整个地址 ...
- 前端学习(1966)vue之电商管理系统电商系统之获取参数列表
目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...
- Struts2中带参数的结果集
1.在Struts2中带参数的结果集,即向结果集传参.struts2中有转发和重定向到某个视图,其中转发的过程在服务端完成,这个过程共享一个value stack(值栈),客户端并不知道页面跳转到了哪 ...
- 钉钉二次开发-组织机构同步 获取用户信息 单点登录接口
建用户 调试工具:在线调试 请求方式:POST(HTTPS) 请求地址:https://oapi.dingtalk.com/user/create?access_token=ACCESS_TOKEN ...
- 素颜聚合登录多渠道便捷登录平台接入【免费社会化登录计划】
素颜聚合登录,就是利用用户在第三方平台上已有的账号来快速完成自己应用的登录流程.简化用户注册登录过程.改善用户浏览站点的体验.迅速提高网站注册量和用户数据量.有完善的开发文档与 SDK,方便开发者快速 ...
最新文章
- 7限制cpu使用_Kubernetes 资源配额使用指南 | Linux 中国
- 机器学习在销售报价单的产品推荐场景中的作用
- 前端学习(2912):MvvM的实现原理
- vb6.0服务器组件安装失败,win10安装vb6.0总是失败怎么办?win10 vb6.0安装不了的解决办法...
- 上大学有用吗?35岁以上的程序员都去哪里了
- UI Framework-1: Ash Color Chooser
- 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 858期】
- 方舟代码_源代码丢失的方舟
- android mp4 画面裁剪,说说Android的视频裁剪(二)
- 自动打卡php,使用腾讯云实现网易云自动打卡签到 | 小七呀w
- 链接标签a去掉下划线
- 桌面存放linux文件无法删除,桌面文件无法删除怎么办【图文教程】
- 清华规划院 伟景行 诚聘 Jsp/Java/Web高级开发工程师 互联网开发主管 测试工程师 etc.
- IDCE-CT系列蓄电池放电容量测试仪(蓄电池容量检测仪/放电仪)功能介绍
- Web技术基础学②——初步学习CSS
- 程序员才会明白的代码版“猜灯谜”
- 感恩工作平台心得体会_心得体会-感恩工作心得体会
- Amesim学习——热传导基础案例:金和铝的导热性比较
- vue2.0入门篇—目录结构
- 一元多次方程在MATLAB中的解以及图形显示
热门文章
- final 数组 java_Java Final数组列表
- zillow房价预测比赛_Kaggle竞赛 —— 房价预测 (House Prices)
- 用python控制钉钉软件_Python—实现钉钉后台开发
- 如果你跟夕小瑶恋爱了...(下)
- 聊聊Spring Cloud版本的那些事儿
- Spring Cloud Hystrix的请求合并
- 论文浅尝 | 用于视觉推理的显式知识集成
- 最全目标检测相关资料整理 (目标检测+数据增强+卷价神经网络+类别不均衡...)
- SpringBoot防止重复请求,重复表单提交超级简单的注解实现
- 谈谈C#反射(Reflection)