物联网开源平台开发系列003 – Thingsboard OAuth2 – Google身份验证登陆

ThingsBoard 允许您为客户提供单点登录功能,并使用支持 OAuth 2.0 协议的外部用户管理平台自动创建租户、客户或子客户。支持 OAuth 2.0 协议的平台列表:Google、Auth0、Keycloak、Okta、Azure 等,其实也支持企业自建SSO用户中心实现统一登陆。本篇先介绍如何使用谷歌Google身份验证登陆。

本篇参考了官方文档:OAuth 2.0 |ThingsBoard 社区版

在此示例中,我们将使用 Google 身份验证。 用户将被记录为 Tenant,并且 Tenant name 将等于用户的电子邮件。 如果系统中不存在 Tenant,则将创建新的 Tenant。

为了从 Google 和 OAuth 平台映射这些外部用户信息,我们使用内置的基本映射器(basic-mapper)。

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆

准备工作

要使用 Google OAuth 2.0 鉴权平台进行登录,您需要在 Google API 控制台设置一个项目以获取 OAuth 2.0 凭证。

请按照 OpenID Connect 页面上的说明或按照以下步骤配置 OAuth 2.0 客户端。 完成上述说明后,您应该拥有一个新的 OAuth 客户端,其凭证由客户端 ID 和客户端密钥组成。

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆
物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆
物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆
物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆

输入 OAuth 客户端名称,并将 ThingsBoard 重定向 URI 添加到“授权重定向 URI”部分,格式如下:

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆
http(s)://domain:port/login/oauth2/code/

用户在通过 Google 身份验证后将重定向到此路径。 此路径将会被附上访问授权代码,并且必须包含协议;不能包含网址片段、相对路径或通配符,并且不得是公共 IP 地址。

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆

配置好thingsboard 访问域名

在 ThingsBoard 中将 Google 配置为 OAuth 2.0 身份验证提供程序

登录到您的 ThingsBoard 实例;转到 “Security” 部分的 “OAuth 2.0” 页面;

在 “Domains” 选项卡上,单击 “+” 图标;输入您的 ThingsBoard 实例的域名;

单击“OAuth 2.0 客户端”部分中的“新建”以添加新的客户端

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆
物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆

添加新的 OAuth 2.0 客户端:

输入“Google”作为标题;提供程序应设置为 “Google”;如有必要,请指定允许的平台,或保留全部;

在 Google API 控制台中输入“Client ID”和“Client secret”;展开“高级设置”菜单。

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆

转到 “Mapper” 块:

将映射器类型保留为 “BASIC”;选择 “CUSTOM” 作为租户名称策略;指定 %{email} 作为租户名称模式

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆

登陆

物联网开源平台开发系列003 – Thingsboard OAuth2 - Google身份验证登陆

注意:

  1. google的oauth ,需要为应用程序配置域名,并且正式使用需要验证应用程序
  2. thingsboard的oauth配置,在域名下不能带端口号,只能用域名不带端口的, 因此thingsboard的http访问不能用端口。But,这个可以在数据库中直接修改对应字段值操作。

OAuth2 对应的数据库表:

domain 对应页面上的域名设置;

domain_oauth2_client 对应domain绑定的 OAuth2 客户端id;

oauth2_client 对应页面上OAuth2客户端设置;

oauth2_client_registration_template ,内置了几个OAuth2提供者的模板;

对应的API

创建Domain: /api/domain{?oauth2ClientIds}

创建客户端:/api/oauth2/client

系列文章

物联网开源平台开发系列001 – 开源平台Thingsboard 介绍

物联网开源平台开发系列002 – Thingsboard 用户系统分析

物联网开源平台开发系列003 – Thingsboard OAuth2 – Google身份验证登陆

物联网开源平台开发系列004 – Thingsboard的实体、资产、设备一般说明及数据存储 – 陈皮王五de杂记

物联网开源平台开发系列005 – Thingsboard的API简述 – 陈皮王五de杂记

物联网开源平台开发系列006 – 在Thingsboard内创建一个设备 – 陈皮王五de杂记

物联网开源平台开发系列007 – Thingsboard的批量导入设备 – 陈皮王五de杂记

物联网开源平台开发系列008 – 浅谈物联网传输协议 – 陈皮王五de杂记

物联网开源平台开发系列009 – Thingsboard服务器对IoT设备下发指令 – 陈皮王五de杂记

物联网开源平台开发系列010 – Thingsboard规则引擎简介 – 陈皮王五de杂记

物联网开源平台开发系列011 – Thingsboard规则节点Originator Telemetry – 陈皮王五de杂记

物联网开源平台开发系列012 – Thingsboard 设备离线Alarm设置 – 陈皮王五de杂记

物联网开源平台开发系列013 – Thingsboard 遥测产生告警Alarm – 陈皮王五de杂记

物联网开源平台开发系列014 – Thingsboard遥测时序数据存储结构及分区策略 – 陈皮王五de杂记

物联网开源平台开发系列015 – Thingsboard postgresql数据库基本配置 – 陈皮王五de杂记

物联网开源平台开发系列016 – 再谈Thingsboard的设备注册 – 陈皮王五de杂记

物联网开源平台开发系列017 – Thingsboard的设备联动场景 – 陈皮王五de杂记

物联网开源平台开发系列018 – Thingsboard获取和处理天气信息 – 陈皮王五de杂记

物联网开源平台开发系列019 – Thingsboard设备数据传播给资产 – 陈皮王五de杂记

物联网开源平台开发系列020 – Thingsboard的实体视图Entity View – 陈皮王五de杂记

物联网开源平台开发系列021 – Thingsboard的网关gateway – 陈皮王五de杂记

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备 – 陈皮王五de杂记

物联网开源平台开发系列023 – Thingsboard设备列表仪表盘 – 陈皮王五de杂记

物联网开源平台开发系列024 – Thingsboard接入摄像头方案 – 陈皮王五de杂记

物联网开源平台开发系列025 – Thingsboard规则链节点的JS代码调试 – 陈皮王五de杂记

物联网开源平台开发系列026 – Thingsboard 仪表板Entities table 降序排序 – 陈皮王五de杂记

物联网开源平台开发系列027 – Thingsboard 仪表板数据筛选复杂的数值计算或者多层嵌套筛选逻辑实现 – 陈皮王五de杂记

物联网开源平台开发系列028 – Thingsboard 仪表板数据键的数据后处理功能处理复杂Json对象 – 陈皮王五de杂记

原创文章,作者:Gary,如若转载,请注明出处:https://www.cpw5.top/637.html

淘宝小店:陈皮王五工作室

(0)
GaryGary
上一篇 2025-01-27 下午12:13
下一篇 2025-02-02 下午5:31

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(26条)