<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva Documentation &#x2013; Manage Archiva Users</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
      <script type="text/javascript" src="../js/apache-maven-fluido-1.6.min.js"></script>
      <!-- Google Analytics -->
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-140879-5']);
      _gaq.push(['_trackPageview']);
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="../../../" id="bannerLeft"><img src="../../../images/archiva.png"  alt="Apache Archiva"/></a></div>
        <div class="pull-right"><a href="http://www.apache.org/" id="bannerRight"><img src="https://www.apache.org/images/asf_logo_wide_2016.png"  alt="Apache Software Foundation"/></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li class=""><a href="http://www.apache.org/" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Apache Archiva">Apache Archiva</a><span class="divider">/</span></li>
      <li class=""><a href="../../../index.html" title="Apache Archiva">Apache Archiva</a><span class="divider">/</span></li>
    <li class="active ">Manage Archiva Users</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2018-11-04</li>
          <li id="projectVersion" class="pull-right">Version: 3.0.0-SNAPSHOT</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Introduction</li>
    <li><a href="../quick-start.html" title="Quick Start"><span class="none"></span>Quick Start</a>  </li>
    <li><a href="../tour/index.html" title="Feature Tour"><span class="none"></span>Feature Tour</a>  </li>
    <li><a href="../release-notes.html" title="Release Notes"><span class="none"></span>Release Notes</a>  </li>
    <li><a href="../../../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
          <li class="nav-header">Users Guide</li>
    <li><a href="../userguide/browsing.html" title="Browsing"><span class="none"></span>Browsing</a>  </li>
    <li><a href="../userguide/searching.html" title="Searching"><span class="none"></span>Searching</a>  </li>
    <li><a href="../userguide/delete-artifact.html" title="Deleting an Artifact"><span class="none"></span>Deleting an Artifact</a>  </li>
    <li><a href="../userguide/using-repository.html" title="Using as a repository"><span class="none"></span>Using as a repository</a>  </li>
    <li><a href="../userguide/deploy.html" title="Deploying to repository"><span class="none"></span>Deploying to repository</a>  </li>
    <li><a href="../userguide/virtual-repositories.html" title="Configuring Virtual Repositories"><span class="none"></span>Configuring Virtual Repositories</a>  </li>
    <li><a href="../userguide/rss.html" title="Rss Feeds in Archiva"><span class="none"></span>Rss Feeds in Archiva</a>  </li>
    <li><a href="../userguide/querying-artifacts.html" title="Querying Artifacts"><span class="none"></span>Querying Artifacts</a>  </li>
          <li class="nav-header">Administrators Guide</li>
    <li><a href="../adminguide/installing.html" title="Installing Archiva"><span class="icon-chevron-right"></span>Installing Archiva</a>  </li>
    <li><a href="../adminguide/databases.html" title="Databases"><span class="none"></span>Databases</a>  </li>
    <li><a href="../adminguide/repositories-content-storage.html" title="Repositories Content Storage"><span class="none"></span>Repositories Content Storage</a>  </li>
    <li><a href="../adminguide/security.html" title="Security"><span class="icon-chevron-down"></span>Security</a>
      <ul class="nav nav-list">
    <li class="active"><a href="#"><span class="none"></span>Users</a>
  </li>
    <li><a href="../adminguide/roles.html" title="Roles"><span class="none"></span>Roles</a>  </li>
    <li><a href="../adminguide/customising-security.html" title="Customising"><span class="none"></span>Customising</a>  </li>
      </ul>
  </li>
    <li><a href="../adminguide/configuration.html" title="Archiva Configuration"><span class="icon-chevron-right"></span>Archiva Configuration</a>  </li>
    <li><a href="../adminguide/webservices/rest.html" title="REST Apis"><span class="none"></span>REST Apis</a>  </li>
    <li><a href="../adminguide/configuration-files.html" title="Configuration Files"><span class="none"></span>Configuration Files</a>  </li>
    <li><a href="../adminguide/system-status.html" title="System Status"><span class="none"></span>System Status</a>  </li>
    <li><a href="../adminguide/logging.html" title="Log Files"><span class="icon-chevron-right"></span>Log Files</a>  </li>
    <li><a href="../adminguide/reports.html" title="Reports"><span class="none"></span>Reports</a>  </li>
          <li class="nav-header">Customising Archiva</li>
    <li><a href="../customising/writing-consumer.html" title="Writing a Consumer Plugin"><span class="none"></span>Writing a Consumer Plugin</a>  </li>
          <li class="nav-header">More Information</li>
    <li><a href="http://cwiki.apache.org/confluence/display/ARCHIVA/Index" class="externalLink" title="Archiva Wiki"><span class="none"></span>Archiva Wiki</a>  </li>
          <li class="nav-header">ASF</li>
    <li><a href="http://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How Apache Works"><span class="none"></span>How Apache Works</a>  </li>
    <li><a href="http://www.apache.org/foundation/" class="externalLink" title="Foundation"><span class="none"></span>Foundation</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsoring Apache"><span class="none"></span>Sponsoring Apache</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
          <li class="nav-header">Project Documentation</li>
    <li><a href="../project-info.html" title="Project Information"><span class="icon-chevron-right"></span>Project Information</a>  </li>
  </ul>
