Partilhar via


Instruções de inscrição de exemplo

Este artigo mostra os passos necessários para efetuar uma inscrição self-service de smart card virtual. Mostra um pedido aprovado automaticamente com um PIN definido pelo utilizador.

  1. O cliente autentica o utilizador e, em seguida, pede uma lista de modelos de perfil para os quais o utilizador autenticado pode inscrever-se:

    GET /CertificateManagement/api/v1.0/profiletemplates.
    
  2. O cliente apresenta a lista resultante ao utilizador. O utilizador seleciona um modelo de perfil vSC (smart card virtual) com o nome "Virtual Smartcard VPN" e UUID 97CD65FA-AF4B-4587-9309-0DD6BFD8B4E1.

  3. O cliente obtém a política de inscrição do modelo de perfil selecionado com o UUID devolvido no passo anterior:

    GET /CertificateManagement/api/v1.0/profiletemplates/97CD65FA-AF4B-4587-9309-0DD6BFD8B4E1/policies/enroll
    
  4. O cliente analisa o campo DataCollection na política devolvida, observando que é apresentado um único item de recolha de dados intitulado "Motivo do Pedido". O cliente também nota que o sinalizador collectComments está definido como falso, pelo que não pede ao utilizador para introduzir nenhum.

  5. Depois de o utilizador ter introduzido o motivo para exigir os certificados, o cliente cria um pedido:

    POST /CertificateManagement/api/v1.0/requests
    
    {
        "datacollection":"[{“Request Reason”:”Need VPN Certs”}]",
        "type":"Enroll",
        "profiletemplateuuid":"97CD65FA-AF4B-4587-9309-0DD6BFD8B4E1",
        "comment":""
    }
    
  6. O servidor cria o pedido com êxito e devolve o URI do pedido ao cliente: /CertificateManagement/api/v1.0/requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5.

  7. O cliente obtém o objeto de pedido ao chamar o URI devolvido:

    GET /CertificateManagement/api/v1.0/requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5
    
  8. O cliente verifica se a propriedade state no pedido está definida como aprovada. A execução do pedido pode começar.

  9. O cliente examina o pedido para ver se já existe um smart card associado ao pedido ao analisar o conteúdo do parâmetro newsmartcarduuid .

  10. Uma vez que contém apenas um GUID vazio, o cliente tem de utilizar um cartão existente que ainda não esteja a ser utilizado pelo CM do MIM ou criar um se o modelo de perfil estiver a ser configurado para smart cards virtuais.

  11. Uma vez que este último foi indicado ao cliente através da consulta inicial para modelos de perfil inscrições (passo 1), o cliente tem agora de criar um dispositivo smart card virtual.

  12. O cliente obtém a política de smart card a partir do modelo de perfil. Utiliza o UUID do modelo selecionado no passo 3:

    GET /CertificateManagement/api/v1.0/profiletemplates/97CD65FA-AF4B-4587-9309-0DD6BFD8B4E1/configuration/smartcards
    
  13. A política de smart card contém a chave de administrador predefinida para o cartão na propriedade DefaultAdminKeyHex . Ao criar o smart card, o cliente tem de definir a chave de administração inicial do smart card para esta chave.

  14. Após a criação do dispositivo smart card, o cliente tem de atribuí-lo ao pedido:

    POST /CertificateManagement/api/v1.0/smartcards
    
    {
        "requestid":" C6BAD97C-F97F-4920-8947-BE980C98C6B5",
        "cardid":"23CADD5F-020D-4C3B-A5CA-307B7A06F9C9",
    }
    
  15. O servidor responde ao cliente com um URI para o objeto de smart card recentemente criado: api/v1.0/smartcards/D700D97C-F91F-4930-8947-BE980C98A644.

  16. O cliente obtém o objeto de smart card:

    GET /CertificateManagement/api/v1.0/smartcards/ D700D97C-F91F-4930-8947-BE980C98A644
    
  17. Ao verificar o valor do sinalizador diversificaçãoadminkey na política de smart card obtida no passo 12, o cliente sabe que tem de diversificar a chave de administração.

  18. O cliente obtém a chave de administração proposta:

    GET /CertificateManagement/api/v1.0/requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5/smartcards/D700D97C-F91F-4930-8947-BE980C98A644/diversifiedkey?cardid=23CADD5F-020D-4C3B-A5CA-307B7A06F9C9
    
  19. O cliente tem de se autenticar no cartão como administrador para definir a chave de administrador. Para tal, o cliente solicita um desafio de autenticação do smart card e submete-o ao servidor:

    GET /CertificateManagement/api/v1.0/requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5/smartcards/D700D97C-F91F-4930-8947-BE980C98A644/authenticationresponse?cardid=23CADD5F-020D-4C3B-A5CA-307B7A06F9C9&challenge=CFAA62118BBD25&diversified=false
    

    O servidor envia a resposta de desafio no corpo de resposta HTTP. Localize a cadeia de desafio hexadecimal, converta-a em base64 e transmita-a como um parâmetro no URL. O URL devolve outra resposta, que tem de ser convertida novamente para o formato hexadecimal.

  20. O servidor envia a resposta de desafio no corpo de resposta HTTP e o cliente utiliza-a para diversificar a chave de administração.

  21. O cliente nota que o utilizador tem de fornecer o pin pretendido ao inspecionar o campo UserPinOption na política de smart card.

  22. Depois de o utilizador ter introduzido o pin pretendido numa caixa de diálogo, o cliente efetua uma autenticação de resposta de desafio, conforme descrito no passo 19, sendo que a única diferença é que o sinalizador diversificado deve agora ser definido como verdadeiro:

    GET /CertificateManagement/api/v1.0/ requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5/smartcards/D700D97C-F91F-4930-8947-BE980C98A644/authenticationresponse?cardid=23CADD5F-020D-4C3B-A5CA-307B7A06F9C9&challenge=CFAA62118BBD25&diversified=true
    
  23. O cliente utiliza a resposta recebida do servidor para definir o pin do utilizador pretendido.

  24. O cliente está agora pronto para gerar pedidos de certificado. Consulta os parâmetros de geração de certificados do modelo de perfil para determinar como as chaves/pedidos devem ser gerados.

    GET /CertificateManagement/api/v1.0/requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5/certificaterequestgenerationoptions.
    
  25. O servidor responde com um único objeto CertificateRequestGenerationOptions serializado JSON. O objeto inclui parâmetros para a exportabilidade da chave, nome amigável do certificado, algoritmo hash, algoritmo de chave, tamanho da chave, etc. O cliente utiliza estes parâmetros para gerar um pedido de certificado.

  26. O pedido de certificado único é submetido para o servidor. O cliente pode especificar adicionalmente uma palavra-passe PFX que deve ser utilizada para desencriptar quaisquer blobs PFX quando o modelo de certificado especifica arquivar os certificados na AC, ou seja, a AC gera o par de chaves e, em seguida, envia-o para o cliente. O cliente também pode optar por adicionar alguns comentários.

    POST /CertificateManagement/api/v1.0/requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5/certificatedata
    
    {
       "pfxpassword":"",
       "certificaterequests":[
           "MIIDZDC…”
        ]
    }   
    
  27. Após alguns segundos, o servidor responde com um único objeto Microsoft.Clm.Shared.Certificate serializado em JSON. Ao verificar o sinalizador isPkcs7 , o cliente fica a saber que esta resposta não é um blob PFX. O cliente extrai o blob por base64 descodificando a cadeia pkcs7 e instala-a.

  28. O cliente marca o pedido como concluído.

    PUT /CertificateManagement/api/v1.0/requests/C6BAD97C-F97F-4920-8947-BE980C98C6B5
    
    {
        "status":"Completed"
    }