node-red中有关用户Registrierung鉴权的研究

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

node-red中有关用户Registrierung鉴权的研究缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 前言
  2. 2. Öffnen.https
  3. 3. Herausgeber器与Admin API的鉴权
  4. 4. 设置默认用户
  5. 5. Custom definiert用户鉴权
  6. 6. 结语

前言

默认地,node-redHerausgeber器可以被任何访问的用户Operationen,包括修改节点,流Daten,重新部署流。
这种默认的部署方式只适用于Betrieb在可靠的网络中。下面我就给大家介绍一下,在公网上部署node-red后,如何对其进行安全加固和权限验证。
主要Unterteilung为三部Unterteilung

  • Öffnen.https权限
  • 保护Herausgeber器和admin api
  • 保护http节点和node-red的仪表盘

Öffnen.https

node-red默认是使用http来进行访问,如果要配置https访问,你需要在node-red的配置文件setting文件中配置一下https部Unterteilung的内容
在配置文件中 https配置项可以是一个json静态Daten,也可以是一个函数。vollständig的配置Parameter事nodejs中http模块的配置  Klicken链接可以Überprüfenzuvollständig的配置

在该配置项中,至少要有二项需要返回或配置。

  • key PEMDas Format化后的密钥,Typus可以是String 或Buffer
  • cert PEMDas Format化后的 Cert chain,Typus可以是String 或Buffer

配置的例子

https: {
    key: require("fs").readFileSync('privkey.pem'),
    cert: require("fs").readFileSync('cert.pem')
},

如果你要配置成一个function的话,请记得将key与cert放zupromise中,如下

https: function() {
    return new Promise((resolve, reject) => {
        var key, cert;
        // Do some work to obtain valid certificates
        // ...
        resolve({
            key: key
            cert: cert
        })
    });
}

如果你要在配置https后,自动Erfrischen证书,并且不用重启node-red,node-red也是能做zu的,需要nodejs在11之上,并且https必须配置成function,接着设置 httpsRefreshInterval,Typus为一个数字,表示几小时内循环自动Erfrischen。

Herausgeber器与Admin API的鉴权

node-red的Herausgeber器与Admin api支持两种Typus的鉴权

  • 使用用户名 密码证书来进行鉴权
  • 使用任何OAuth/OpenID提供商来进行鉴权,如Twitter活GitHub。

基于用户名和密码的鉴权只需要在setting配置文件中配置即可
如下是一个配置Beispiel

adminAuth: {
    type: "credentials",
    users: [
        {
            username: "admin",
            password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
            permissions: "*"
        },
        {
            username: "george",
            password: "$2b$08$wuAqPiKJlVN27eF5qJp.RuQYuy6ZYONW7a/UWYxDTtwKFCdB8F19y",
            permissions: "read"
        }
    ]
}

管理员可以配置多个用户。这些用户的Registrierung及权限Daten都是写死的。包括Registrierung的账Nr.,密码,和权限。Von denen密码是使用bcrypt 算法Werkzeuge进行hash加密。
生成hash密码可以使用 node-red admin hash-pw(在node-red 1.1.0 之后)

使用OAuth/OpenID来进行授权

dminAuth: {
    type:"strategy",
    strategy: {
        name: "twitter",
        label: 'Sign in with Twitter',
        icon:"fa-twitter",
        strategy: require("passport-twitter").Strategy,
        options: {
            consumerKey: TWITTER_APP_CONSUMER_KEY,
            consumerSecret: TWITTER_APP_CONSUMER_SECRET,
            callbackURL: "http://example.com/auth/strategy/callback",
            verify: function(token, tokenSecret, profile, done) {
                done(null, profile);
            }
        },
    },
    users: [
       { username: "knolleary",permissions: ["*"]}
    ]
}

配置项详解:
name: 策略Name
lable/icon:在Registrierung页显示的信息
strategy:需要使用zu的库
options:根据strategy来进行配置,需要使用的Parameter
verify:验证函数,最后使用done函数将用户Informationen向下传递

设置默认用户

如果你想要限定没有Registrierung时,node-red的一些权限,可以使用设置默认用户的方式来实现
配置一个默认用户,并配置其对于的权限。权限可以是Alles,也可以是只读。
如下是一个例子

adminAuth: {
    type: "credentials",
    users: [ /* list of users */ ],
    default: {
        permissions: "read"
    }
}

除来 * 和 read 两种大模块的权限限定外,管理员还可以配置Admin API
例如为了获取gegenwärtig流的信息,用户将会要求 flow.read权限。如果要更新流信息,他们需要使用flows.write权限。

Custom definiert用户鉴权

目前介绍的用户鉴权都是硬Codierung的鉴权,写死用户Daten及对于的权限。这种方式不方便扩展,所以node-red又提供了另一种方式,Custom definiert用户鉴权。以下是实现步骤
创建 <node-red>/user-authentication.js 按照以下模版编写授权代码

module.exports = {
   type: "credentials",
   users: function(username) {
       return new Promise(function(resolve) {
           // Do whatever work is needed to check username is a valid
           // user.
           if (valid) {
               // Resolve with the user object. It must contain
               // properties 'username' and 'permissions'
               var user = { username: "admin", permissions: "*" };
               resolve(user);
           } else {
               // Resolve with null to indicate this user does not exist
               resolve(null);
           }
       });
   },
   authenticate: function(username,password) {
       return new Promise(function(resolve) {
           // Do whatever work is needed to validate the username/password
           // combination.
           if (valid) {
               // Resolve with the user object. Equivalent to having
               // called users(username);
               var user = { username: "admin", permissions: "*" };
               resolve(user);
           } else {
               // Resolve with null to indicate the username/password pair
               // were not valid.
               resolve(null);
           }
       });
   },
   default: function() {
       return new Promise(function(resolve) {
           // Resolve with the user object for the default user.
           // If no default user exists, resolve with null.
           resolve({anonymous: true, permissions:"read"});
       });
   }
}

最后在setting文件的adminAuth中配置
adminAuth: require("./user-authentication")

结语

以上就是本篇的Alles内容,这些内容对于想要精细化控制node-red的权限尤为重要,特别是要将其改造为一个多租户Das System时。 谢谢观看。

来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Node-RED 字数 3411 字 · 阅读约 9 Unterteilung钟 更新 2023-02-01 永久链接 https://www.modbus.cn/11524.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Relevante Etiketten
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.