<form id="search-form" action="https://www.google.com/search" method="get" >
      <input value="http://archiva.apache.org/docs/3.0.0-SNAPSHOT/" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript">asyncJs( 'https://cse.google.com/brand?form=search-form' )</script>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
                          <div id="twitter">
        <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="left" data-size="medium" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        </div>
                  <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<div class="section">
<h2><a name="Manage_Archiva_Users"></a>Manage Archiva Users</h2>
<p>Archiva uses the <a class="externalLink" href="http://archiva.apache.org/redback/"> Redback</a> security framework for managing repository security. When the server is first started, you will be prompted to create an administration user. This user will be given permission to administer all aspects of the system (as well as access to all of the repositories). This user can then be used to grant permissions to other users.</p>
<p>A guest user is also created by default, and given read access to the default repositories (<tt>internal</tt> and <tt>snapshots</tt>). Repositories with guest user access can be accessed without the use of a username and password (or without being logged in to the web interface).</p>
<div class="section">
<h3><a name="Manage_Users"></a>Manage Users</h3>
<p>The ui provide a screen to manage your users. You can:</p>
<ul>
<li>Delete user</li>
<li>Edit user</li>
<li>Block user</li>
<li>Force user to change password on next login</li></ul><img src="../images/users-list.png" alt="" /></div>
<div class="section">
<h3><a name="User_edition"></a>User edition</h3>
<div class="section">
<h4><a name="Screen_to_manage_a_user"></a>Screen to manage a user</h4><img src="../images/user-edit.png" alt="" /></div>
<div class="section">
<h4><a name="Screen_to_manage_user_roles"></a>Screen to manage user roles</h4><img src="../images/user-edit-roles.png" alt="" /></div></div>
<div class="section">
<h3><a name="User_registration"></a>User registration</h3>
<p><b>NOTE:</b> you can disable user registration using <a href="./ui-configuration.html"> UI configuration</a></p>
<div class="section">
<h4><a name="User_can_registrer_using_the_ui"></a>User can registrer using the ui</h4><img src="../images/user-register.png" alt="" /></div>
<div class="section">
<h4><a name="Fill_in_the_registration_form"></a>Fill in the registration form</h4><img src="../images/user-register-form.png" alt="" /></div></div></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<div class="row span12">Apache Archiva :: Documentation, Archiva :: Documentation, Apache, the Apache feather logo, and the Apache Archiva :: Documentation project logos are trademarks of The Apache Software Foundation.</div>
      <div class="row span12">
        <a href="http://archiva.apache.org/docs/3.0.0-SNAPSHOT/privacy-policy.html">Privacy Policy</a>
      </div>
        </div>
                          <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="https://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
    </div>
        </div>
    </footer>
    </body>
</html>