brute-force.html 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
  2. <kc-tabs-realm></kc-tabs-realm>
  3. <ul class="nav nav-tabs nav-tabs-pf">
  4. <li><a href="#/realms/{{realm.realm}}/defense/headers">{{:: 'headers' | translate}}</a></li>
  5. <li class="active"><a href="#/realms/{{realm.realm}}/defense/brute-force">{{:: 'brute-force-detection' | translate}}</a></li>
  6. </ul>
  7. <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageRealm">
  8. <fieldset class="border-top">
  9. <div class="form-group">
  10. <label class="col-md-2 control-label" for="bruteForceProtected">{{:: 'enabled' | translate}}</label>
  11. <div class="col-md-6">
  12. <input ng-model="realm.bruteForceProtected" name="bruteForceProtected" id="bruteForceProtected" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
  13. </div>
  14. </div>
  15. <div class="form-group" data-ng-show="realm.bruteForceProtected">
  16. <label class="col-md-2 control-label" for="permanentLockout">{{:: 'permanent-lockout' | translate}}</label>
  17. <div class="col-md-6">
  18. <input ng-model="realm.permanentLockout" name="permanentLockout" id="permanentLockout" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
  19. </div>
  20. <kc-tooltip>{{:: 'permanent-lockout.tooltip' | translate}}</kc-tooltip>
  21. </div>
  22. <div class="form-group" data-ng-show="realm.bruteForceProtected">
  23. <label class="col-md-2 control-label" for="failureFactor">{{:: 'max-login-failures' | translate}}</label>
  24. <div class="col-md-6">
  25. <input class="form-control" type="number" min="1" max="31536000" id="failureFactor" name="failureFactor" data-ng-model="realm.failureFactor" autofocus
  26. required>
  27. </div>
  28. <kc-tooltip>{{:: 'max-login-failures.tooltip' | translate}}</kc-tooltip>
  29. </div>
  30. <div class="form-group" data-ng-show="realm.bruteForceProtected && !realm.permanentLockout">
  31. <label class="col-md-2 control-label" for="waitIncrement">{{:: 'wait-increment' | translate}}</label>
  32. <div class="col-md-6 time-selector">
  33. <input class="form-control" type="number" required min="1"
  34. max="31536000" data-ng-model="realm.waitIncrement"
  35. id="waitIncrement" name="waitIncrement"/>
  36. <select class="form-control" name="waitIncrementUnit" data-ng-model="realm.waitIncrementUnit" >
  37. <option data-ng-selected="!realm.waitIncrementUnit" value="Seconds">{{:: 'seconds' | translate}}</option>
  38. <option value="Minutes">{{:: 'minutes' | translate}}</option>
  39. <option value="Hours">{{:: 'hours' | translate}}</option>
  40. <option value="Days">{{:: 'days' | translate}}</option>
  41. </select>
  42. </div>
  43. <kc-tooltip>{{:: 'wait-increment.tooltip' | translate}}</kc-tooltip>
  44. </div>
  45. <div class="form-group" data-ng-show="realm.bruteForceProtected">
  46. <label class="col-md-2 control-label" for="quickLoginCheckMilliSeconds">{{:: 'quick-login-check-millis' | translate}}</label>
  47. <div class="col-md-6">
  48. <input class="form-control" type="number" min="1" max="31536000" id="quickLoginCheckMilliSeconds" name="quickLoginCheckMilliSeconds" data-ng-model="realm.quickLoginCheckMilliSeconds" autofocus
  49. required>
  50. </div>
  51. <kc-tooltip>{{:: 'quick-login-check-millis.tooltip' | translate}}</kc-tooltip>
  52. </div>
  53. <div class="form-group" data-ng-show="realm.bruteForceProtected">
  54. <label class="col-md-2 control-label" for="minimumQuickLoginWait">{{:: 'min-quick-login-wait' | translate}}</label>
  55. <div class="col-md-6 time-selector">
  56. <input class="form-control" type="number" required min="1"
  57. max="31536000" data-ng-model="realm.minimumQuickLoginWait"
  58. id="minimumQuickLoginWait" name="minimumQuickLoginWait"/>
  59. <select class="form-control" name="minimumQuickLoginWaitUnit" data-ng-model="realm.minimumQuickLoginWaitUnit" >
  60. <option data-ng-selected="!realm.minimumQuickLoginWaitUnit" value="Seconds">{{:: 'seconds' | translate}}</option>
  61. <option value="Minutes">{{:: 'minutes' | translate}}</option>
  62. <option value="Hours">{{:: 'hours' | translate}}</option>
  63. <option value="Days">{{:: 'days' | translate}}</option>
  64. </select>
  65. </div>
  66. <kc-tooltip>{{:: 'min-quick-login-wait.tooltip' | translate}}</kc-tooltip>
  67. </div>
  68. <div class="form-group" data-ng-show="realm.bruteForceProtected && !realm.permanentLockout">
  69. <label class="col-md-2 control-label" for="maxFailureWait">{{:: 'max-wait' | translate}}</label>
  70. <div class="col-md-6 time-selector">
  71. <input class="form-control" type="number" required min="1"
  72. max="31536000" data-ng-model="realm.maxFailureWait"
  73. id="maxFailureWait" name="maxFailureWait"/>
  74. <select class="form-control" name="maxFailureWaitUnit" data-ng-model="realm.maxFailureWaitUnit" >
  75. <option data-ng-selected="!realm.maxFailureWaitUnit" value="Seconds">{{:: 'seconds' | translate}}</option>
  76. <option value="Minutes">{{:: 'minutes' | translate}}</option>
  77. <option value="Hours">{{:: 'hours' | translate}}</option>
  78. <option value="Days">{{:: 'days' | translate}}</option>
  79. </select>
  80. </div>
  81. <kc-tooltip>{{:: 'max-wait.tooltip' | translate}}</kc-tooltip>
  82. </div>
  83. <div class="form-group" data-ng-show="realm.bruteForceProtected && !realm.permanentLockout">
  84. <label class="col-md-2 control-label" for="maxDeltaTime">{{:: 'failure-reset-time' | translate}}</label>
  85. <div class="col-md-6 time-selector">
  86. <input class="form-control" type="number" required min="1"
  87. max="31536000" data-ng-model="realm.maxDeltaTime"
  88. id="maxDeltaTime" name="maxDeltaTime"/>
  89. <select class="form-control" name="maxDeltaTimeUnit" data-ng-model="realm.maxDeltaTimeUnit" >
  90. <option data-ng-selected="!realm.maxDeltaTimeUnit" value="Seconds">{{:: 'seconds' | translate}}</option>
  91. <option value="Minutes">{{:: 'minutes' | translate}}</option>
  92. <option value="Hours">{{:: 'hours' | translate}}</option>
  93. <option value="Days">{{:: 'days' | translate}}</option>
  94. </select>
  95. </div>
  96. <kc-tooltip>{{:: 'failure-reset-time.tooltip' | translate}}</kc-tooltip>
  97. </div>
  98. </fieldset>
  99. <div class="form-group" data-ng-show="access.manageRealm">
  100. <div class="col-md-10 col-md-offset-2">
  101. <button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
  102. <button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
  103. </div>
  104. </div>
  105. </form>
  106. </div>
  107. <kc-menu></kc-menu>