<!DOCTYPE html>
  
  
  
  
   <html class="no-js"> 

  <head lang="en-us">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=10" />
    <title>Concepts - Eclipse hawkBit</title>
    <meta name="generator" content="Hugo 0.77.0" />

    
    <meta name="description" content="IoT. Update. Device.">
    
    <link rel="canonical" href="https://www.eclipse.org/hawkbit/concepts/">
    
    <meta name="author" content="The Eclipse hawkBit Project">
    

    <meta property="og:url" content="https://www.eclipse.org/hawkbit/concepts/">
    <meta property="og:title" content="Eclipse hawkBit">
    <meta property="og:image" content="https://www.eclipse.org/hawkbit/images/hawkbit_icon.png">
    <meta name="apple-mobile-web-app-title" content="Eclipse hawkBit">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

    

    <link rel="shortcut icon" type="image/x-icon" href="https://www.eclipse.org/hawkbit/images/favicon.ico">
    <link rel="icon" type="image/x-icon" href="https://www.eclipse.org/hawkbit/images/favicon.ico">

    <style>
      @font-face {
        font-family: 'Icon';
        src: url('https://www.eclipse.org/hawkbit/fonts/icon.eot');
        src: url('https://www.eclipse.org/hawkbit/fonts/icon.eot')
               format('embedded-opentype'),
             url('https://www.eclipse.org/hawkbit/fonts/icon.woff')
               format('woff'),
             url('https://www.eclipse.org/hawkbit/fonts/icon.ttf')
               format('truetype'),
             url('https://www.eclipse.org/hawkbit/fonts/icon.svg')
               format('svg');
        font-weight: normal;
        font-style: normal;
      }
    </style>

    <link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/application.css">
    <link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/temporary.css">
    <link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/palettes.css">
    <link rel="stylesheet" href="https://www.eclipse.org/hawkbit/stylesheets/highlight/highlight.css">

    
    
    
    <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Ubuntu:400,700|Ubuntu&#43;Mono">
    <style>
      body, input {
        font-family: 'Ubuntu', Helvetica, Arial, sans-serif;
      }
      pre, code {
        font-family: 'Ubuntu Mono', 'Courier New', 'Courier', monospace;
      }
    </style>

    
    <link rel="stylesheet" href="https://www.eclipse.org/hawkbit/css/hawkbit.css">
    
    <link rel="stylesheet" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
    
    <script src="https://www.eclipse.org/hawkbit/javascripts/modernizr.js"></script>
    <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>

    
    <link href="https://www.eclipse.org/hawkbit/concepts/index.xml" rel="alternate" type="application/rss+xml" title="Eclipse hawkBit" />
    <link href="https://www.eclipse.org/hawkbit/concepts/index.xml" rel="feed" type="application/rss+xml" title="Eclipse hawkBit" />
    

    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
  </head>
  <body class="palette-primary-deep-purple palette-accent-light-green">



  
  


<div class="backdrop">
	<div class="backdrop-paper"></div>
</div>

<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>

<header class="header">
	<nav aria-label="Header">
  <div class="bar default">
    <div class="button button-menu" role="button" aria-label="Menu">
      <label class="toggle-button icon icon-menu" for="toggle-drawer">
        <span></span>
      </label>
    </div>
    <div class="stretch">
      <div class="title">
        Concepts
      </div>
    </div>

    

    
    <div class="button button-github" role="button" aria-label="GitHub">
      <a href="https://github.com/eclipse/hawkbit" title="@eclipse/hawkbit on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
    </div>
    

    
    <div class="button button-github" role="button" aria-label="Gitter">
      <a href="https://gitter.im/eclipse/hawkbit" title="@eclipse/hawkbit on Gitter" target="_blank" class="toggle-button icon fab fa-gitter"></a>
    </div>
    

    
    <div class="button button-github" role="button" aria-label="Docker">
      <a href="https://hub.docker.com/u/hawkbit" title="hawkbit on Docker Hub" target="_blank" class="toggle-button icon fab fa-docker"></a>
    </div>
    
    
        
  </div>
  <div class="bar search">
    <div class="button button-close" role="button" aria-label="Close">
      <label class="toggle-button icon icon-back" for="toggle-search"></label>
    </div>
    <div class="stretch">
      <div class="field">
        <input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck>
      </div>
    </div>
    <div class="button button-reset" role="button" aria-label="Search">
      <button class="toggle-button icon icon-close" id="reset-search"></button>
    </div>
  </div>
</nav>
</header>

