Changes for page XWiki Two-Factor Authentication
Last modified by Agnease on 2026/06/24 16:39
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 1 removed)
Details
- Page properties
-
- Content
-
... ... @@ -3,90 +3,76 @@ 3 3 #set ($discard = $xwiki.ssx.use('products.WebHome')) 4 4 5 5 #set ($mainCapabilityItems = [{ 6 -'title': 'Second verification step', 7 -'icon': 'key', 8 -'content': 'Add an additional verification screen after the normal XWiki username and password login.' 6 + 'title': 'Second verification step', 7 + 'icon': 'key', 8 + 'content': 'Add an additional verification screen after the normal XWiki username and password login.' 9 9 },{ 10 -'title': 'Authenticator app codes', 11 -'icon': 'mobile', 12 -'content': 'Let users verify access with time-based TOTP codes generated by authenticator applications.' 10 + 'title': 'Authenticator app codes', 11 + 'icon': 'mobile', 12 + 'content': 'Let users verify access with time-based TOTP codes generated by authenticator applications.' 13 13 },{ 14 -'title': ' Recoveryandtrusteddevices',15 -'icon': ' shield',16 -'content': ' Providebackup access with recoverycodes andreducerepeatedpromptsontrustedbrowsers.'14 + 'title': 'Email verification codes', 15 + 'icon': 'envelope-o', 16 + 'content': 'Send one-time verification codes by email when this method is enabled or combined with app codes.' 17 17 }]) 18 18 19 19 #set ($adminExperienceItems = [{ 20 -'title': 'MFA policy', 21 -'icon': 'cog', 22 -'content': 'Make MFA optional or required for all users from the XWiki Administration section.' 20 + 'title': 'MFA policy', 21 + 'icon': 'cog', 22 + 'content': 'Make MFA optional or required for all users from the XWiki Administration section.' 23 23 },{ 24 -'title': ' Configurationoptions',25 -'icon': 's liders',26 -'content': ' Set the authenticator issuername,recovery-code count and trusted-device duration.'24 + 'title': 'Recovery and trusted devices', 25 + 'icon': 'shield', 26 + 'content': 'Configure recovery-code count and trusted-device duration according to the organization security policy.' 27 27 },{ 28 -'title': 'Administration overview', 29 -'icon': 'table', 30 -'content': 'Review MFA adoption with summary indicators and a filterable Live Data table.' 28 + 'title': 'Administration overview', 29 + 'icon': 'table', 30 + 'content': 'Review MFA adoption across users with summary indicators and a filterable Live Data table.' 31 31 }]) 32 32 33 33 #set ($userExperienceItems = [{ 34 -'title': 'Self-service setup', 35 -'icon': 'qrcode', 36 -'content': 'Users configure MFA from their profile by scanning a QR code or entering the setup key manually.' 34 + 'title': 'Self-service setup', 35 + 'icon': 'qrcode', 36 + 'content': 'Users configure MFA from their profile by scanning a QR code or entering the setup key manually.' 37 37 },{ 38 -'title': ' Loginverification',39 -'icon': 'sign-in', 40 -'content': 'After the normal login, users enter the co degenerated by their authenticatorapp.'38 + 'title': 'Familiar login flow', 39 + 'icon': 'sign-in', 40 + 'content': 'After the normal login, users enter the configured verification code before accessing XWiki.' 41 41 },{ 42 -'title': ' Trusted browseroption',43 -'icon': ' desktop',44 -'content': 'Users can trustthe currentbrowserfor theconfigureddurationaftersuccessfulverification.'42 + 'title': 'Profile management', 43 + 'icon': 'user', 44 + 'content': 'Users can review MFA status, manage recovery codes and remove trusted devices from their profile.' 45 45 }]) 46 46 47 -#set ($ selfServiceItems = [{48 -'title': 'Recovery codes', 49 -'icon': 'life-ring', 50 -'content': 'Recovery codes provide backup access when a user loses access to the authenticator application.' 47 +#set ($recoveryItems = [{ 48 + 'title': 'Recovery codes', 49 + 'icon': 'life-ring', 50 + 'content': 'Recovery codes provide backup access when a user loses access to the authenticator application.' 51 51 },{ 52 -'title': 'Trusted devices', 53 -'icon': 'desktop', 54 -'content': 'Trusted devices can bereviewedandremovedfromtheuser profile.'52 + 'title': 'Trusted devices', 53 + 'icon': 'desktop', 54 + 'content': 'Trusted browsers or devices can skip repeated MFA prompts for a configured period.' 55 55 },{ 56 -'title': ' Profilemanagement',57 -'icon': ' user',58 -'content': ' Users can reviewMFA status,generaterecoverycodes,managetrusteddevicesandreset MFA.'56 + 'title': 'Administrator reset', 57 + 'icon': 'refresh', 58 + 'content': 'Administrators can reset a user MFA setup when the user needs to restart the configuration process.' 59 59 }]) 60 60 61 -#set ($adminSupportItems = [{ 62 -'title': 'User MFA status', 63 -'icon': 'user', 64 -'content': 'Administrators can open a user profile and check the MFA status for that account.' 65 -},{ 66 -'title': 'MFA reset', 67 -'icon': 'refresh', 68 -'content': 'Administrators can reset MFA when a user needs to restart the configuration process.' 69 -},{ 70 -'title': 'Controlled recovery', 71 -'icon': 'unlock-alt', 72 -'content': 'Resetting MFA removes the authenticator setup, recovery codes and trusted devices for that user.' 73 -}]) 74 - 75 75 #set ($rolloutItems = [{ 76 -'title': 'Start with a pilot group', 77 -'content': 'Test the extension with administrators or a small user group before enabling it widely.' 62 + 'title': 'Start with a pilot group', 63 + 'content': 'Test the extension with administrators or a small user group before enabling it widely.' 78 78 },{ 79 -'title': 'Define the MFA policy', 80 -'content': 'Decide whether MFA should be optional atfirst or required for all users.'65 + 'title': 'Define the MFA policy', 66 + 'content': 'Decide whether MFA should be optional, required for administrators, or required for all users.' 81 81 },{ 82 -'title': 'Configure recovery options', 83 -'content': 'Choose the numberofrecovery codes andwhethertrusted devices should be allowed.'68 + 'title': 'Configure recovery options', 69 + 'content': 'Choose whether recovery codes and trusted devices should be enabled.' 84 84 },{ 85 -'title': 'Inform users', 86 -'content': 'Explain how users configure MFA, save recovery codes and manage trusted devices.' 71 + 'title': 'Inform users', 72 + 'content': 'Explain how users configure MFA, save recovery codes and manage trusted devices.' 87 87 },{ 88 -'title': 'Monitor adoption', 89 -'content': 'Use the administration overview to identify users who still need to configure MFA.' 74 + 'title': 'Monitor adoption', 75 + 'content': 'Use the administration overview to identify users who still need to configure MFA.' 90 90 }]) 91 91 92 92 {{html clean="false"}} ... ... @@ -98,20 +98,17 @@ 98 98 XWiki 2FA and MFA 99 99 </div> 100 100 101 -``` 102 -<h1 id="product-title">XWiki Two-Factor Authentication</h1> 87 + <h1 id="product-title">XWiki Two-Factor Authentication</h1> 103 103 104 -<p class="lead"> 105 - Protect XWiki logins with a second verification step using authenticator app codes, 106 - recoverycodesand trusteddevices.107 -</p> 89 + <p class="lead"> 90 + Protect XWiki logins with a second verification step using authenticator app codes, 91 + email verification codes, or both. 92 + </p> 108 108 109 -<div class="hero-actions"> 110 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Ask about this extension</a> 111 - <a class="btn btn-secondary" href="$xwiki.getURL('products.WebHome')">View all products</a> 112 -</div> 113 -``` 114 - 94 + <div class="hero-actions"> 95 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Ask about this extension</a> 96 + <a class="btn btn-secondary" href="$xwiki.getURL('products.WebHome')">View all products</a> 97 + </div> 115 115 </div> 116 116 </section> 117 117 ... ... @@ -121,35 +121,32 @@ 121 121 <article class="product-summary-card"> 122 122 <h2 id="overview-title">Two-factor authentication built into XWiki</h2> 123 123 124 -``` 125 - <p> 126 - XWiki Two-Factor Authentication adds MFA support to the standard XWiki login flow. 127 - Users continue to sign in with their normal username and password, then confirm access 128 - with a time-based verification code from an authenticator application. 129 - </p> 107 + <p> 108 + XWiki Two-Factor Authentication adds MFA/2FA support to the standard XWiki login flow. 109 + Users continue to sign in with their normal username and password, then confirm access with 110 + an additional verification method. 111 + </p> 130 130 131 - <p> 132 - The extension isdesigned fororganizations thatwantstronger accessprotectionfor133 - internalknowledgebases,intranets,documentationplatforms, customerportalsandother134 - XWiki -basedapplications.135 - </p> 136 - </article> 113 + <p> 114 + The extension supports authenticator app codes, email-delivered verification codes, or a combined 115 + setup where both methods are required. It improves account protection without replacing the familiar 116 + XWiki authentication experience. 117 + </p> 118 + </article> 137 137 138 - <aside class="product-info-card" aria-labelledby="quick-facts-title"> 139 - <h3 id="quick-facts-title">Quick facts</h3> 140 - <ul> 141 - <li>Works with the standard XWiki login flow</li> 142 - <li>Supports TOTP authenticator applications</li> 143 - <li>Can require MFA for all users</li> 144 - <li>Includes one-time recovery codes</li> 145 - <li>Can remember trusted browsers or devices</li> 146 - <li>Includes user self-service controls</li> 147 - <li>Includes an administration overview</li> 148 - </ul> 149 - </aside> 150 -</div> 151 -``` 152 - 120 + <aside class="product-info-card" aria-labelledby="quick-facts-title"> 121 + <h3 id="quick-facts-title">Quick facts</h3> 122 + <ul> 123 + <li>Works with the standard XWiki login flow</li> 124 + <li>Supports TOTP authenticator applications</li> 125 + <li>Supports email-delivered one-time codes</li> 126 + <li>Can require app and email verification together</li> 127 + <li>Includes recovery codes for backup access</li> 128 + <li>Can remember trusted browsers or devices</li> 129 + <li>Includes administration and user controls</li> 130 + </ul> 131 + </aside> 132 + </div> 153 153 </div> 154 154 </section> 155 155 ... ... @@ -157,27 +157,24 @@ 157 157 <div class="container"> 158 158 <h2 id="capabilities-title">Main capabilities</h2> 159 159 160 -``` 161 -<p class="section-intro"> 162 - A focused set of MFA features for stronger XWiki account protection without replacing the familiar login experience. 163 -</p> 140 + <p class="section-intro"> 141 + A focused set of MFA/2FA features for stronger XWiki account protection without changing the standard login experience. 142 + </p> 164 164 165 -<div class="product-feature-grid"> 166 - #foreach ($entry in $mainCapabilityItems) 167 - <article class="product-feature"> 168 - <div class="card-heading"> 169 - <div class="feature-icon"> 170 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 171 - </div> 172 - <h3>$entry.title</h3> 173 - </div> 144 + <div class="product-feature-grid"> 145 + #foreach ($entry in $mainCapabilityItems) 146 + <article class="product-feature"> 147 + <div class="card-heading"> 148 + <div class="feature-icon"> 149 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 150 + </div> 151 + <h3>$entry.title</h3> 152 + </div> 174 174 175 - <p>$entry.content</p> 176 - </article> 177 - #end 178 -</div> 179 -``` 180 - 154 + <p>$entry.content</p> 155 + </article> 156 + #end 157 + </div> 181 181 </div> 182 182 </section> 183 183 ... ... @@ -187,60 +187,54 @@ 187 187 <article class="product-summary-card"> 188 188 <h2 id="security-title">Useful for XWiki security and access protection</h2> 189 189 190 -``` 191 - <p> 192 - Many organizations use XWiki to store internal documentation, procedures, operational 193 - knowledge and business-critical information. Adding a second authentication factor helps 194 - reduce the risk of account compromise when a password is exposed or reused. 195 - </p> 167 + <p> 168 + Many organizations need multi-factor authentication for internal tools, knowledge bases, 169 + intranets, documentation platforms and systems containing operational or sensitive information. 170 + </p> 196 196 197 - <p> 198 - Theextensionisespeciallyuseful forprotectingadministrator accounts,remoteusers,199 - private knowledge bases and customer or partner portals. 200 - </p> 201 - </article> 172 + <p> 173 + For XWiki, adding two-factor authentication directly to the standard login flow helps protect 174 + administrator accounts, remote users, private knowledge bases and customer or partner portals. 175 + </p> 176 + </article> 202 202 203 - <aside class="product-info-card" aria-labelledby="use-cases-title"> 204 - <h3 id="use-cases-title">Typical use cases</h3> 205 - <ul> 206 - <li>Administrator account protection</li> 207 - <li>Internal knowledge base security</li> 208 - <li>Private documentation platforms</li> 209 - <li>Remote user access protection</li> 210 - <li>Customer or partner portals</li> 211 - <li>Security review and NIS 2 readiness initiatives</li> 212 - </ul> 213 - </aside> 214 -</div> 215 -``` 216 - 178 + <aside class="product-info-card" aria-labelledby="use-cases-title"> 179 + <h3 id="use-cases-title">Typical use cases</h3> 180 + <ul> 181 + <li>Administrator account protection</li> 182 + <li>Internal knowledge base security</li> 183 + <li>Private documentation platforms</li> 184 + <li>Remote user access protection</li> 185 + <li>Customer or partner portals</li> 186 + <li>Security review and NIS 2 readiness initiatives</li> 187 + </ul> 188 + </aside> 189 + </div> 217 217 </div> 218 218 </section> 219 219 220 220 <section aria-labelledby="admin-experience-title"> 221 221 <div class="container"> 222 - <h2 id="admin-experience-title">Administrator configurationand monitoring</h2>195 + <h2 id="admin-experience-title">Administrator experience</h2> 223 223 224 -``` 225 -<p class="section-intro"> 226 - Administrators can configure the MFA policy, define recovery options and monitor adoption from the XWiki Administration section. 227 -</p> 197 + <p class="section-intro"> 198 + Administrators can configure the MFA policy, monitor adoption and reset user MFA setups when needed. 199 + </p> 228 228 229 -<div class="product-feature-grid"> 230 - #foreach ($entry in $adminExperienceItems) 231 - <article class="product-feature"> 232 - <div class="card-heading"> 233 - <div class="feature-icon"> 234 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 235 - </div> 236 - <h3>$entry.title</h3> 237 - </div> 201 + <div class="product-feature-grid"> 202 + #foreach ($entry in $adminExperienceItems) 203 + <article class="product-feature"> 204 + <div class="card-heading"> 205 + <div class="feature-icon"> 206 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 207 + </div> 208 + <h3>$entry.title</h3> 209 + </div> 238 238 239 - <p>$entry.content</p> 240 - </article> 241 - #end 242 -</div> 243 -``` 211 + <p>$entry.content</p> 212 + </article> 213 + #end 214 + </div> 244 244 245 245 {{/html}} 246 246 ... ... @@ -252,39 +252,34 @@ 252 252 253 253 {{html clean="false"}} 254 254 255 -``` 256 -<p class="product-gallery-caption"> 257 - Administration screens for configuring MFA and reviewing MFA adoption across users. 258 -</p> 259 -``` 260 - 226 + <p class="product-gallery-caption"> 227 + Administration screens for configuring MFA and reviewing MFA adoption across users. 228 + </p> 261 261 </div> 262 262 </section> 263 263 264 264 <section class="product-section-muted" aria-labelledby="user-experience-title"> 265 265 <div class="container"> 266 - <h2 id="user-experience-title">User setupand login verification</h2>234 + <h2 id="user-experience-title">User experience</h2> 267 267 268 -``` 269 -<p class="section-intro"> 270 - Users can configure MFA from their profile or during the enforced setup flow, then verify future logins with their authenticator app. 271 -</p> 236 + <p class="section-intro"> 237 + Users can configure MFA from their profile and complete the second verification step during login. 238 + </p> 272 272 273 -<div class="product-feature-grid"> 274 - #foreach ($entry in $userExperienceItems) 275 - <article class="product-feature"> 276 - <div class="card-heading"> 277 - <div class="feature-icon"> 278 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 279 - </div> 280 - <h3>$entry.title</h3> 281 - </div> 240 + <div class="product-feature-grid"> 241 + #foreach ($entry in $userExperienceItems) 242 + <article class="product-feature"> 243 + <div class="card-heading"> 244 + <div class="feature-icon"> 245 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 246 + </div> 247 + <h3>$entry.title</h3> 248 + </div> 282 282 283 - <p>$entry.content</p> 284 - </article> 285 - #end 286 -</div> 287 -``` 250 + <p>$entry.content</p> 251 + </article> 252 + #end 253 + </div> 288 288 289 289 {{/html}} 290 290 ... ... @@ -296,145 +296,91 @@ 296 296 297 297 {{html clean="false"}} 298 298 299 -``` 300 -<p class="product-gallery-caption"> 301 - User setup, enforced MFA configuration and login verification screens. 302 -</p> 303 -``` 304 - 265 + <p class="product-gallery-caption"> 266 + User setup and login verification screens. 267 + </p> 305 305 </div> 306 306 </section> 307 307 308 -<section aria-labelledby=" self-service-title">271 +<section aria-labelledby="recovery-title"> 309 309 <div class="container"> 310 - <h2 id=" self-service-title">Recovery codes and trusted devices</h2>273 + <h2 id="recovery-title">Recovery codes and trusted devices</h2> 311 311 312 -``` 313 -<p class="section-intro"> 314 - Recovery codes and trusted devices help balance stronger access protection with a smoother user experience. 315 -</p> 275 + <p class="section-intro"> 276 + Recovery codes and trusted devices help balance stronger access protection with a smoother user experience. 277 + </p> 316 316 317 -<div class="product-feature-grid"> 318 - #foreach ($entry in $ selfServiceItems)319 - <article class="product-feature"> 320 - <div class="card-heading"> 321 - <div class="feature-icon"> 322 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 323 - </div> 324 - <h3>$entry.title</h3> 325 - </div> 279 + <div class="product-feature-grid"> 280 + #foreach ($entry in $recoveryItems) 281 + <article class="product-feature"> 282 + <div class="card-heading"> 283 + <div class="feature-icon"> 284 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 285 + </div> 286 + <h3>$entry.title</h3> 287 + </div> 326 326 327 - <p>$entry.content</p> 328 - </article> 329 - #end 330 -</div> 331 -``` 289 + <p>$entry.content</p> 290 + </article> 291 + #end 292 + </div> 332 332 333 333 {{/html}} 334 334 335 335 {{gallery}} 336 -[[image:mfa-user-profile-overview.png]] 337 -[[image:mfa-recovery-codes-not-generated.png]] 338 -[[image:mfa-recovery-codes-generated.png]] 297 +[[image:mfa-recovery-codes.png]] 339 339 [[image:mfa-trusted-devices.png]] 340 -[[image:mfa-user-profile-full.png]] 341 -{{/gallery}} 342 - 343 -{{html clean="false"}} 344 - 345 -``` 346 -<p class="product-gallery-caption"> 347 - User profile screens for recovery codes, trusted devices and MFA self-service management. 348 -</p> 349 -``` 350 - 351 - </div> 352 -</section> 353 - 354 -<section class="product-section-muted" aria-labelledby="admin-support-title"> 355 - <div class="container"> 356 - <h2 id="admin-support-title">Administrator support and user recovery</h2> 357 - 358 -``` 359 -<p class="section-intro"> 360 - Administrators can help users recover from lost devices or restart MFA setup when needed. 361 -</p> 362 - 363 -<div class="product-feature-grid"> 364 - #foreach ($entry in $adminSupportItems) 365 - <article class="product-feature"> 366 - <div class="card-heading"> 367 - <div class="feature-icon"> 368 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 369 - </div> 370 - <h3>$entry.title</h3> 371 - </div> 372 - 373 - <p>$entry.content</p> 374 - </article> 375 - #end 376 -</div> 377 -``` 378 - 379 -{{/html}} 380 - 381 -{{gallery}} 299 +[[image:mfa-user-profile-overview.png]] 382 382 [[image:mfa-admin-user-management.png]] 383 383 {{/gallery}} 384 384 385 385 {{html clean="false"}} 386 386 387 -``` 388 -<p class="product-gallery-caption"> 389 - Administrator view for checking and resetting a user MFA setup. 390 -</p> 391 -``` 392 - 305 + <p class="product-gallery-caption"> 306 + Recovery codes, trusted devices and user profile management. 307 + </p> 393 393 </div> 394 394 </section> 395 395 396 -<section aria-labelledby="rollout-title"> 311 +<section class="product-section-muted" aria-labelledby="rollout-title"> 397 397 <div class="container"> 398 398 <div class="product-layout"> 399 399 <article class="product-summary-card"> 400 400 <h2 id="rollout-title">Rollout recommendations</h2> 401 401 402 -``` 403 - <p> 404 - For a smooth rollout, start with a small administrator or pilot group before requiring MFA for everyone. 405 - This helps validate the configuration, prepare user communication and reduce support issues. 406 - </p> 317 + <p> 318 + For a smooth rollout, start with a small administrator or pilot group before requiring MFA for everyone. 319 + This helps validate the configuration, prepare user communication and reduce support issues. 320 + </p> 407 407 408 - <ol class="process-list"> 409 - #foreach ($entry in $rolloutItems) 410 - <li> 411 - <strong>$entry.title</strong> 412 - $entry.content 413 - </li> 414 - #end 415 - </ol> 416 - </article> 322 + <ol class="process-list"> 323 + #foreach ($entry in $rolloutItems) 324 + <li> 325 + <strong>$entry.title</strong> 326 + $entry.content 327 + </li> 328 + #end 329 + </ol> 330 + </article> 417 417 418 - <aside class="product-info-card" aria-labelledby="planning-title"> 419 - <h3 id="planning-title">Useful information before installation</h3> 332 + <aside class="product-info-card" aria-labelledby="planning-title"> 333 + <h3 id="planning-title">Useful information before installation</h3> 420 420 421 - <p class="product-card-note"> 422 - These details help evaluate compatibility, rollout scope and configuration options. 423 - </p> 335 + <p class="product-card-note"> 336 + These details help evaluate compatibility, rollout scope and configuration options. 337 + </p> 424 424 425 - <ul> 426 - <li>XWiki version</li> 427 - <li>Single wiki or wiki farm with subwikis</li> 428 - <li>Current authentication setup</li> 429 - <li>Optional or globally required MFA policy</li> 430 - <li>Trusted-device policy</li> 431 - <li>Recovery-code policy</li> 432 - <li>Rollout communication needs</li> 433 - </ul> 434 - </aside> 435 -</div> 436 -``` 437 - 339 + <ul> 340 + <li>XWiki version</li> 341 + <li>Single wiki or wiki farm with subwikis</li> 342 + <li>Current authentication setup</li> 343 + <li>Optional or globally required MFA policy</li> 344 + <li>Trusted-device policy</li> 345 + <li>Recovery-code policy</li> 346 + <li>Rollout communication needs</li> 347 + </ul> 348 + </aside> 349 + </div> 438 438 </div> 439 439 </section> 440 440 ... ... @@ -443,18 +443,14 @@ 443 443 <div class="cta-panel"> 444 444 <h2 id="cta-title">Interested in using this extension?</h2> 445 445 446 -``` 447 - <p> 448 - Send a short message with your XWiki version, current authentication setup and MFA rollout goal. 449 - </p> 358 + <p> 359 + Send a short message with your XWiki version, current authentication setup and MFA rollout goal. 360 + </p> 450 450 451 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 452 -</div> 453 -``` 454 - 362 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 363 + </div> 455 455 </div> 456 456 </section> 457 457 458 458 {{/html}} 459 459 {{/velocity}} 460 -
- mfa-recovery-codes-generated.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.Admin - Size
-
... ... @@ -1,1 +1,0 @@ 1 -38.5 KB - Content