The IoT Broker is a message broker that helps ensure things connected to the Internet has a secure, open and interoperable communication environment. It does this by:
- Using XMPP, providing things with a distributed, federated communication network that solves basic authentication and authorization. XMPP is very capable, and provides a standardized middleware layer for internet applications that require real-time communication support. Using XMPP replaces the need for customized middleware with replaceable components.
- Providing a Thing Registry for things to be securely claimed by their owners. The Thing Registry matches ownership claims to unclaimed devices, and informs matching pairs about the network identities of each other. Once claimed, a thing can be made public. They are allowed to publish their existence and capabilities, allowing consumers to find suitable things based on their capabilities.
- Providing Decision support for things in a changing environment. This allows owners to determine who can access their things, what fields they are allowed to read and what parameters they are allowed to control.
- Securing Account Creation for batches of things, to protect against malicious use and unwanted bots.
Using this IoT Broker allows you to create open, yet secure and interoperable applications for the Internet of Things.
The reasons for choosing XMPP for an IoT backbone are many. Here are some:
- XMPP is standardized by the Internet Engineering Task Force (IETF) in RFC 6120, RFC 6121 and RFC 6122.
- XMPP is encrypted.
- XMPP is battle tested and robust, with 19 years of operation.
- XMPP is extensible. Anyone can extend it without being afraid the extensions will collide with other extensions.
- XMPP has a series of standardized extenions, managed by the XMPP Standards Foundations - XSF.
- XMPP is federated, meaning anyone can set up their own XMPP domain, extending the network without limiting performance of the rest of the network. Federation is the key to global scalability.
- There’s a lot of available software for XMPP, including clients, servers and libraries in most languages.
- XMPP supports both Human-to-Human (H2H), Human-to-Machine (H2M) and Machine-to-Machine (M2M) interfaces.
- XMPP supports most important communication patterns, including:
- Asynchronous messaging
- Event subscription
- XMPP is not sensitive to network topology in the same way as HTTP and CoAP.
- XMPP is secure, in contrast to protocols such as MQTT which due to intrinsic vulnerabilities can never be made secure in an open and interoperable environment such as the Internet.
- XMPP includes a global, distributed identity model, providing actors with their own unique global and authenticated identity. This makes distributed transactions and security decisions easier. Everybody knows the identity of each other.
XEP support by the IoT Broker
The IoT Broker is an XMPP server dedicated to IoT-related applications. It has support for a specific set of protocols to achieve this. The following table lists what server-specific protocols are supported by the broker. (All client-side protocols are by their very nature automatically supported.)
|RFC-6120||Extensible Messaging and Presence Protocol (XMPP): Core|
|RFC-6121||Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence|
|RFC-7395||An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket|
|RFC-7590||Use of Transport Layer Security (TLS) in the Extensible Messaging and Presence Protocol (XMPP)|
|RFC-7622||Extensible Messaging and Presence Protocol (XMPP): Address Format|
|XEP-0049||Private XML Storage|
|XEP-0059||Result Set Management|
|XEP-0124||Bidirectional-streams Over Synchronous HTTP (BOSH)|
|XEP-0156||Discovering Alternative XMPP Connection Methods|
|XEP-0160||Best Practices for Handling Offline Messages|
|XEP-0163||Personal Eventing Protocol|
|XEP-0178||Best Practices for Use of SASL EXTERNAL with Certificates|
|XEP-0185||Dialback Key Generation and Validation|
|XEP-0206||XMPP Over BOSH|
|XEP-0288||Bidirectional Server-to-Server Connections|
|XEP-0324||Internet of Things - Provisioning|
|XEP-0337||Event Logging over XMPP|
|XEP-0347||Internet of Things - Discovery|
|XEP-0363||HTTP File Upload|
If you have any questions or comments, if you would like to request added features, or if you would like to license the software, please go to the Feedback page. If you want to try the IoT Broker, you can Request an account. If you want to automate account creation, you can Request an API key. Account creation on this broker requires a valid API key.