<main class="main">
	<div class="drawer">
		<nav aria-label="Navigation">
  <a href="https://www.eclipse.org/hawkbit/" class="project">
    <div class="banner">
      
        <div class="logo">
          <img src="https://www.eclipse.org/hawkbit/images/hawkbit_icon.png">
        </div>
      
      <div class="name">
        <strong>Eclipse hawkBit&trade; </strong>
        
          <br>
          eclipse/hawkbit
        
      </div>
    </div>
  </a>

  <div class="scrollable">
    <div class="wrapper">
      
        <ul class="repo">
          <li class="repo-download">
            <a href="https://hawkbit.eclipse.org" target="_blank" title="hawkBit Sandbox" data-action="sandbox">
              <i class="fas fa-desktop"></i> &nbsp; Sandbox
            </a>
          </li>
          <li class="repo-stars">
            <a href="https://github.com/eclipse/hawkbit/stargazers" target="_blank" title="Stargazers" data-action="star">
              <i class="icon icon-star"></i> Stars
              <span class="count">&ndash;</span>
            </a>
          </li>
        </ul>
        <hr>
      

      <div class="toc">
        
        <ul>
          




<li>
  
    



<a  title="What is hawkBit" href="/hawkbit/whatishawkbit/">
	
	What is hawkBit
</a>


  
</li>



<li>
  
    



<a  title="Getting started" href="/hawkbit/gettingstarted/">
	
	Getting started
</a>


  
</li>



<li>
  
    



<a  title="Guides" href="/hawkbit/guides/">
	
	Guides
</a>


  
</li>



<li>
  
    



<a  title="Features" href="/hawkbit/features/">
	
	Features
</a>


  
</li>



<li>
  
    



<a class="current" title="Concepts" href="/hawkbit/concepts/">
	
	Concepts
</a>


<ul id="scrollspy">
</ul>

  
</li>



<li>
  
    



<a  title="Architecture" href="/hawkbit/architecture/">
	
	Architecture
</a>


  
</li>



<li>
  
    



<a  title="Management UI" href="/hawkbit/ui/">
	
	Management UI
</a>


  
</li>



<li>
  
    



<a  title="APIs" href="/hawkbit/apis/">
	
	APIs
</a>


  
</li>



<li>
  
    



<a  title="Community" href="/hawkbit/community/">
	
	Community
</a>


  
</li>



<li>
  
    



<a  title="Release notes" href="/hawkbit/release-notes/">
	
	Release notes
</a>


  
</li>


        </ul>
        

        
        <hr>

        <ul>
          <li>
            <a href="https://gitter.im/eclipse/hawkbit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge" title="Chat on Gitter" target="_blank">
              <img src="https://badges.gitter.im/eclipse/hawkbit.svg" />
            </a>
          </li>
          <li>
            <a href="https://circleci.com/gh/eclipse/hawkbit" title="Circle CI Status" target="_blank">
              <img src="https://circleci.com/gh/eclipse/hawkbit.svg?style=shield" />
            </a>
          </li>
          <li>
            <a href="https://sonar.ops.bosch-iot-rollouts.com" title="SonarQube Status" target="_blank">
              <img src="https://sonar.ops.bosch-iot-rollouts.com/api/badges/gate?key=org.eclipse.hawkbit:hawkbit-parent" />
            </a>
          </li>
          <li>
            <a href="https://maven-badges.herokuapp.com/maven-central/org.eclipse.hawkbit/hawkbit-parent" title="Maven Central Status" target="_blank">
              <img src="https://maven-badges.herokuapp.com/maven-central/org.eclipse.hawkbit/hawkbit-parent/badge.svg" />
            </a>
          </li>
        </ul>
        
      </div>
    </div>
  </div>
</nav>

	</div>

	<article class="article">
		<div class="wrapper">
			<h1>Pages in Concepts</h1>

			
			<a href="https://www.eclipse.org/hawkbit/concepts/authentication/" title="Authentication">
				<h2>Authentication</h2>
			</a>

			<br>
			<p>A hawkBit update server can be accessed in four different ways:</p>

