资讯专栏INFORMATION COLUMN

腾讯 Tars Web 管理端用户体系对接

lncwwn / 3414人阅读

摘要:本文记录一下我的用户体系对接实验中的一些笔记,便于其他的用户参阅。该服务是服务,有独立的用户登录登出功能。结语本文给出了一个最简单的对接第三方用户体系的方法。原文标题腾讯管理端用户体系对接发布日期原文链接。

背景

这段时间一直在基于 Tars 作开发。最近的文章也多是针对 Tars 的一些学习笔记。前面我们搭建了 Tars 基础框架,打开了 Tars web 管理界面进行服务的运维操作。不过读者肯定很快就会发现:这好像不用登录啊,那怎么保证只有有权限的用户才能更改服务呢?

显然 Tars web 是支持用户鉴权的。官方文档在这里。本文记录一下我的用户体系对接实验中的一些笔记,便于其他 Tars 的用户参阅。(特别是像我这样对 Node.js 不熟悉的小白……)

本系列文章:

腾讯 Tars 基础框架手动搭建——填掉官方 Guide 的坑

腾讯 Tars-Go 服务 Hello World——从 HTTP 开始

腾讯 Tars-Go 服务 Hello World——RPC 通信

腾讯 Tars-Go 服务获取自定义模版(配置)值

腾讯 Tars Web 管理端用户体系对接(本文)

本文地址:https://segmentfault.com/a/1190000019657656

Tars 用户鉴权流程 准备

如果要启用 Tars web 的用户功能,那么首先开发者需要设计一个自己的用户登录服务。该服务是 http 服务,有独立的用户登录、登出功能。Tars Web 本身实现了一个简单的用户功能,不过本文我们重新设计一个。为便于说明,我们假设这个 Tars web 和用户服务 web 环境如下:

Tars Web URL:https://tars.amc.com

用户 Web URL:https://user.amc.com

基本流程

从用户通过浏览器访问 Tars web 管理平台开始,如果启用了用户功能,那么基本流程如下:

一言以蔽之:每当浏览器向 Tars web 发起一个请求时,Tars web 均向用户服务器发起请求,判断用户是否有权限;如果鉴权通过,则正常操作 Tars;如果没有,则重定向至用户登录页面。

Tars Web 端配置

用户体系配置在 TarsWeb/config/loginConfig.js 文件中,读者可以查询代码直接研究详细用法,我这边对接的是最基础的功能(其实也够用了),下面列出涉及到的相关配置值:

module.exports = {
    enableLogin: true,                                // 启用登录验证
    loginUrl: "https://user.amc.com/login.html",    // 当鉴权失败时,重定向的 URL
    redirectUrlParamName: "redirect_url",            // 上述重定向时,在 URL 中带 Tars 原 URL 的参数名。后文说明
    uidCookieName: "uid",                           // 用户服务在 cookies 里用于保存用户名的 cookie 名
    ticketCookieName: "ticket",                     // 用户服务在 cookies 里用于保存票据的 cookie 名
    cookieDomain: "amc.com",                          // 用户服务的 cookies 所属的域,注意需让 Tars web 能够访问到
    validate: "https://auth.amc.com/cgi-bin/validate",    // Tars Web 向用户服务判断是否有去用户权限时使用的请求
    validateUidParamName: "uid",                    // 请求 validate 时,POST body 中存放用户名的参数名
    validateTicketParamName: "ticket",              // 请求 validate 时,POST body 中存放票据的参数名
    validateMatch: [                                // validate 返回 JSON 响应时,Tars Web 如何判断结果
        ["code", 0],                                // 这样表示判断条件为 resp.code == 0
        ["data.result", true]                        // 表示判断条件为 resp.data.result == true
    ],                                                // 多个条件为 AND 的关系,需要全部条件均通过才认为鉴权通过
    ignore: ["/static"],                             // 表示不需要登录校验的路径,如果每个请求都向用户鉴权一下,还是很浪费的
    ignoreIps: [],                                   // 访问 IP 白名单
};

有了这个配置之后,我们重新说明一下前文的图片:

无票据或票据失效情况下访问 Tars Web

用户通过浏览器访问 https://tars.amc.com,此时 Tars Web 根据配置里说明的,从 cookie 中,取出 uidticket 参数值,然后以以下 Json 格式,向 https://user.amc.com/cgi-bin/validate 发出请求:

