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)
Details
- Page properties
-
- Content
-
... ... @@ -2,91 +2,122 @@ 2 2 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 3 3 #set ($discard = $xwiki.ssx.use('products.WebHome')) 4 4 5 -#set ($ mainCapabilityItems = [{6 -'title': ' Secondverification step',7 -'icon': ' key',8 -'content': 'Add a nadditionalverification screenafter thenormalXWikiusername andpasswordlogin.'5 +#set ($businessValueItems = [{ 6 + 'title': 'Reduce account compromise risk', 7 + 'icon': 'shield', 8 + 'content': 'Add a second verification step after password login to better protect private XWiki content and administrator accounts.' 9 9 },{ 10 -'title': ' Authenticatorappcodes',11 -'icon': ' mobile',12 -'content': ' Letusersverifyaccesswithtime-basedTOTPcodesgeneratedbyauthenticatorapplications.'10 + 'title': 'Keep the standard XWiki experience', 11 + 'icon': 'sign-in', 12 + 'content': 'Extend the familiar XWiki login flow instead of replacing it with a completely different authentication experience.' 13 13 },{ 14 -'title': ' Recoveryandtrusteddevices',15 -'icon': 's hield',16 -'content': ' Providebackupaccesswith recoverycodesandreducerepeatedpromptsontrustedbrowsers.'14 + 'title': 'Support a controlled rollout', 15 + 'icon': 'tasks', 16 + 'content': 'Start with optional MFA, then require MFA for all users when the organization is ready.' 17 17 }]) 18 18 19 -#set ($admin ExperienceItems = [{20 -'title': 'MFA policy', 21 -'icon': 'cog', 22 -'content': ' Make MFA optional or required for all usersfrom the XWiki Administration section.'19 +#set ($adminControlItems = [{ 20 + 'title': 'Global MFA policy', 21 + 'icon': 'cog', 22 + 'content': 'Administrators can decide whether MFA is optional or required for all users.' 23 23 },{ 24 -'title': ' Configurationoptions',25 -'icon': ' sliders',26 -'content': ' Settheauthenticatorissuername,recovery-codecountandtrusted-device duration.'24 + 'title': 'Recovery policy', 25 + 'icon': 'life-ring', 26 + 'content': 'Configure how many one-time recovery codes are generated for each user, or disable recovery codes if needed.' 27 27 },{ 28 -'title': ' Administration overview',29 -'icon': ' table',30 -'content': ' ReviewMFAadoptionwithsummaryindicatorsandafilterableLiveData table.'28 + 'title': 'Trusted-device policy', 29 + 'icon': 'desktop', 30 + 'content': 'Configure how long a trusted browser remains valid, or disable trusted devices for stricter environments.' 31 31 }]) 32 32 33 -#set ($ userExperienceItems = [{34 -'title': ' Self-servicesetup',35 -'icon': ' qrcode',36 -'content': ' Users configureMFA fromtheirprofilebyscanningaQRcode orenteringthesetupkey manually.'33 +#set ($adminVisibilityItems = [{ 34 + 'title': 'MFA adoption overview', 35 + 'icon': 'bar-chart', 36 + 'content': 'Review how many users are scanned, how many have MFA configured, and how many still need attention.' 37 37 },{ 38 -'title': ' Login verification',39 -'icon': ' sign-in',40 -'content': ' Afterthenormallogin,users enterthecodegeneratedbytheirauthenticatorapp.'38 + 'title': 'Filterable user table', 39 + 'icon': 'table', 40 + 'content': 'Use the Live Data table to review configured users, recovery-code status and trusted-device usage.' 41 41 },{ 42 -'title': ' Trusted browseroption',43 -'icon': ' desktop',44 -'content': ' Userscantrustthecurrentbrowserfor theconfiguredduration aftersuccessfulverification.'42 + 'title': 'Operational monitoring', 43 + 'icon': 'search', 44 + 'content': 'Identify accounts with missing recovery codes or trusted devices from the administration area.' 45 45 }]) 46 46 47 -#set ($se lfServiceItems = [{48 -'title': ' Recoverycodes',49 -'icon': ' life-ring',50 -'content': ' Recoverycodesprovide backupaccess when auserlosesaccesstothe authenticator application.'47 +#set ($userAdoptionItems = [{ 48 + 'title': 'Self-service setup', 49 + 'icon': 'qrcode', 50 + 'content': 'Users can configure MFA by scanning a QR code with their authenticator application.' 51 51 },{ 52 -'title': ' Trusteddevices',53 -'icon': ' desktop',54 -'content': ' Trusted devices canbereviewedandremovedfrom theuserprofile.'52 + 'title': 'Manual setup details', 53 + 'icon': 'keyboard-o', 54 + 'content': 'Users can also enter the account name and secret key manually if they cannot scan the QR code.' 55 55 },{ 56 -'title': ' Profilemanagement',57 -'icon': ' user',58 -'content': ' Users canreviewMFA status,generaterecoverycodes,managetrusteddevicesand resetMFA.'56 + 'title': 'Enforced setup flow', 57 + 'icon': 'lock', 58 + 'content': 'When MFA is required, users are guided to complete setup before continuing.' 59 59 }]) 60 60 61 +#set ($loginProtectionItems = [{ 62 + 'title': 'Second login step', 63 + 'icon': 'key', 64 + 'content': 'After the normal username and password login, users enter the verification code from their authenticator app.' 65 +},{ 66 + 'title': 'Backup login option', 67 + 'icon': 'unlock-alt', 68 + 'content': 'If recovery codes are enabled, users can use a recovery code when they lose access to the authenticator app.' 69 +},{ 70 + 'title': 'Trusted browser option', 71 + 'icon': 'desktop', 72 + 'content': 'Users can trust the current browser for the configured duration after successful verification.' 73 +}]) 74 + 75 +#set ($continuityItems = [{ 76 + 'title': 'One-time recovery codes', 77 + 'icon': 'life-ring', 78 + 'content': 'Recovery codes help users regain access if they lose their authenticator device.' 79 +},{ 80 + 'icon': 'life-ring', 81 + 'content': 'Recovery codes help users regain access if they lose their authenticator device.' 82 +},{ 83 + 'title': 'Codes shown once', 84 + 'icon': 'eye-slash', 85 + 'content': 'Recovery codes are displayed only once and each code can be used a single time.' 86 +},{ 87 + 'title': 'Trusted-device management', 88 + 'icon': 'desktop', 89 + 'content': 'Users can review trusted devices, identify the current browser and remove devices they no longer use.' 90 +}]) 91 + 61 61 #set ($adminSupportItems = [{ 62 -'title': 'User MFA status', 63 -'icon': 'user', 64 -'content': 'Administrators can open a user profile and check the MFA s tatusfor that account.'93 + 'title': 'User MFA status', 94 + 'icon': 'user', 95 + 'content': 'Administrators can open a user profile and check whether MFA is configured for that account.' 65 65 },{ 66 -'title': ' MFAreset',67 -'icon': 'refresh', 68 -'content': 'Administrators can reset MFA when a user needs torestarttheconfigurationprocess.'97 + 'title': 'Helpdesk recovery', 98 + 'icon': 'refresh', 99 + 'content': 'Administrators can reset MFA when a user loses access to the authenticator app or needs to restart setup.' 69 69 },{ 70 -'title': 'C ontrolledrecovery',71 -'icon': ' unlock-alt',72 -'content': 'Resetting MFA removes the authenticator setup, recovery codes and trusted devices for that user.' 101 + 'title': 'Clean reset', 102 + 'icon': 'trash', 103 + 'content': 'Resetting MFA removes the authenticator setup, recovery codes and trusted devices for that user.' 73 73 }]) 74 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.' 107 + 'title': 'Start with a pilot group', 108 + '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 at first or required for all users.' 110 + 'title': 'Define the MFA policy', 111 + 'content': 'Decide whether MFA should be optional at first or required for all users.' 81 81 },{ 82 -'title': 'Configure recovery options', 83 -'content': 'Choose the number of recovery codes and whether trusted devices should be allowed.' 113 + 'title': 'Configure recovery options', 114 + 'content': 'Choose the number of recovery codes and whether trusted devices should be allowed.' 84 84 },{ 85 -'title': ' Informusers',86 -'content': 'Explain how users configure MFA, save recovery codes and manage trusted devices.' 116 + 'title': 'Prepare user communication', 117 + '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.' 119 + 'title': 'Monitor adoption', 120 + '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> 132 + <h1 id="product-title">XWiki Two-Factor Authentication</h1> 103 103 104 -<p class="lead"> 105 - Protect XWiki logins with a secondverificationstep using authenticatorappcodes,106 - recoverycodesand trusteddevices.107 -</p> 134 + <p class="lead"> 135 + Protect XWiki logins with authenticator app verification, recovery codes, trusted devices 136 + and administrator visibility. 137 + </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 - 139 + <div class="hero-actions"> 140 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Ask about this extension</a> 141 + <a class="btn btn-secondary" href="$xwiki.getURL('products.WebHome')">View all products</a> 142 + </div> 115 115 </div> 116 116 </section> 117 117 ... ... @@ -119,133 +119,125 @@ 119 119 <div class="container"> 120 120 <div class="product-layout"> 121 121 <article class="product-summary-card"> 122 - <h2 id="overview-title"> Two-factor authentication builtinto XWiki</h2>150 + <h2 id="overview-title">MFA protection built for 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> 152 + <p> 153 + XWiki Two-Factor Authentication adds a second verification step to the standard XWiki login flow. 154 + Users continue to sign in with their normal username and password, then confirm access with a 155 + time-based code generated by an authenticator application. 156 + </p> 130 130 131 - <p> 132 - The extension is designed for organizations that wantstrongeraccess protectionfor133 - internalknowledge bases,intranets, documentation platforms, customer portals andother134 - XWiki-basedapplications.135 - </p> 136 - </article> 158 + <p> 159 + The extension is designed for organizations that use XWiki to manage internal documentation, 160 + procedures, knowledge bases, customer portals or other private collaboration spaces where 161 + stronger account protection is needed. 162 + </p> 163 + </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 - 165 + <aside class="product-info-card" aria-labelledby="quick-facts-title"> 166 + <h3 id="quick-facts-title">Quick facts</h3> 167 + <ul> 168 + <li>Works with the standard XWiki login flow</li> 169 + <li>Uses TOTP authenticator applications</li> 170 + <li>Can require MFA for all users</li> 171 + <li>Includes one-time recovery codes</li> 172 + <li>Supports trusted browsers or devices</li> 173 + <li>Includes user self-service controls</li> 174 + <li>Includes administration monitoring</li> 175 + </ul> 176 + </aside> 177 + </div> 153 153 </div> 154 154 </section> 155 155 156 -<section aria-labelledby=" capabilities-title">181 +<section class="product-section-muted" aria-labelledby="business-value-title"> 157 157 <div class="container"> 158 - <h2 id=" capabilities-title">Maincapabilities</h2>183 + <h2 id="business-value-title">Business value</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> 185 + <p class="section-intro"> 186 + The extension helps organizations strengthen XWiki access protection without making login and account recovery unnecessarily complex. 187 + </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> 189 + <div class="product-feature-grid"> 190 + #foreach ($entry in $businessValueItems) 191 + <article class="product-feature"> 192 + <div class="card-heading"> 193 + <div class="feature-icon"> 194 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 195 + </div> 196 + <h3>$entry.title</h3> 197 + </div> 174 174 175 - <p>$entry.content</p> 176 - </article> 177 - #end 178 -</div> 179 -``` 180 - 199 + <p>$entry.content</p> 200 + </article> 201 + #end 202 + </div> 181 181 </div> 182 182 </section> 183 183 184 -<section class="product-section-muted"aria-labelledby="security-title">206 +<section aria-labelledby="admin-control-title"> 185 185 <div class="container"> 186 - <div class="product-layout"> 187 - <article class="product-summary-card"> 188 - <h2 id="security-title">Useful for XWiki security and access protection</h2> 208 + <h2 id="admin-control-title">Administrator control</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. 210 + <p class="section-intro"> 211 + Administrators configure the MFA policy directly from the XWiki Administration section, without editing configuration files for day-to-day policy changes. 195 195 </p> 196 196 197 - <p> 198 - The extension is especially useful for protecting administrator accounts, remote users, 199 - private knowledge bases and customer or partner portals. 200 - </p> 201 - </article> 214 + <div class="product-feature-grid"> 215 + #foreach ($entry in $adminControlItems) 216 + <article class="product-feature"> 217 + <div class="card-heading"> 218 + <div class="feature-icon"> 219 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 220 + </div> 221 + <h3>$entry.title</h3> 222 + </div> 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 -``` 224 + <p>$entry.content</p> 225 + </article> 226 + #end 227 + </div> 216 216 229 +{{/html}} 230 + 231 +{{gallery}} 232 +[[image:mfa-admin-configuration.png]] 233 +{{/gallery}} 234 + 235 +{{html clean="false"}} 236 + 237 + <p class="product-gallery-caption"> 238 + Administration configuration for requiring MFA, setting the authenticator issuer name, recovery-code count and trusted-device duration. 239 + </p> 217 217 </div> 218 218 </section> 219 219 220 -<section aria-labelledby="admin- experience-title">243 +<section class="product-section-muted" aria-labelledby="admin-visibility-title"> 221 221 <div class="container"> 222 - <h2 id="admin- experience-title">Administratorconfigurationand monitoring</h2>245 + <h2 id="admin-visibility-title">Administration overview and monitoring</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> 247 + <p class="section-intro"> 248 + The administration overview helps teams understand MFA adoption and identify users who still need to complete setup or maintain recovery options. 249 + </p> 228 228 229 -<div class="product-feature-grid"> 230 - #foreach ($entry in $admin ExperienceItems)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> 251 + <div class="product-feature-grid"> 252 + #foreach ($entry in $adminVisibilityItems) 253 + <article class="product-feature"> 254 + <div class="card-heading"> 255 + <div class="feature-icon"> 256 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 257 + </div> 258 + <h3>$entry.title</h3> 259 + </div> 238 238 239 - <p>$entry.content</p> 240 - </article> 241 - #end 242 -</div> 243 -``` 261 + <p>$entry.content</p> 262 + </article> 263 + #end 264 + </div> 244 244 245 245 {{/html}} 246 246 247 247 {{gallery}} 248 -[[image:mfa-admin-configuration.png]] 249 249 [[image:mfa-admin-overview.png]] 250 250 [[image:mfa-admin-full.png]] 251 251 {{/gallery}} ... ... @@ -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 - 275 + <p class="product-gallery-caption"> 276 + MFA adoption indicators and a filterable user overview for administrators. 277 + </p> 261 261 </div> 262 262 </section> 263 263 264 -<section class="product-section-muted"aria-labelledby="user-experience-title">281 +<section aria-labelledby="user-adoption-title"> 265 265 <div class="container"> 266 - <h2 id="user- experience-title">User setup andlogin verification</h2>283 + <h2 id="user-adoption-title">User setup and adoption</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> 285 + <p class="section-intro"> 286 + Users can configure MFA themselves by scanning a QR code or entering the setup information manually in their authenticator application. 287 + </p> 272 272 273 -<div class="product-feature-grid"> 274 - #foreach ($entry in $user ExperienceItems)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> 289 + <div class="product-feature-grid"> 290 + #foreach ($entry in $userAdoptionItems) 291 + <article class="product-feature"> 292 + <div class="card-heading"> 293 + <div class="feature-icon"> 294 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 295 + </div> 296 + <h3>$entry.title</h3> 297 + </div> 282 282 283 - <p>$entry.content</p> 284 - </article> 285 - #end 286 -</div> 287 -``` 299 + <p>$entry.content</p> 300 + </article> 301 + #end 302 + </div> 288 288 289 289 {{/html}} 290 290 ... ... @@ -291,63 +291,91 @@ 291 291 {{gallery}} 292 292 [[image:mfa-user-setup-qr.png]] 293 293 [[image:mfa-login-verification-setup.png]] 294 -[[image:mfa-login-verification-code.png]] 295 295 {{/gallery}} 296 296 297 297 {{html clean="false"}} 298 298 299 - ```300 - <pclass="product-gallery-caption">301 - Usersetup,enforced MFA configuration and login verification screens.302 -</ p>303 - ```313 + <p class="product-gallery-caption"> 314 + Profile-based setup and enforced setup during login when MFA is required. 315 + </p> 316 + </div> 317 +</section> 304 304 319 +<section class="product-section-muted" aria-labelledby="login-protection-title"> 320 + <div class="container"> 321 + <h2 id="login-protection-title">Login protection</h2> 322 + 323 + <p class="section-intro"> 324 + After MFA is configured, XWiki asks for a verification code after the normal username and password step. 325 + </p> 326 + 327 + <div class="product-feature-grid"> 328 + #foreach ($entry in $loginProtectionItems) 329 + <article class="product-feature"> 330 + <div class="card-heading"> 331 + <div class="feature-icon"> 332 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 333 + </div> 334 + <h3>$entry.title</h3> 335 + </div> 336 + 337 + <p>$entry.content</p> 338 + </article> 339 + #end 340 + </div> 341 + 342 +{{/html}} 343 + 344 +{{gallery}} 345 +[[image:mfa-login-verification-code.png]] 346 +{{/gallery}} 347 + 348 +{{html clean="false"}} 349 + 350 + <p class="product-gallery-caption"> 351 + Verification screen displayed after the standard XWiki username and password login. 352 + </p> 305 305 </div> 306 306 </section> 307 307 308 -<section aria-labelledby=" self-service-title">356 +<section aria-labelledby="continuity-title"> 309 309 <div class="container"> 310 - <h2 id=" self-service-title">Recovery codes and trusted devices</h2>358 + <h2 id="continuity-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> 360 + <p class="section-intro"> 361 + Recovery codes and trusted devices help balance stronger access protection with practical day-to-day usability. 362 + </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> 364 + <div class="product-feature-grid"> 365 + #foreach ($entry in $continuityItems) 366 + <article class="product-feature"> 367 + <div class="card-heading"> 368 + <div class="feature-icon"> 369 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 370 + </div> 371 + <h3>$entry.title</h3> 372 + </div> 326 326 327 - <p>$entry.content</p> 328 - </article> 329 - #end 330 -</div> 331 -``` 374 + <p>$entry.content</p> 375 + </article> 376 + #end 377 + </div> 332 332 333 333 {{/html}} 334 334 335 335 {{gallery}} 336 -[[image:mfa-user-profile-overview.png]] 337 337 [[image:mfa-recovery-codes-not-generated.png]] 338 338 [[image:mfa-recovery-codes-generated.png]] 339 339 [[image:mfa-trusted-devices.png]] 385 +[[image:mfa-user-profile-overview.png]] 340 340 [[image:mfa-user-profile-full.png]] 341 341 {{/gallery}} 342 342 343 343 {{html clean="false"}} 344 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 - 391 + <p class="product-gallery-caption"> 392 + User profile screens for recovery-code generation, trusted-device review and MFA self-service management. 393 + </p> 351 351 </div> 352 352 </section> 353 353 ... ... @@ -355,26 +355,24 @@ 355 355 <div class="container"> 356 356 <h2 id="admin-support-title">Administrator support and user recovery</h2> 357 357 358 -``` 359 -<p class="section-intro"> 360 - Administrators can help users recover from lost devices or restart MFA setup when needed. 361 -</p> 401 + <p class="section-intro"> 402 + Administrators can help users recover from lost devices or restart MFA setup when needed. 403 + </p> 362 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> 405 + <div class="product-feature-grid"> 406 + #foreach ($entry in $adminSupportItems) 407 + <article class="product-feature"> 408 + <div class="card-heading"> 409 + <div class="feature-icon"> 410 + <i class="fa fa-$entry.icon" aria-hidden="true"></i> 411 + </div> 412 + <h3>$entry.title</h3> 413 + </div> 372 372 373 - <p>$entry.content</p> 374 - </article> 375 - #end 376 -</div> 377 -``` 415 + <p>$entry.content</p> 416 + </article> 417 + #end 418 + </div> 378 378 379 379 {{/html}} 380 380 ... ... @@ -384,12 +384,9 @@ 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 - 428 + <p class="product-gallery-caption"> 429 + Administrator view for checking and resetting a user MFA setup. 430 + </p> 393 393 </div> 394 394 </section> 395 395 ... ... @@ -399,42 +399,39 @@ 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> 440 + <p> 441 + For a smooth rollout, start with a small administrator or pilot group before requiring MFA for everyone. 442 + This helps validate the configuration, prepare user communication and reduce support issues. 443 + </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> 445 + <ol class="process-list"> 446 + #foreach ($entry in $rolloutItems) 447 + <li> 448 + <strong>$entry.title</strong> 449 + $entry.content 450 + </li> 451 + #end 452 + </ol> 453 + </article> 417 417 418 - <aside class="product-info-card" aria-labelledby="planning-title"> 419 - <h3 id="planning-title">Useful information before installation</h3> 455 + <aside class="product-info-card" aria-labelledby="planning-title"> 456 + <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> 458 + <p class="product-card-note"> 459 + These details help evaluate compatibility, rollout scope and configuration options. 460 + </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 - 462 + <ul> 463 + <li>XWiki version</li> 464 + <li>Single wiki or wiki farm with subwikis</li> 465 + <li>Current authentication setup</li> 466 + <li>Optional or globally required MFA policy</li> 467 + <li>Trusted-device policy</li> 468 + <li>Recovery-code policy</li> 469 + <li>Rollout communication needs</li> 470 + </ul> 471 + </aside> 472 + </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> 481 + <p> 482 + Send a short message with your XWiki version, current authentication setup and MFA rollout goal. 483 + </p> 450 450 451 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 452 -</div> 453 -``` 454 - 485 + <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 486 + </div> 455 455 </div> 456 456 </section> 457 457 458 458 {{/html}} 459 459 {{/velocity}} 460 -