Поставщики служб безопасности
Интерфейс поставщика служб безопасности (SSPI) предоставляет универсальный стандартный отраслевой интерфейс для защищенных распределенных приложений. API однорангового графирования предоставляет приложениям способ защиты ссылок в графе путем указания поставщика служб безопасности (SSP), который представляет собой библиотеку DLL, реализующую интерфейс SSPI. Приложение указывает поставщика общих служб при создании графа с помощью PeerGraphCreate.
Дополнительные сведения о создании собственного поставщика общих служб см. по ссылке на документацию по SSPI в списке ссылок ссылок на графирование.
Рекомендации по программированию для реализации поставщика общих служб
Будьте внимательны при вызове приложения из поставщика общих служб. К обратным вызовам поставщика общих служб относятся следующие рекомендации.
- Обратные вызовы не должны занимать много времени, так как они вызываются во время согласования подключений. Если для установки подключения требуется слишком много времени, его можно удалить.
- API однорангового графирования динамически корректирует значения времени ожидания подключения на основе фактической нагрузки системы. Наименьшее значение времени ожидания — 20 секунд.
- Чтобы избежать потенциальных взаимоблокировок, приложение не должно получать доступ к одноранговой базе данных графов из обратного вызова. Если приложению требуется информация из графовой базы данных, приложение может кэшировать необходимые сведения, а затем ссылаться на кэш из обратного вызова. Кэширование также может помочь сократить время подключения.
При вызове точек входа SSPI инфраструктура однорангового графирования требует определенных значений для определенных параметров пяти (5) функций. Вы не можете изменить эти значения параметров, предоставленные поставщику общих служб, и поставщик общих служб может либо игнорировать значения для пяти параметров, либо обрабатывать их корректно. В следующем списке указаны эти конкретные параметры и обязательные значения:
-
Укажите один (1) для параметра pvGetKeyArgument . Задает значение NULL для параметров pszPrincipal, pvLogonID и pGetKeyFn .
-
Укажите следующие флаги для параметра fContextReq : ISC_REQ_MUTUAL_AUTH | ISC_REQ_CONFIDENTIALITY | ISC_REQ_INTEGRITY | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_STREAM | ISC_REQ_ALLOCATE_MEMORY.
-
Укажите следующие флаги для параметра fContextReq : ASC_REQ_MUTUAL_AUTH | ASC_REQ_CONFIDENTIALITY | ASC_REQ_INTEGRITY | ASC_REQ_SEQUENCE_DETECT | ASC_REQ_STREAM | ASC_REQ_ALLOCATE_MEMORY.
-
Укажите ноль (0) для параметров fQOP и MessageSeqNo .
-
Укажите ноль (0) для параметра MessageSeqNo и NULL для параметра pfQOP .
При вызове EncryptMessage в структуре SecBufferDesc передаются четыре буфера. В следующей таблице указан порядок передачи буферов.
Структура поставщика общих служб | Описание |
---|---|
SECBUFFER_STREAM_HEADER | Содержит данные заголовка безопасности. Размер буфера заголовков можно получить путем вызова QueryContextAttributes и указания атрибута SECPKG_ATTR_STREAM_SIZES . |
SECBUFFER_DATA | Содержит зашифрованное сообщение в виде обычного текста. |
SECBUFFER_STREAM_TRAILER | Содержит данные трейлера безопасности. Размер буфера заголовков можно получить путем вызова QueryContextAttributes и указания атрибута SECPKG_ATTR_STREAM_SIZES . |
SECBUFFER_EMPTY | Не инициализировано. Размер этого буфера равен нулю (0). |
При вызове DecryptMessage API однорангового графирования передает ровно четыре структуры SecBuffer . Первый буфер SECBUFFER_DATA и содержит зашифрованное сообщение. Остальные буферы используются для вывода и имеют тип SECBUFFER_EMPTY.
Поставщик общих служб должен поддерживать шифрование и расшифровку буферов данных пользователей размером 16 КБ и более в одном вызове.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по