前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[PHP] 实现oauth下的单点登陆

[PHP] 实现oauth下的单点登陆

作者头像
唯一Chat
发布2020-04-30 16:44:55
7050
发布2020-04-30 16:44:55
举报
文章被收录于专栏:陶士涵的菜地

整体流程是 ,参照腾讯企业邮的对外开放API , 传递client_id + client_secret就可以获取到access_token , 拿着access_token+ 用户的标识 , 去请求一个登陆地址 , 获取到登陆地址直接跳转过去就能登陆成功

1. 首先在管理后台 , 申请生成自己的client_id + client_secret

重置秘钥 , 停用秘钥都会使当前企业的旧秘钥和access_token失效

2. 通过自定义规则生成签名串

获取所有get传递的参数值 , 使用字典序排序 , 拼接在一起 ,拼接上自己的秘钥进行sha1加密 , 作为GET参数signature

代码语言:javascript
复制
<?php
//从企管后台获取到以下参数
$client_secret="af0c7c2ac7b5687d6c4ed5e6a2a7e058780c1aac";
$client_id="appdev.sinanet.com";
//生成签名
$_GET['grant_type']='client_credentials';
$_GET['client_id']=$client_id;
$_GET['ts']=time();//秒数时间戳
$args = array_values($_GET);
sort($args, SORT_STRING);
$args = implode($args);
$sign = sha1($args . $client_secret);
$_GET['signature']=$sign;

//最终传递的GET参数
var_dump($_GET);

3. 获取access_token接口

重新获取token会使旧的token失效

GET /openapi/token?

grant_type=client_credentials&

client_id=appdev.sinanet.com&

ts=1587628159&

signature=ad90ca4f8395c679243c4264bd2159dd59a0f82b  

代码语言:javascript
复制
{
    "result": true,
    "errno": 0,
    "msg": "",
    "data": {
        "access_token": "e3ea1a05893f5906893a37c51e4458bdb7361794",
        "expire_in": 7200
    }
}

4. 通过access_token + 用户标识 获取本企业内的员工登陆地址 , 登陆地址是一次性的 , 过期时间300秒

GET /openapi/get_login_url?

access_token=e3ea1a05893f5906893a37c51e4458bdb7361794&

email=shihan2@xxxxx.com 

代码语言:javascript
复制
{
    "result": true,
    "errno": 0,
    "msg": "",
    "data": {
        "login_url": "http://xxx/cgi/openapi_login.php?ts=1587628586&authKey=7883171fa07d5a149ef5f8e4fd401c925286c2cf&email=shihan2@xxx.com",
        "expire_in": 300
    }
}

5.直接往登陆地址上跳 , 记录cookie session等身份信息 , 再跳到真正的系统  

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯企业邮
腾讯企业邮(Tencent Exmail)是腾讯基于多年海量用户邮件系统研发和运营经验,为企业量身订造的一套办公用邮箱系统。稳定、简洁和快速,整合了丰富的企业应用,涵盖资源共享、消息发布、组织管理等方面。腾讯企业邮和微信生态深度整合,为您提供便捷高效的移动邮件解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档