{
    "uid": "xxxxx",            // 如果 cookie 不存在,这里的值会是 "undefined"
    "ticket": "xxxxx",        // 如果 cookie 不存在,这里的值会是 "undefined"
}

user.amc.com 返回失败的时候,只要不返回 validateMatch 中指定的条件就行了。

此时 TarsWeb 会直接返回 http 状态码 307,重定向 URL :

https://user.amc.com/login.html?redirect_url=https%3A%2F%2Ftars.amc.com%2F

通过登录服务登录

浏览器通过重定向的 URL 访问用户服务,并进行登录操作。用户服务应能够根据 Tars Web 带上的 redirect_url 参数,在用户登录成功后,跳转到 Tars Web 上。

票据有效时访问 Tars Web

用户登录成功后,重定向到 Tars Web 或用户在票据有效期内访问 Tars Web 时,Tars 依然会按照配置,请求 https://user.amc.com/cgi-bin/validate 以判断票据。此时按照配置,用户服务应该返回包含以下信息:

{
    "code": 0,
    "data": {
        "result": true
    }
}

这样,Tars Web 根据配置,就能认为票据是有效的,因而继续后续的 Tars 操作。

用户登出

登录成功后,用户可以看到在 Tars Web 界面的右上角出现了自己的 uid 名。用户名的下拉菜单只有一个选项,就是注销操作。在没有配置 logoutUrl 的情况下,Tars Web 实现退出登录的逻辑就是简单地删掉配置中提及的 uidticket cookies 值。其实这样的逻辑也够了。

结语

本文给出了一个最简单的对接第三方用户体系的方法。其实笔者是想要对接微信网站登录的,不过因为自己手头没有做网站备案而作罢。不过为企业网站部署的读者,也可以这么做,这样其实安全性更高,而且操作更方便。

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原作者: amc,欢迎转载,但请注明出处。

原文标题:《腾讯 Tars Web 管理端用户体系对接》

发布日期:2019-4-7

原文链接:https://cloud.tencent.com/developer/article/1410611。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105278.html

相关文章

  • 干货| PHPCon上TARS-PHP全面解读及PPT下载

    摘要:年月日,在上海举行的第六届中国开发者大会上,腾讯开源项目首次全面发布版本,阅文集团高级开发工程师梁晨对如何通过构建高性能框架做了经验分享。分享内容作为腾讯开源的框架,在发布之后即受到开源领域的关注。阅文集团本身也有一块新的业务在使用。 2018年5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,腾讯开源项目TARS首次全面发布PHP版本,阅文集团高级开发工程师梁晨对...

    JasonZhang 评论0 收藏0
  • 腾讯与阅文技术合作 微服务框架Tars再添PHP

    摘要:引言作为由腾讯公司开源的优秀框架与服务部署运维解决方案,被阅文集团引入了实际实践中,同时阅文集团对在语言层面进行了能力的补全,令如虎添翼。作为腾讯公司的优秀框架与服务部署运维解决方案,可以满足上述的所有需求。 梁晨(Ted),任职阅文集团技术中心,负责起点中文网的WEB后台开发工作。曾负责腾讯上海企业产品部营销QQWeb后台开发、QQ公众号Web后台开发,对大型网站技术架构,有自己的经...

    yanwei 评论0 收藏0
  • 腾讯开源项目TARS首次全面发布PHP版本

    摘要:月日,在上海举行的第六届中国开发者大会上,腾讯开源项目首次全面发布版本,阅文集团高级开发工程师梁晨对如何通过构建高性能框架做了经验分享。腾讯开源项目贡献者,腾讯开发组成员,对于构建高性能后台微服务治理有丰富的经验。 5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,腾讯开源项目TARS首次全面发布PHP版本,阅文集团高级开发工程师梁晨(Ted)对PHP如何通过TAR...

    appetizerio 评论0 收藏0
  • 腾讯正式对外开源高性能 RPC 开发框架与微服务平台Tars

    摘要:是将腾讯内部使用的微服务架构多年的实践成果总结而成的开源项目,目前已于月日正式对外开源。 Tars 是将腾讯内部使用的微服务架构 TAF(Total Application Framework)多年的实践成果总结而成的开源项目,目前已于4月10日正式对外开源。 作为支持多语言的高性能 RPC 开发框架和配套一体化的服务治理平台,Tars可以帮助企业或者用户以微服务的方式快速构建稳定可靠...

    weizx 评论0 收藏0

发表评论

0条评论

lncwwn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<