blob: f85707ef78e9d3556941256f441c6dd13083efcc [file] [log] [blame]
<!DOCTYPE html>
<html lang="1.8" class="js csstransforms3d">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Hugo 0.81.0" />
<meta name="description" content="A set of micro-services for connecting millions of devices.">
<meta name="author" content="The Eclipse Hono Project">
<link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<title>Device Provisioning :: Eclipse Hono&trade; Vers.: 1.8</title>
<link href="/hono/docs/css/nucleus.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/fontawesome-all.min.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/hybrid.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/featherlight.min.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/perfect-scrollbar.min.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/auto-complete.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/atom-one-dark-reasonable.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/theme.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/hugo-theme.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/theme-hono.css?1626138716" rel="stylesheet">
<link href="/hono/docs/css/hono.css?1626138716" rel="stylesheet">
<script src="/hono/docs/js/jquery-3.3.1.min.js?1626138716"></script>
<style>
:root #header + #content > #left > #rlblock_left{
display:none !important;
}
:not(pre) > code + span.copy-to-clipboard {
display: none;
}
</style>
<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@EclipseHono">
<meta name="twitter:title" content="Device Provisioning :: Eclipse Hono&amp;trade; Vers.: 1.8">
<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
<meta property="og:title" content="Device Provisioning :: Eclipse Hono&amp;trade; Vers.: 1.8" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.8/concepts/device-provisioning//" />
<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
</head>
<body class="" data-url="/hono/docs/1.8/concepts/device-provisioning/">
<nav id="sidebar" class="">
<div id="header-wrapper">
<div id="header">
<a href="https://www.eclipse.org/hono/">
<img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
</a>
</div>
<div class="searchbox">
<label for="search-by"><i class="fas fa-search"></i></label>
<input data-search-input id="search-by" type="search" placeholder="Search...">
<span data-search-clear=""><i class="fas fa-times"></i></span>
</div>
<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1626138716"></script>
<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1626138716"></script>
<script type="text/javascript">
var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.8";
</script>
<script type="text/javascript" src="/hono/docs/js/search.js?1626138716"></script>
</div>
<div class="highlightable">
<ul class="topics">
<li data-nav-id="/hono/docs/1.8/concepts/" title="Concepts" class="dd-item
parent
">
<a href="/hono/docs/1.8/concepts/">
<i class="far fa-lightbulb"></i> Concepts
</a>
<ul>
<li data-nav-id="/hono/docs/1.8/concepts/device-identity/" title="Device Identity" class="dd-item ">
<a href="/hono/docs/1.8/concepts/device-identity/">
Device Identity
</a>
</li>
<li data-nav-id="/hono/docs/1.8/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
<a href="/hono/docs/1.8/concepts/tenancy/">
Multi-Tenancy
</a>
</li>
<li data-nav-id="/hono/docs/1.8/concepts/device-provisioning/" title="Device Provisioning" class="dd-item active">
<a href="/hono/docs/1.8/concepts/device-provisioning/">
Device Provisioning
</a>
</li>
<li data-nav-id="/hono/docs/1.8/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
<a href="/hono/docs/1.8/concepts/connecting-devices/">
Connecting Devices
</a>
</li>
<li data-nav-id="/hono/docs/1.8/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
<a href="/hono/docs/1.8/concepts/device-notifications/">
Device Notifications
</a>
</li>
<li data-nav-id="/hono/docs/1.8/concepts/command-and-control/" title="Command &amp; Control" class="dd-item ">
<a href="/hono/docs/1.8/concepts/command-and-control/">
Command &amp; Control
</a>
</li>
<li data-nav-id="/hono/docs/1.8/concepts/resource-limits/" title="Resource limits" class="dd-item ">
<a href="/hono/docs/1.8/concepts/resource-limits/">
Resource limits
</a>
</li>
<li data-nav-id="/hono/docs/1.8/concepts/connection-events/" title="Connection Events" class="dd-item ">
<a href="/hono/docs/1.8/concepts/connection-events/">
Connection Events
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/" title="User Guide" class="dd-item
">
<a href="/hono/docs/1.8/user-guide/">
<i class="fas fa-book-reader"></i> User Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.8/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/mongodb-based-device-registry/">
MongoDB Based Device Registry
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/jdbc-based-device-registry/" title="JDBC Based Device Registry" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/jdbc-based-device-registry/">
JDBC Based Device Registry
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/file-based-device-registry/">
File Based Device Registry
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/http-adapter/">
HTTP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/mqtt-adapter/">
MQTT Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/amqp-adapter/">
AMQP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/coap-adapter/">
CoAP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/kura-adapter/">
Kura Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.8/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
<a href="/hono/docs/1.8/user-guide/sigfox-adapter/">
Sigfox Adapter
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/" title="Admin Guide" class="dd-item
">
<a href="/hono/docs/1.8/admin-guide/">
<i class="fas fa-sliders-h"></i> Admin Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.8/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/common-config/">
Common Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/auth-server-config/">
Auth Server Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/mongodb-device-registry-config/">
MongoDB Based Device Registry Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/jdbc-device-registry-config/">
JDBC Based Device Registry Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/file-based-device-registry-config/">
File Based Device Registry Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/command-router-config/">
Command Router Service Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/device-connection-config/">
Device Connection Service Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/http-adapter-config/">
HTTP Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/mqtt-adapter-config/">
MQTT Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/amqp-adapter-config/">
AMQP Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/coap-adapter-config/">
CoAP Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/kura-adapter-config/">
Kura Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/hono-client-configuration/">
Hono Client Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/hono-kafka-client-configuration/" title="Hono Kafka Client Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/hono-kafka-client-configuration/">
Hono Kafka Client Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/amqp-network-config/">
AMQP 1.0 Messaging Network Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/secure_communication/">
Secure Communication
</a>
</li>
<li data-nav-id="/hono/docs/1.8/admin-guide/monitoring-tracing-config/" title="Monitoring &amp; Tracing" class="dd-item ">
<a href="/hono/docs/1.8/admin-guide/monitoring-tracing-config/">
Monitoring &amp; Tracing
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.8/dev-guide/" title="Developer Guide" class="dd-item
">
<a href="/hono/docs/1.8/dev-guide/">
<i class="fas fa-tools"></i> Developer Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.8/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
<a href="/hono/docs/1.8/dev-guide/building_hono/">
Building from Source
</a>
</li>
<li data-nav-id="/hono/docs/1.8/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
<a href="/hono/docs/1.8/dev-guide/amqp_adapter_client/">
AMQP Adapter Client for Java
</a>
</li>
<li data-nav-id="/hono/docs/1.8/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
<a href="/hono/docs/1.8/dev-guide/java_client_consumer/">
Consuming Messages from Java
</a>
</li>
<li data-nav-id="/hono/docs/1.8/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
<a href="/hono/docs/1.8/dev-guide/custom_http_adapter/">
Implement a Custom Hono HTTP Protocol Adapter
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.8/api/" title="API" class="dd-item
">
<a href="/hono/docs/1.8/api/">
&nbsp;<i class='fas fa-plug'></i>&nbsp;API
</a>
<ul>
<li data-nav-id="/hono/docs/1.8/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/telemetry/">
Telemetry API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/event/" title="Event API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/event/">
Event API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/command-and-control/" title="Command &amp; Control API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/command-and-control/">
Command &amp; Control API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/kafka-api/" title="Kafka-based APIs" class="dd-item ">
<a href="/hono/docs/1.8/api/kafka-api/">
Kafka-based APIs
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/telemetry-kafka/" title="Telemetry API for Kafka Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/telemetry-kafka/">
Telemetry API for Kafka
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/event-kafka/" title="Event API for Kafka Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/event-kafka/">
Event API for Kafka
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/command-and-control-kafka/" title="Command &amp; Control API for Kafka Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/command-and-control-kafka/">
Command &amp; Control API for Kafka
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/tenant/" title="Tenant API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/tenant/">
Tenant API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/command-router/" title="Command Router API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/command-router/">
Command Router API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/device-connection/">
Device Connection API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/device-registration/">
Device Registration API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/credentials/" title="Credentials API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/credentials/">
Credentials API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/authentication/" title="Authentication API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/authentication/">
Authentication API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/management/" title="Device Registry Management API Specification" class="dd-item ">
<a href="/hono/docs/1.8/api/management/">
Device Registry Management API
</a>
</li>
<li data-nav-id="/hono/docs/1.8/api/metrics/" title="Metrics" class="dd-item ">
<a href="/hono/docs/1.8/api/metrics/">
Metrics
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.8/deployment/" title="Deployment" class="dd-item
">
<a href="/hono/docs/1.8/deployment/">
<i class="fas fa-shipping-fast"></i> Deployment
</a>
<ul>
<li data-nav-id="/hono/docs/1.8/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
<a href="/hono/docs/1.8/deployment/helm-based-deployment/">
Helm based Deployment
</a>
</li>
<li data-nav-id="/hono/docs/1.8/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
<a href="/hono/docs/1.8/deployment/openshift/">
OpenShift / OKD
</a>
</li>
<li data-nav-id="/hono/docs/1.8/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
<a href="/hono/docs/1.8/deployment/create-kubernetes-cluster/">
Setting up a Kubernetes Cluster
</a>
</li>
<li data-nav-id="/hono/docs/1.8/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
<a href="/hono/docs/1.8/deployment/resource-limitation/">
Limiting Resource Usage
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.8/architecture/" title="Architecture" class="dd-item
">
<a href="/hono/docs/1.8/architecture/">
<i class="fas fa-landmark"></i> Architecture
</a>
<ul>
<li data-nav-id="/hono/docs/1.8/architecture/component-view/" title="Component View" class="dd-item ">
<a href="/hono/docs/1.8/architecture/component-view/">
Component View
</a>
</li>
<li data-nav-id="/hono/docs/1.8/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
<a href="/hono/docs/1.8/architecture/auth/">
Authentication/Authorization
</a>
</li>
</ul>
</li>
</ul>
<section id="shortcuts">
<h3></h3>
<ul>
<li>
<a class="padding" href="https://www.eclipse.org/hono/" title="Hono&#39;s Homepage"><i class='fas fa-home'></i> Hono Home</a>
</li>
<li>
<a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
</li>
</ul>
</section>
<section id="prefooter">
<hr/>
<ul>
<li>
<div id="select-box-wrapper">
<div id="select-box">
<a class="padding">
Version:&nbsp;
<div class="select-style">
<select id="select-language" onchange="location = this.value;">
<option id="stable" value="https://www.eclipse.org/hono/docs/concepts/device-provisioning/">stable (1.8)</option>
<option id="1.8" value="https://www.eclipse.org/hono/docs/1.8/concepts/device-provisioning/" selected>1.8</option>
<option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/concepts/device-provisioning/">1.7</option>
<option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/concepts/device-provisioning/">1.6</option>
<option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/concepts/device-provisioning/">1.5</option>
<option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/concepts/device-provisioning/">1.4</option>
<option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/concepts/device-provisioning/">1.3</option>
<option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/concepts/device-provisioning/">1.2</option>
<option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/concepts/device-provisioning/">1.1</option>
<option id="dev" value="https://www.eclipse.org/hono/docs/dev/concepts/device-provisioning/">dev</option>
</select>
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
<g>
<g id="arrow-drop-down">
<polygon points="0,63.75 127.5,191.25 255,63.75 " />
</g>
</g>
</svg>
</div>
</a>
</div>
</div>
</li>
</ul>
</section>
<section id="footer">
<p>&copy; 2021 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
<p>
Documentation built with
<a href="https://gohugo.io/" target="_blank">Hugo</a>
using the
<a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
</p>
<div class="eclipse-logo">
<a href="https://www.eclipse.org" target="_blank">
<img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
</a>
</div>
</section>
</div>
</nav>
<section id="body">
<div id="overlay"></div>
<div class="padding highlightable">
<div>
<div id="top-bar">
<div id="top-github-link">
<a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/concepts/device-provisioning/index.md" target="blank">
<i class="fas fa-code-branch"></i>
<span id="top-github-link-text">Edit this page</span>
</a>
</div>
<div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
<span id="sidebar-toggle-span">
<a href="#" id="sidebar-toggle" data-sidebar-toggle="">
<i class="fas fa-bars"></i>
</a>
</span>
<span id="toc-menu"><i class="fas fa-list-alt"></i></span>
<span class="links">
<a href='/hono/docs/1.8/'>Documentation</a> > <a href='/hono/docs/1.8/concepts/'>Concepts</a> > Device Provisioning
</span>
</div>
<div class="progress">
<div class="wrapper">
<nav id="TableOfContents">
<ul>
<li><a href="#manual-device-provisioning">Manual Device Provisioning</a></li>
<li><a href="#automatic-device-provisioning">Automatic Device Provisioning</a>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
</ul>
</li>
<li><a href="#automatic-gateway-provisioning">Automatic Gateway Provisioning</a></li>
<li><a href="#gateway-based-auto-provisioning">Gateway based Auto-Provisioning</a>
<ul>
<li></li>
</ul>
</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="head-tags">
</div>
<div id="body-inner">
<h1>
Device Provisioning
</h1>
<p>This page describes how devices are provisioned in Hono, i.e. how their digital representation is generated.
For each device, registration information is stored that defines a device identity.
Each device belongs to exactly one tenant. Each device must have at least one set of credentials that are used to authenticate to Hono.</p>
<p>To get an understanding of what is meant by the terms <em>tenant</em>, <em>device registration</em> and <em>credentials</em>,
it is recommended to read the <a href="/hono/docs/1.8/concepts/device-identity/">Device Identity</a> page first.</p>
<p>So in order to use a device with Hono, it has to be provisioned.
This means that registration information and at least one credential record must be stored in the device registry.</p>
<p>There are different ways to perform device provisioning.</p>
<h2 id="manual-device-provisioning">Manual Device Provisioning</h2>
<p>Devices can be provisioned using Hono&rsquo;s <a href="/hono/docs/1.8/api/management/">Device Registry Management API</a> via HTTP.</p>
<p>If the desired <em>tenant</em> does not yet exist, it must be created first.
How to do this is described in the tenants section of the <a href="/hono/docs/1.8/api/management/">Device Registry Management API</a>.</p>
<p>The actual Device Provisioning is then performed by adding devices as described under devices section of the
<a href="/hono/docs/1.8/api/management/">Device Registry Management API</a>.
This creates both a device identity and an (empty) credentials record. The last step is to add real credentials
as described in the credentials section of the <a href="/hono/docs/1.8/api/management/">Device Registry Management API</a>.</p>
<h2 id="automatic-device-provisioning">Automatic Device Provisioning</h2>
<p>The term <em>Auto-Provisioning</em> denotes a feature of Hono where the Device Registry automatically generates
the credentials and registration information for a device the first time it connects.
Auto-Provisioning is supported by Hono&rsquo;s protocol adapters for devices that authenticate with client certificates or for
devices that are connected via a gateway.</p>
<h3 id="prerequisites">Prerequisites</h3>
<p>Hono does not require a specific Device Registry implementation, but only specifies a set of APIs that must be provided by a compatible implementation.
Since the main part of the <em>Auto-Provisioning</em> has to be done by the Device Registry, the used implementation must explicitly support this feature.</p>
<h4 id="client-certificate-based-auto-provisioning">Client certificate based Auto-Provisioning</h4>
<p>This feature can be enabled by supplying a certificate authority (CA) for a certain tenant:</p>
<h5 id="step-1-configure-the-tenant">Step 1: Configure the Tenant</h5>
<p>The CA to be used by the devices needs to be configured. The following tasks must be performed:</p>
<ol>
<li>Create tenant</li>
<li>Configure the trusted CA for the tenant</li>
<li>Enable the feature for the CA</li>
</ol>
<p>If the Device Registry implementation provides the <a href="/hono/docs/1.8/api/management/">Management API</a>, this could be done in a single step.
For details refer to the <a href="/hono/docs/1.8/api/tenant/#trusted-ca-format">Tenant API specification</a>.</p>
<p>The Device Registry generates a unique device identifier during auto-provisioning. If <em>auto-provisioning-device-id-template</em>
is configured in the corresponding tenant&rsquo;s CA entry, then the device registry generates the device identifier based on
the configured template. If not configured, then a random unique device identifier is generated. Refer to the
<a href="/hono/docs/1.8/api/management/#tenants/createTenant">Device Registry Management API</a> for more details on how to
configure a tenant&rsquo;s trusted CA authority for that.</p>
<h5 id="step-2-connect-an-unregistered-device-to-hono">Step 2: Connect an unregistered Device to Hono</h5>
<figure>
<img src="auto-provisioning.svg"
alt="A unregistered device connects to a protocol adapter which uses the Credentials API to provision it"/> <figcaption>
<h4>Automatic Provisioning of a Device</h4>
</figcaption>
</figure>
<p>Hono&rsquo;s protocol adapters query the APIs of the Device Registry during <a href="/hono/docs/1.8/concepts/device-identity/">Device Authentication</a>.
First, the Tenant API is queried. If the Tenant configuration returned contains the CA used for authentication and the
feature is switched on for this CA, the protocol adapter assumes that automatic provisioning must be performed.
It puts the device&rsquo;s certificate into the query to enable the device registry to do the provisioning.</p>
<p>If the Device Registry does not find any credentials for the device, it takes the information from the client
certificate to create both credentials and device registration data for it.</p>
<p>The Device Registry is expected to perform the following steps:</p>
<ol>
<li>Generate a unique device-id</li>
<li>Create device</li>
<li>Create credentials</li>
<li>Optional: Provision device in external systems</li>
</ol>
<p>The newly created credentials are returned to the protocol adapter in the response as if they had been present before.</p>
<p>The following query of the Device Registration API returns the previously generated registration data.</p>
<p>The provisioning is, of course, a one-time action, on subsequent connections the APIs simply return the stored records.</p>
<h2 id="automatic-gateway-provisioning">Automatic Gateway Provisioning</h2>
<p>Auto-provisioning of gateways involves the same steps as
<a href="/hono/docs/1.8/concepts/device-provisioning/#automatic-devicegateway-provisioning">Automatic Device Provisioning</a>.
An extra attribute namely <em>auto-provision-as-gateway</em> is needed in the tenant&rsquo;s trusted CA configuration to enable
auto-provisioning of gateways. If this attribute is set to <code>true</code> then the device registry provisions any unregistered
devices that authenticate with a client certificate issued by this tenant&rsquo;s trusted CA as gateways, provided that the
attribute <em>auto-provisioning-enabled</em> is also set to <code>true</code>. Refer to the
<a href="/hono/docs/1.8/api/management/#tenants/createTenant">Device Registry Management API</a>
for more details on the tenant&rsquo;s trusted CA configuration.</p>
<h2 id="gateway-based-auto-provisioning">Gateway based Auto-Provisioning</h2>
<p>It refers to auto-provisioning of edge devices that are connected via gateways.
Enabling gateway based auto-provisioning requires configuration of the gateway device:</p>
<h5 id="step-1-configure-the-gateway-device">Step 1: Configure the Gateway Device</h5>
<p>The gateway device must have the corresponding authority (<code>auto-provisioning-enabled</code>) set.
Refer to the <a href="/hono/docs/1.8/api/management/">Management API</a> for creating or updating a
corresponding device.</p>
<h5 id="step-2-connect-an-unregistered-device-via-gateway-to-hono">Step 2: Connect an unregistered Device via Gateway to Hono</h5>
<figure>
<img src="auto-provisioning-gateway.svg"
alt="A unregistered device connects to a gateway which uses the Device Registration API to provision it"/> <figcaption>
<h4>Automatic Provisioning of a Device via gateway</h4>
</figcaption>
</figure>
<p>The yet unregistered edge device sends telemetry data via a gateway (1) to a protocol adapter which then checks if the
edge device is already registered by calling the <em>assert</em> operation of Device Registration API (2). If the device
registration service finds that the device isn&rsquo;t registered yet and the gateway has the <code>auto-provisioning-enabled</code>
authority set, it creates the edge device (3).</p>
<p>Subsequently, after it made sure that it hasn&rsquo;t already done so, it sends an
<a href="/hono/docs/1.8/api/event/#device-provisioning-notification">Device Provisioning Notification</a> with the <code>hono_registration_status</code> application
property being set to <code>NEW</code> to the AMQP network (4). Once the event has been accepted by the peer (5), the registration
service marks the event as delivered (6). The persistent flag guarantees that the Device Provisioning Notification is sent
AT_LEAST_ONCE.
(<em>NB</em>: applications may receive duplicates of the Device Provisioning Notification!).</p>
<p>Finally, the device registration service returns the registration information to the protocol adapter (7) which then
forwards the telemetry data to the AMQP network (8).</p>
<footer class="footline">
</footer>
</div>
</div>
<div id="navigation">
</div>
</section>
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
</div>
<script src="/hono/docs/js/clipboard.min.js?1626138717"></script>
<script src="/hono/docs/js/perfect-scrollbar.min.js?1626138717"></script>
<script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1626138717"></script>
<script src="/hono/docs/js/jquery.sticky.js?1626138717"></script>
<script src="/hono/docs/js/featherlight.min.js?1626138717"></script>
<script src="/hono/docs/js/highlight.pack.js?1626138717"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/hono/docs/js/modernizr.custom-3.6.0.js?1626138717"></script>
<script src="/hono/docs/js/learn.js?1626138717"></script>
<script src="/hono/docs/js/hugo-learn.js?1626138717"></script>
<link href="/hono/docs/mermaid/mermaid.css?1626138717" rel="stylesheet" />
<script src="/hono/docs/mermaid/mermaid.js?1626138717"></script>
<script>
mermaid.initialize({ startOnLoad: true });
</script>
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5WLCZXC');
</script>
<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
</body>
</html>