blob: 179fe50d5ab9e3b84212ddbad44b05cf99eb1d7a [file] [log] [blame]
<!DOCTYPE html>
<html lang="1.2" 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.2</title>
<link href="/hono/docs/css/nucleus.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/fontawesome-all.min.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/hybrid.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/featherlight.min.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/perfect-scrollbar.min.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/auto-complete.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/atom-one-dark-reasonable.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/theme.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/hugo-theme.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/theme-hono.css?1626138731" rel="stylesheet">
<link href="/hono/docs/css/hono.css?1626138731" rel="stylesheet">
<script src="/hono/docs/js/jquery-3.3.1.min.js?1626138731"></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.2">
<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.2" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.2/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.2/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?1626138731"></script>
<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1626138731"></script>
<script type="text/javascript">
var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.2";
</script>
<script type="text/javascript" src="/hono/docs/js/search.js?1626138731"></script>
</div>
<div class="highlightable">
<ul class="topics">
<li data-nav-id="/hono/docs/1.2/concepts/" title="Concepts" class="dd-item
parent
">
<a href="/hono/docs/1.2/concepts/">
<i class="far fa-lightbulb"></i> Concepts
</a>
<ul>
<li data-nav-id="/hono/docs/1.2/concepts/device-identity/" title="Device Identity" class="dd-item ">
<a href="/hono/docs/1.2/concepts/device-identity/">
Device Identity
</a>
</li>
<li data-nav-id="/hono/docs/1.2/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
<a href="/hono/docs/1.2/concepts/tenancy/">
Multi-Tenancy
</a>
</li>
<li data-nav-id="/hono/docs/1.2/concepts/device-provisioning/" title="Device Provisioning" class="dd-item active">
<a href="/hono/docs/1.2/concepts/device-provisioning/">
Device Provisioning
</a>
</li>
<li data-nav-id="/hono/docs/1.2/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
<a href="/hono/docs/1.2/concepts/connecting-devices/">
Connecting Devices
</a>
</li>
<li data-nav-id="/hono/docs/1.2/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
<a href="/hono/docs/1.2/concepts/device-notifications/">
Device Notifications
</a>
</li>
<li data-nav-id="/hono/docs/1.2/concepts/command-and-control/" title="Command &amp; Control" class="dd-item ">
<a href="/hono/docs/1.2/concepts/command-and-control/">
Command &amp; Control
</a>
</li>
<li data-nav-id="/hono/docs/1.2/concepts/resource-limits/" title="Resource limits" class="dd-item ">
<a href="/hono/docs/1.2/concepts/resource-limits/">
Resource limits
</a>
</li>
<li data-nav-id="/hono/docs/1.2/concepts/connection-events/" title="Connection Events" class="dd-item ">
<a href="/hono/docs/1.2/concepts/connection-events/">
Connection Events
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/" title="User Guide" class="dd-item
">
<a href="/hono/docs/1.2/user-guide/">
<i class="fas fa-book-reader"></i> User Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.2/user-guide/device-registry/" title="Device Registry" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/device-registry/">
Device Registry
</a>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/http-adapter/">
HTTP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/mqtt-adapter/">
MQTT Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/amqp-adapter/">
AMQP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/coap-adapter/">
CoAP Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/kura-adapter/">
Kura Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/sigfox-adapter/">
Sigfox Adapter
</a>
</li>
<li data-nav-id="/hono/docs/1.2/user-guide/jmeter_load_tests/" title="Load Tests with JMeter" class="dd-item ">
<a href="/hono/docs/1.2/user-guide/jmeter_load_tests/">
Load Tests with JMeter
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/" title="Admin Guide" class="dd-item
">
<a href="/hono/docs/1.2/admin-guide/">
<i class="fas fa-sliders-h"></i> Admin Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.2/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/common-config/">
Common Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/auth-server-config/">
Auth Server Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/device-registry-config/" title="Device Registry Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/device-registry-config/">
Device Registry Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/device-connection-config/">
Device Connection Service Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/http-adapter-config/">
HTTP Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/amqp-adapter-config/">
AMQP Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/mqtt-adapter-config/">
MQTT Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/kura-adapter-config/">
Kura Adapter Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/hono-client-configuration/">
Hono Client Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/amqp-network-config/">
AMQP 1.0 Messaging Network Configuration
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/secure_communication/">
Secure Communication
</a>
</li>
<li data-nav-id="/hono/docs/1.2/admin-guide/monitoring-tracing-config/" title="Monitoring &amp; Tracing" class="dd-item ">
<a href="/hono/docs/1.2/admin-guide/monitoring-tracing-config/">
Monitoring &amp; Tracing
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.2/dev-guide/" title="Developer Guide" class="dd-item
">
<a href="/hono/docs/1.2/dev-guide/">
<i class="fas fa-tools"></i> Developer Guide
</a>
<ul>
<li data-nav-id="/hono/docs/1.2/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
<a href="/hono/docs/1.2/dev-guide/building_hono/">
Building from Source
</a>
</li>
<li data-nav-id="/hono/docs/1.2/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
<a href="/hono/docs/1.2/dev-guide/amqp_adapter_client/">
AMQP Adapter Client for Java
</a>
</li>
<li data-nav-id="/hono/docs/1.2/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
<a href="/hono/docs/1.2/dev-guide/java_client_consumer/">
Consuming Messages from Java
</a>
</li>
<li data-nav-id="/hono/docs/1.2/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
<a href="/hono/docs/1.2/dev-guide/custom_http_adapter/">
Implement a Custom Hono HTTP Protocol Adapter
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.2/api/" title="API" class="dd-item
">
<a href="/hono/docs/1.2/api/">
&nbsp;<i class='fas fa-plug'></i>&nbsp;API
</a>
<ul>
<li data-nav-id="/hono/docs/1.2/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/telemetry/">
Telemetry API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/event/" title="Event API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/event/">
Event API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/command-and-control/" title="Command &amp; Control API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/command-and-control/">
Command &amp; Control API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/tenant/" title="Tenant API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/tenant/">
Tenant API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/device-connection/">
Device Connection API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/device-registration/">
Device Registration API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/credentials/" title="Credentials API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/credentials/">
Credentials API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/authentication/" title="Authentication API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/authentication/">
Authentication API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/management/" title="Device Registry Management API Specification" class="dd-item ">
<a href="/hono/docs/1.2/api/management/">
Device Registry Management API
</a>
</li>
<li data-nav-id="/hono/docs/1.2/api/metrics/" title="Metrics" class="dd-item ">
<a href="/hono/docs/1.2/api/metrics/">
Metrics
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.2/deployment/" title="Deployment" class="dd-item
">
<a href="/hono/docs/1.2/deployment/">
<i class="fas fa-shipping-fast"></i> Deployment
</a>
<ul>
<li data-nav-id="/hono/docs/1.2/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
<a href="/hono/docs/1.2/deployment/helm-based-deployment/">
Helm based Deployment
</a>
</li>
<li data-nav-id="/hono/docs/1.2/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
<a href="/hono/docs/1.2/deployment/openshift/">
OpenShift / OKD
</a>
</li>
<li data-nav-id="/hono/docs/1.2/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
<a href="/hono/docs/1.2/deployment/create-kubernetes-cluster/">
Setting up a Kubernetes Cluster
</a>
</li>
<li data-nav-id="/hono/docs/1.2/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
<a href="/hono/docs/1.2/deployment/resource-limitation/">
Limiting Resource Usage
</a>
</li>
</ul>
</li>
<li data-nav-id="/hono/docs/1.2/architecture/" title="Architecture" class="dd-item
">
<a href="/hono/docs/1.2/architecture/">
<i class="fas fa-landmark"></i> Architecture
</a>
<ul>
<li data-nav-id="/hono/docs/1.2/architecture/component-view/" title="Component View" class="dd-item ">
<a href="/hono/docs/1.2/architecture/component-view/">
Component View
</a>
</li>
<li data-nav-id="/hono/docs/1.2/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
<a href="/hono/docs/1.2/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/">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/" selected>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="old-version-hint">
<p>This page refers to version <em>1.2</em>.
You might want to use the <a href="https://www.eclipse.org/hono/docs/">current stable</a> version.
</p>
</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.2/'>Documentation</a> > <a href='/hono/docs/1.2/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>
<li><a href="#sequence-of-steps-in-auto-provisioning">Sequence of steps in Auto-Provisioning</a></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.2/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.2/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 <a href="/hono/docs/1.2/user-guide/device-registry/#add-a-tenant">User Guide</a>
of the Device Registry.</p>
<p>The actual Device Provisioning is then performed as described under
<a href="/hono/docs/1.2/user-guide/device-registry/#register-device">Register Device</a>.
This creates both a device identity and an (empty) credentials record. The last step is to add real credentials
as described in <a href="/hono/docs/1.2/user-guide/device-registry/#update-credentials-for-a-device">Update Credentials for a Device</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.
The feature can be enabled per certificate authority (CA) at the tenant.</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>
<h3 id="sequence-of-steps-in-auto-provisioning">Sequence of steps in Auto-Provisioning</h3>
<p><em>Auto-Provisioning</em> consists of two steps.</p>
<h4 id="step-1-configure-the-tenant">Step 1: Configure the Tenant</h4>
<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.2/api/management/">Management API</a>, this could be done in a single step.
For details refer to the <a href="/hono/docs/1.2/api/tenant/#trusted-ca-format">Tenant API specification</a>.</p>
<h4 id="step-2-connect-an-unregistered-device-to-hono">Step 2: Connect an unregistered Device to Hono</h4>
<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.2/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>
<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?1626138731"></script>
<script src="/hono/docs/js/perfect-scrollbar.min.js?1626138731"></script>
<script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1626138731"></script>
<script src="/hono/docs/js/jquery.sticky.js?1626138731"></script>
<script src="/hono/docs/js/featherlight.min.js?1626138731"></script>
<script src="/hono/docs/js/highlight.pack.js?1626138731"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="/hono/docs/js/modernizr.custom-3.6.0.js?1626138731"></script>
<script src="/hono/docs/js/learn.js?1626138731"></script>
<script src="/hono/docs/js/hugo-learn.js?1626138731"></script>
<link href="/hono/docs/mermaid/mermaid.css?1626138731" rel="stylesheet" />
<script src="/hono/docs/mermaid/mermaid.js?1626138731"></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>