Раздел 10. Модули Апача Пункты: 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 203 204 205 206 207 208 209 210 211 212 213 RU EN Пункт 108. Модуль Apache mod_authn_socache Поддерживает кеш учетных данных для проверки подлинности, поэтому для каждого аутентифицированного запроса не требуется новый внутренний поиск. Кэширование аутентификацииНекоторые пользователи более тяжелой аутентификации, такой как поиск в базе данных SQL ( mod_authn_socache обеспечивает решение этой проблемы, поддерживая кеш учетных данных аутентификации. ПрименениеКэш аутентификации следует использовать там, где поиск аутентификации создает значительную нагрузку на сервер, серверную часть или сеть. Аутентификация по файлу ( Основные правила кэширования для провайдера:
Простой пример использования для ускорения #AuthnCacheSOCache является необязательным. Если указано, это для всего сервера AuthnCacheSOCache dbm <Каталог "/usr/www/myhost/private"> Основной тип авторизации AuthName "Пример кэшированной аутентификации" База данных AuthBasicProvider AuthDBDUserPWQuery "ВЫБЕРИТЕ пароль ОТ AUTHN WHERE user = %s" AuthnCacheProvideFor dbd Требовать действительного пользователя #Необязательный AuthnCacheContext dbd-authn-пример </Каталог> Кэширование с помощью пользовательских модулейРазработчики модулей должны учитывать, что их модули должны быть включены для кэширования с помощью mod_authn_socache. Единственная необязательная функция API ap_authn_cache_store предназначена для кэширования учетных данных, которые провайдер только что нашел или сгенерировал. Примеры использования доступны в версии r957072, в которой три провайдера аутентификации включены для кэширования. Директива AuthnCacheContext
Эта директива указывает строку, которая будет использоваться вместе с предоставленным именем пользователя (и областью в случае дайджест-аутентификации) при создании ключа кэша. Это служит для устранения неоднозначности идентичных имен пользователей, обслуживающих разные области аутентификации на сервере. Два специальных значения для этого: directory , который использует контекст каталога запроса в виде строки, и server , который использует имя виртуального хоста. По умолчанию используется directory , что также является наиболее консервативной настройкой. Это, вероятно, будет менее оптимальным, поскольку (например) приводит к тому, что $app-base , $app-base/images ,
$app-base/scripts и $app-base/media имеют свой собственный отдельный ключ кэша. Лучшей политикой является указание имени
Контексты могут совместно использоваться в разных областях сервера, где используются общие учетные данные. Однако это может стать вектором межсайтовых или межприложенных нарушений безопасности, поэтому эта директива не разрешена в контексте .htaccess . Директива AuthnCacheEnable
Эта директива обычно не требуется: она подразумевается, если кеширование аутентификации включено где-либо в apache2.conf . Однако, если он не включен где-либо в apache2.conf , он по умолчанию не будет инициализирован и поэтому недоступен в контексте .htaccess . Эта директива гарантирует, что он будет инициализирован, чтобы его можно было использовать в .htaccess . Директива AuthnCacheProvideFor
Эта директива указывает поставщика или поставщиков аутентификации для кэширования. Учетные данные, найденные поставщиком, не указанным в директиве AuthnCacheProvideFor, не будут кэшироваться. Например, чтобы кэшировать учетные данные, найденные AuthnCacheProvideДля dbd myprovider Директива AuthnCacheSOCache
Это общесерверный параметр для выбора поставщика кэша общих объектов, за которым следуют необязательные аргументы для этого поставщика. Некоторые возможные значения для provider-name : «dbm», «dc», «memcache» или «shmcb», каждое из которых зависит от загружаемого соответствующего модуля. Если не установлено, будет использоваться значение по умолчанию для вашей платформы. Директива AuthnCacheTimeout
Кэширование данных аутентификации может быть проблемой безопасности, хотя краткосрочное кэширование вряд ли будет проблемой. Как правило, хорошим решением является кэширование учетных данных на время, необходимое для снижения нагрузки на серверную часть, но не дольше, хотя, если изменения ваших пользователей и паролей происходят нечасто, вам может подойти более длительный тайм-аут. Значение по умолчанию 300 секунд (5 минут) является осторожным и достаточным для снижения нагрузки на серверную часть, такую как dbd (запросы к базе данных SQL). Это не следует путать с тайм-аутом сеанса, который является совершенно отдельной проблемой. Тем не менее, вы можете проверить свое программное обеспечение для управления сеансом на предмет того, могут ли кэшированные учетные данные «случайно» продлить сеанс, и иметь это в виду при установке тайм-аута. Пункты: 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 203 204 205 206 207 208 209 210 211 212 213 |