Prestadores de Serviços de Segurança
A Interface do Provedor de Serviços de Segurança (SSPI) fornece uma interface universal padrão do setor para aplicativos distribuídos seguros. A API de Peer Graphing fornece uma maneira para os aplicativos protegerem links em um gráfico especificando um SSP (Security Service Provider), que é uma DLL que implementa uma interface SSPI. Um aplicativo especifica um SSP quando cria um gráfico usando PeerGraphCreate.
Para obter mais informações sobre como criar seu próprio SSP, consulte o link de documentação do SSPI na lista de Graphics Reference Links.
Considerações de programação para implementar um SSP
Tenha cuidado ao chamar um aplicativo de dentro de um SSP. As seguintes considerações se aplicam aos retornos de chamada do SSP:
- Os retornos de chamada não devem demorar muito tempo para retornar, porque eles são chamados durante a negociação de conexão. Se demorar muito tempo para que uma conexão seja estabelecida, a conexão pode ser descartada.
- A API de gráficos de pares ajusta dinamicamente os valores de tempo limite de conexão, com base na carga real de um sistema. O menor valor de tempo limite é de 20 segundos.
- Para evitar possíveis situações de bloqueio, um aplicativo não deve acessar o banco de dados de gráficos de pares a partir de um retorno de chamada. Se um aplicativo exigir informações do banco de dados gráfico, o aplicativo poderá armazenar em cache as informações necessárias e, em seguida, fazer referência ao cache de dentro do retorno de chamada. O cache também pode ajudar a diminuir o tempo de conexão.
Ao chamar os pontos de entrada SSPI, a infraestrutura de gráficos de pares requer valores específicos para parâmetros específicos de cinco (5) funções. Não é possível alterar esses valores de parâmetro fornecidos ao SSP, e o SSP pode ignorar os valores dos cinco parâmetros ou manipulá-los normalmente. A lista a seguir identifica esses parâmetros específicos e valores necessários:
-
Especifique um (1) para o pvGetKeyArgument parâmetro. Especifica NULL para os pszPrincipal, pvLogonIDe pGetKeyFn parâmetros.
-
Especifique os seguintes sinalizadores para o parâmetro fContextReq: ISC_REQ_MUTUAL_AUTH | ISC_REQ_CONFIDENTIALITY | ISC_REQ_INTEGRITY | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_STREAM | ISC_REQ_ALLOCATE_MEMORY.
-
Especifique os seguintes sinalizadores para o parâmetro fContextReq: ASC_REQ_MUTUAL_AUTH | ASC_REQ_CONFIDENTIALITY | ASC_REQ_INTEGRITY | ASC_REQ_SEQUENCE_DETECT | ASC_REQ_STREAM | ASC_REQ_ALLOCATE_MEMORY.
-
Especifique zero (0) para o fQOP e parâmetros MessageSeqNo.
-
Especifique zero (0) para o parâmetro MessageSeqNo e NULL para o parâmetro pfQOP.
Ao chamar EncryptMessage, quatro buffers são passados na estrutura SecBufferDesc. A tabela a seguir identifica a ordem de passagem dos buffers.
Ao chamar DecryptMessage, a API de Peer Graphing passa exatamente quatro estruturas de SecBuffer. O primeiro buffer é SECBUFFER_DATAe contém uma mensagem criptografada. Os buffers restantes são usados para saída e são do tipo SECBUFFER_EMPTY.
O SSP precisa oferecer suporte à criptografia e descriptografia de buffers de dados do usuário com tamanhos de 16K ou mais em uma chamada.