<ul>
<li><em>Direct Device Integration (DDI) API</em> by <strong>targets</strong>.</li>
<li><em>Management API</em> by 3rd party <strong>applications</strong>.</li>
<li><em>Device Management Federation (DMF) API</em> by 3rd party <strong>applications</strong> through AMQP.</li>
<li><em>Management UI</em> by <strong>users</strong>.</li>
</ul>
 <br><a href="https://www.eclipse.org/hawkbit/concepts/authentication/">[...]</a>

			<hr>
			
			<a href="https://www.eclipse.org/hawkbit/concepts/authorization/" title="Authorization">
				<h2>Authorization</h2>
			</a>

			<br>
			Authorization is handled separately for <em>Direct Device Integration (DDI) API</em> and <em>Device Management Federation (DMF) API</em> (where successful authentication includes full authorization) and <em>Management API</em> and <em>UI</em> which is based on Spring security <a href="https://github.com/eclipse/hawkbit/blob/master/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java">authorities</a>. <br><a href="https://www.eclipse.org/hawkbit/concepts/authorization/">[...]</a>

			<hr>
			
			<a href="https://www.eclipse.org/hawkbit/concepts/datamodel/" title="Data Model">
				<h2>Data Model</h2>
			</a>

			<br>
			The hawkBit data model was designed to have enough flexibility to define complex software structures (e.g. operating system, runtimes, apps, different kind of artifacts) on one side and simplicity compared to the capabilities of a full blown configuration management on the other. <br><a href="https://www.eclipse.org/hawkbit/concepts/datamodel/">[...]</a>

			<hr>
			
			<a href="https://www.eclipse.org/hawkbit/concepts/rollout-management/" title="Rollout Management">
				<h2>Rollout Management</h2>
			</a>

			<br>
			Software update operations in large scale IoT scenarios with hundreds of thousands of devices require special handling. <br><a href="https://www.eclipse.org/hawkbit/concepts/rollout-management/">[...]</a>

			<hr>
			
			<a href="https://www.eclipse.org/hawkbit/concepts/targetstate/" title="Target State Machine">
				<h2>Target State Machine</h2>
			</a>

			<br>
			A target has a current state which reflects the provisioning status of the device at this point in time. State changes are driven either by the update server by means of starting an update or by the controller on the provisioning target that gives feedback to the update server, e.g. &ldquo;I am here&rdquo;, &ldquo;I am working on a provisioning&rdquo;, &ldquo;I have finished a provisioning&rdquo;. <br><a href="https://www.eclipse.org/hawkbit/concepts/targetstate/">[...]</a>

			<hr>
			

			<aside class="copyright" role="note">
  <div class="logo">
    <a href="https://www.eclipse.org" target="_blank">
      <img src="/hawkbit/images/eclipse_foundation_logo.png" />
    </a>
  </div>
  <p class="notice">
    
    &copy; 2021 The Eclipse hawkBit Project &ndash;
    
    Documentation built with
    <a href="https://www.gohugo.io" target="_blank">Hugo</a>
    using the
    <a href="http://github.com/digitalcraftsman/hugo-material-docs" target="_blank">Material</a> theme.
  </p>
  <p class="quickLinks">
    <a href="http://www.eclipse.org/legal/privacy.php" target="_blank">
      &gt; Privacy Policy
    </a>
    <a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">
      &gt; Terms of Use
    </a>
    <a href="http://www.eclipse.org/legal/copyright.php" target="_blank">
      &gt; Copyright Agent
    </a>
    <a href="http://www.eclipse.org/legal" target="_blank">
      &gt; Legal
    </a>
    <a href="https://www.eclipse.org/org/documents/epl-v10.php" target="_blank">
      &gt; License
    </a>
  </p>
</aside>

		</div>
	</article>

	<div class="results" role="status" aria-live="polite">
		<div class="scrollable">
			<div class="wrapper">
				<div class="meta"></div>
				<div class="list"></div>
			</div>
		</div>
	</div>
</main>

    <script>
    
      var base_url = 'https:\/\/www.eclipse.org\/hawkbit\/';
      var repo_id  = 'eclipse\/hawkbit';
    
    </script>

    <script src="https://www.eclipse.org/hawkbit/javascripts/application.js"></script>
    

    <script>
      /* Add headers to scrollspy */
      var headers   = document.getElementsByTagName("h2");
      var scrollspy = document.getElementById('scrollspy');

      if(scrollspy) {
          if(headers.length > 0) {
              for(var i = 0; i < headers.length; i++) {
                  var li = document.createElement("li");
                  li.setAttribute("class", "anchor");

                  var a  = document.createElement("a");
                  if(!headers[i].id)
                      a.setAttribute("href", headers[i].parentNode.href);
                  else
                      a.setAttribute("href", "#" + headers[i].id);
                  a.setAttribute("title", headers[i].innerHTML);
                  a.innerHTML = headers[i].innerHTML;

                  li.appendChild(a);
                  scrollspy.appendChild(li);
              }
          } else {
              scrollspy.parentElement.removeChild(scrollspy)
          }


        /* Add permanent link next to the headers */
          var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");

        for(var i = 0; i < headers.length; i++) {
            var a = document.createElement("a");
            a.setAttribute("class", "headerlink");
            a.setAttribute("href", "#" + headers[i].id);
            a.setAttribute("title", "Permanent link");
            a.innerHTML = "#";
            headers[i].appendChild(a);
        }
      }
    </script>

    <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/highlight.min.js"></script>
    <script>hljs.initHighlightingOnLoad();</script>
  </body>
</html>
