<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Friedrich Weber &#8211; privacyID3A</title>
	<atom:link href="https://www.privacyidea.org/author/friedrich/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.privacyidea.org</link>
	<description>flexible, Open Source Multi Factor Authentication (2FA)</description>
	<lastBuildDate>Thu, 23 May 2019 10:13:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.privacyidea.org/wp-content/uploads/2016/06/cropped-only-logo-white-background-32x32.png</url>
	<title>Friedrich Weber &#8211; privacyID3A</title>
	<link>https://www.privacyidea.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>privacyIDEA 3.0.1 released</title>
		<link>https://www.privacyidea.org/privacyidea-3-0-1-released/</link>
		
		<dc:creator><![CDATA[Friedrich Weber]]></dc:creator>
		<pubDate>Thu, 23 May 2019 10:13:14 +0000</pubDate>
				<category><![CDATA[release]]></category>
		<category><![CDATA[Whatsup]]></category>
		<category><![CDATA[Push Token]]></category>
		<guid isPermaLink="false">https://www.privacyidea.org/?p=1589</guid>

					<description><![CDATA[We are pleased to announce the release of privacyIDEA 3.0.1 today. In this release, we did not implement any new features, but instead focused on stability. Our last major release privacyIDEA 3.0 came with several big changes. Most notably, it introduced a new PUSH token class. With this token class, a login request sends a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter is-resized"><img fetchpriority="high" decoding="async" src="https://www.privacyidea.org/wp-content/uploads/2019/05/startup-593324_1280-1024x682.jpg" alt="" class="wp-image-1597" width="581" height="387" srcset="https://www.privacyidea.org/wp-content/uploads/2019/05/startup-593324_1280-1024x682.jpg 1024w, https://www.privacyidea.org/wp-content/uploads/2019/05/startup-593324_1280-300x200.jpg 300w, https://www.privacyidea.org/wp-content/uploads/2019/05/startup-593324_1280-768x512.jpg 768w, https://www.privacyidea.org/wp-content/uploads/2019/05/startup-593324_1280.jpg 1280w" sizes="(max-width: 581px) 100vw, 581px" /><figcaption>The privacyIDEA Push Token provides the first full open source push implementation for easy authentication.</figcaption></figure></div>



<p>We are pleased to announce the release of privacyIDEA 3.0.1 today. In this release, we did not implement any new features, but instead focused on stability.</p>



<p>Our last major release privacyIDEA 3.0 <a href="https://www.privacyidea.org/privacyidea-3-0-python-3-push-and-policies/">came with several big changes</a>. Most notably, it introduced a new PUSH token class. With this token class, a login request sends a push notification on the user&#8217;s smartphone that can be accepted or declined. You can <a href="https://www.privacyidea.org/testing-privacyidea-push-token/">read more about the PUSH token here.</a> Thanks to a lot of feedback from the community, we were able to fix several issues with our initial implementation:</p>



<ul class="wp-block-list"><li>Add logic checking to setup of PUSH token (#1592)</li><li>Remove double enrollment notification of PUSH token in WebUI (#1598)</li><li>Fix to allow spaces in Firebase configuration (#1599)</li><li>Add support for iOS Firebase configuration (#1608)</li><li>Fix to allow PUSH token enrollment, even with Label-policy (#1589)</li><li>Fix to mark PUSH token challenge answered in the database (#1584)</li></ul>



<p>privacyIDEA 3.0.1 also comes with usability improvements on the frontend side:</p>



<ul class="wp-block-list"><li>Beautify the vertical alignment in the Web UI top menu (#1559)</li><li>Fix user cache configuration read &#8211; defaults to 0 (#1596)</li><li>Remove links in audit log for normal users (#1497)</li><li>Fix placeholder in realm dropdown in login dialog (#1498)</li><li>Allow the usage if &#8220;browserLanguage&#8221; in custom templates (#1620)</li><li>Open all accordions when searching for policy action (#1558)</li><li>Fix to hide support links also in menu (#1626)</li></ul>



<p>Finally, we corrected some inconsistencies and bugs in the backend, and improved on the compatibility with Python 3:</p>



<ul class="wp-block-list"><li>Fix the validity period of the registration token (#1587)</li><li>Check UI rights for user resolvers (#1496)</li><li>Fix enckey creation in Python 3 (#1594)</li></ul>



<p>privacyIDEA 3.0.1 is available via the Python package index, and can be installed on Ubuntu 16.04 and 18.04 using our community repositories. Detailed installation instructions can be found <a href="https://privacyidea.readthedocs.io/en/latest/installation/index.html">in our documentation</a>. Before upgrading your existing installation, be sure to read our <a href="https://github.com/privacyidea/privacyidea/blob/branch-3.0/READ_BEFORE_UPDATE.md">update notes</a>.</p>



<p>If you have any questions or suggestions, you are welcome to join our <a href="https://community.privacyidea.org/">community forum</a>. In case you require enterprise support, we refer to the <a href="https://netknights.it/en/produkte/privacyidea/">privacyIDEA Enterprise Edition</a> offered by NetKnights GmbH.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Is it really faster? Measuring the performance of authentication requests</title>
		<link>https://www.privacyidea.org/measuring-the-performance-of-authentication-requests/</link>
		
		<dc:creator><![CDATA[Friedrich Weber]]></dc:creator>
		<pubDate>Wed, 31 May 2017 10:11:04 +0000</pubDate>
				<category><![CDATA[release]]></category>
		<category><![CDATA[Whatsup]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Performance]]></category>
		<guid isPermaLink="false">https://www.privacyidea.org/?p=1214</guid>

					<description><![CDATA[Some days ago, we released the new version 2.19 of the privacyIDEA authentication system. As explained in the release notes, we worked on improving the performance of authentication requests and managed to reduce the time needed to handle one authentication request by up to 71%! If such claims make you suspicious, we totally understand your [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.privacyidea.org/wp-content/uploads/2017/05/group-of-people-1645356_1280.jpg"><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-1215" src="https://www.privacyidea.org/wp-content/uploads/2017/05/group-of-people-1645356_1280-300x200.jpg" alt="" width="300" height="200" srcset="https://www.privacyidea.org/wp-content/uploads/2017/05/group-of-people-1645356_1280-300x200.jpg 300w, https://www.privacyidea.org/wp-content/uploads/2017/05/group-of-people-1645356_1280-768x512.jpg 768w, https://www.privacyidea.org/wp-content/uploads/2017/05/group-of-people-1645356_1280-1024x682.jpg 1024w, https://www.privacyidea.org/wp-content/uploads/2017/05/group-of-people-1645356_1280.jpg 1280w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Some days ago, we released the <a href="https://www.privacyidea.org/privacyidea-2-19-u2f-secure-smartphone-apps/">new version 2.19</a> of the privacyIDEA authentication system. As explained in the release notes, we worked on improving the performance of authentication requests and managed to reduce the time needed to handle one authentication request by up to 71%! If such claims make you suspicious, we totally understand your concerns. This is why we will explain our benchmark approach in this blog post, so you can see for yourself where our numbers come from.</p>
<p>The first question we asked ourselves was: What exactly do we want to find out? As we worked a lot on optimizing the LDAP resolver, we first wanted to know if privacyIDEA 2.19 by itself processes authentication requests faster than privacyIDEA 2.18.1. The next question was whether performance can be further improved by enabling the new user cache feature of privacyIDEA 2.19. Here, we wanted to differentiate between a worst-case scenario with an empty cache and a best-case scenario with an already-populated cache. For each scenario, we wanted to get an idea of the time that privacyIDEA needs to handle an incoming authentication request. Having cleared our objective, the next step was creating a suitable lab environment that resembles the real world as closely as possible to run our benchmarks in.</p>
<h2>Our lab environment</h2>
<p>We created a lab environment as follows. First, we set up an <a href="https://www.univention.com/products/ucs/">Univention Corporate Server</a> and added 1000 users to its directory, which we simply called <code>user000</code> to <code>user999</code>, as well as a privacyIDEA service account. In the same network, we prepared two Ubuntu 16.04 virtual machines and installed privacyIDEA 2.18.1 on the first and privacyIDEA 2.19-dev5 on the second machine. On both instances, we added a realm with a LDAP resolver connecting to the Univention Corporate Server via LDAPS.</p>
<p>In order to keep our environment as close to the real world as possible, we would need to enroll HOTP or TOTP tokens for our 1000 users. However, we ultimately decided against it. For one, we suspected that the time spent calculating and checking the next OTP value on the server is relatively small in comparison to the time spent communicating with the LDAP server. Enrolling real OTP tokens would also require us to keep track of secrets and counter values on our benchmark client, which would complicate our setup a lot. To keep things simple, we instead decided to enroll one <a href="http://privacyidea.readthedocs.io/en/latest/configuration/tokens/spass.html">simple password (SPASS)</a> token for each user.</p>
<h2>Our benchmarking approach</h2>
<p>Now, we had set up two privacyIDEA instances with 1000 tokens. The next question was: How exactly do we now measure the performance of one authentication request? We decided to settle on the following approach: One benchmark consists of 2000 successful authentication requests, performed one after another for the users <code>user000</code> to <code>user999</code>. This means that each user is authenticated twice during one benchmark. For each authentication request, we measured the time from sending the request until receiving the response using a simple benchmarking script in Python based on <a href="http://docs.python-requests.org/en/master/">python-requests</a>. We copied the script to the virtual machines and performed all authentication requests against <code>https://localhost</code> in order to exclude the network delay from our measurements. Running the script then produces 2000 measurements of response time, of which we computed the median response time.</p>
<p>We decided to measure the response times for the following scenarios:</p>
<ul>
<li>Scenario #1: Authentication against privacyIDEA 2.18.1</li>
<li>Scenario #2: Authentication against privacyIDEA 2.19, with the user cache feature disabled</li>
<li>Scenario #3: Authentication against privacyIDEA 2.19, with the user cache enabled and initially empty</li>
<li>Scenario #4: Authentication against privacyIDEA 2.19, with an already-populated user cache. This means<br />
that the user cache contains valid 1000 entries, one for each user from <code>user000</code> to<br />
<code>user999</code>.</li>
</ul>
<p>The scenarios 2, 3 and 4 were carried out on the privacyIDEA 2.19 machine. For scenarios 3 and 4, we enabled the user cache with a timeout of one day (corresponding to 86400 seconds).</p>
<h2>Our results</h2>
<p>Now, we had everything in place to start our benchmarks! In total, running the benchmark for all four scenarios took roughly one hour and we obtained the following results.</p>
<table>
<tbody>
<tr>
<th>scenario#</th>
<th>description</th>
<th>median response time</th>
</tr>
<tr>
<td>#1</td>
<td>privacyIDEA 2.18.1</td>
<td>716ms</td>
</tr>
<tr>
<td>#2</td>
<td>privacyIDEA 2.19, disabled user cache</td>
<td>306ms</td>
</tr>
<tr>
<td>#3</td>
<td>privacyIDEA 2.19, enabled but initially empty user cache</td>
<td>268ms</td>
</tr>
<tr>
<td>#4</td>
<td>privacyIDEA 2.19, enabled and populated user cache</td>
<td>203ms</td>
</tr>
</tbody>
</table>
<p>Interesting! According to our measurements, an update to privacyIDEA 2.19 alone seems to reduce the median response time by roughly 57% (Scenario #2), even without enabling the user cache. This speedup can probably be attributed to some performance improvements in the LDAP resolver (see issues <a href="https://github.com/privacyidea/privacyidea/issues/655">655</a> and <a href="https://github.com/privacyidea/privacyidea/issues/664">664</a>).</p>
<p>Furthermore, if the user cache is enabled and fully populated (Scenario #4), the median response time is reduced by another 33%. In comparison to privacyIDEA 2.18.1, this corresponds to a reduction by 71%. Of course, this models a best-case scenario in which the LDAP server does not need to be queried any more at all. This may not be the case in the real world, e.g. if <a href="http://privacyidea.readthedocs.io/en/latest/policies/authentication.html#otppin">an otppin=userstore policy</a> is enabled.</p>
<p>Scenario #3 is quite interesting, as the user cache is initially empty and is subsequently populated during the first 1000 authentication requests. For the second round of 1000 authentications, privacyIDEA can rely on the user cache instead of querying the LDAP server. We can also observe this if we plot our measurements:</p>
<p><a href="https://www.privacyidea.org/wp-content/uploads/2017/05/run1-pi2.19-usercache.png"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1217" src="https://www.privacyidea.org/wp-content/uploads/2017/05/run1-pi2.19-usercache-300x225.png" alt="" width="300" height="225" srcset="https://www.privacyidea.org/wp-content/uploads/2017/05/run1-pi2.19-usercache-300x225.png 300w, https://www.privacyidea.org/wp-content/uploads/2017/05/run1-pi2.19-usercache.png 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>The horizontal axis denotes our measurements and the vertical axis gives the median response time in milliseconds. We can observe that the median response time drops dramatically after the thousandth measurement, from which we can conclude that the user cache does have a measurable positive impact on the performance of authentication requests.</p>
<p>Of course, our benchmark is not perfect and leaves room for improvement due to multiple reasons. Firstly, the measurements also include the round-trip time between LDAP server and privacyIDEA instance, which significantly depends on the network setup. Secondly, we have only enrolled SPASS tokens and no real OTP tokens. Thirdly, we have not performed any concurrent requests and cannot, for example, say anything about the maximum number of authentication requests per second. Finally, two authentication requests by the same user are several minutes apart. If the same user sends two authentication requests during the timespan configured by the <em>cache timeout</em> option of the LDAP resolver (which defaults to 2 minutes), privacyIDEA queries an in-memory cache, which may be even faster than the query to the local database performed by the user cache.</p>
<p>However, we believe that our benchmark shows that privacyIDEA 2.19 improves the performance of authentication requests quite significantly even without the user cache. Additionally, enabling the user cache may bring significant performance improvements in case a large number of users are expected to send authentication requests over a large timespan. Finally, we noticed that the LDAP connection in our test setup is quite fast (a LDAP search takes just unter 30 milliseconds), so the user cache may provide an even better speedup in case of slower LDAP servers or connections. You are welcome to try it out for yourself! If you have any further questions, pleask ask them on our <a href="https://community.privacyidea.org/">community site</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
