物联网开源平台开发系列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杂记

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

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

(0)
GaryGary
上一篇 2025-01-27 下午12:13
下一篇 4天前

相关推荐

发表回复

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

评论列表(5条)