Отключение безопасности активации
Обычно активация использует параметры безопасности по умолчанию. Однако вы можете управлять безопасностью активации, указав структуру COAUTHINFO, которая является членом структуры COSERVERINFO, передаваемой функциям активации. Если клиент задает уровень проверки подлинности RPC_C_AUTHN_LEVEL_NONE в структуре COAUTHINFO , проверка подлинности не выполняется. В противном случае выполняется попытка безопасной активации и при сбое проверки подлинности активация завершается ошибкой.
Если клиент не указывает явную структуру COAUTHINFO и вместо этого задает указатель на NULL, COM попытается выполнить проверку подлинности клиента. Если он не может пройти проверку подлинности клиента, COM проверка дескриптор безопасности запуска, чтобы узнать, существует ли значение NULL DACL или ACL, разрешающее доступ ко всем. Если этот проверка выполнен успешно, сервер запускается. Таким образом, даже если клиент не указывает структуру COAUTHINFO, небезопасная активация может происходить, когда сервер разрешает его.
Примечание.
Чтобы разрешить пользователям, не прошедшим проверку подлинности, запускать com-приложение, роли приложения должны включать анонимного пользователя. Начиная с Windows Server 2003, по умолчанию анонимный пользователь не входит в группу "Все".
Почему клиент хочет явно отключить безопасность активации, даже если небезопасная активация в конечном итоге произойдет, если сервер разрешает его? Так как явное отключение безопасности активации повышает производительность, если клиент не хочет или нуждается в проверка безопасности.
Для явного отключения безопасности активации необходимо выполнить следующие действия.
- Клиент должен указать уровень проверки подлинности RPC_C_AUTHN_LEVEL_NONE в структуре COAUTHINFO, которая является членом структуры COSERVERINFO, предоставленной функции активации.
- Клиент должен указать уровень олицетворения RPC_C_IMP_LEVEL_IMPERSONATE в структуре COAUTHINFO, являющейся членом структуры COSERVERINFO, предоставленной функции активации. Если это значение не передано, вы получите RPC_S_SERVER_UNAVAILABLE.
- Сервер должен указать все для разрешений запуска по умолчанию. Рекомендуемый способ выполнения этой задачи — использовать Dcomcnfg.exe следующим образом:
- Запустите файл Dcomcnfg.exe.
- На странице "Приложения" выберите приложение, представляющее сервер. Нажмите кнопку "Свойства" (или дважды щелкните выбранное приложение).
- На странице свойств "Безопасность" нажмите кнопку "Использовать настраиваемые разрешения запуска".
- Нажмите кнопку "Изменить" в области "Разрешения запуска".
- В диалоговом окне "Разрешения на значение реестра" нажмите кнопку "Добавить".
- Выберите запись для всех пользователей в списке.
- В списке "Тип доступа" нажмите кнопку "Разрешить запуск".
- Нажмите кнопку ОК .
Примечание.
В Windows Server 2003 возможность проверки подлинности для системного приложения COM+ включает значение EOAC_DISABLE_AAA. Это значение, которое отключает активацию от имени активации (AAA), используется в вызове CoInitializeSecurity при запуске системного приложения. Настройка возможности проверки подлинности для EOAC_DISABLE_AAA позволяет приложению, работающему под привилегированной учетной записью (например, LocalSystem), предотвратить использование удостоверения для запуска ненадежных компонентов.
См. также