> For the complete documentation index, see [llms.txt](https://docs.scepman.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scepman.com/pt/gestao-de-certificados/api-certificates/api-enrollment.md).

# Registo via API

Utilize esta API REST utilizando Microsoft Identities para autenticação para registar certificados, como alternativa aos endpoints SCEP que requerem autenticação ao estilo SCEP.

{% hint style="info" %}
Este recurso requer a versão **2.3.689** ou superior.
{% endhint %}

{% hint style="warning" %}
apenas na Edição Enterprise do SCEPman
{% endhint %}

O SCEPman disponibiliza uma API REST para inscrever certificados. Esta é uma alternativa aos endpoints SCEP que exigem autenticação no estilo SCEP, enquanto a API REST usa Identidades Microsoft para autenticação. O protocolo também é muito mais simples do que o SCEP.

## Pré-requisitos

### 1. Service Principal

{% stepper %}
{% step %}

### Registo da Aplicação

Crie um novo *Registo da Aplicação* que descreve o seu caso de utilização. A sua aplicação autenticar-se-á como esta aplicação contra SCEPman.
{% endstep %}

{% step %}

### Permissões de API

#### CSR.Request.Db

Atribua as permissões necessárias executando o **Register-SCEPmanApiClient** cmdlet do módulo PowerShell do SCEPman.

Exemplo:

```powershell
Register-SCEPmanApiClient -ServicePrincipalId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```

*ServicePrincipalId*

O ***ID do objeto*** da complementar ***Aplicação Empresarial*** do Registo da Aplicação que criámos no passo anterior. Note que isto não se refere à Aplicação Empresarial normalmente denominada SCEPman-api, que identifica o próprio SCEPman.

Para atribuir manualmente esta permissão, pode navegar para *Permissões de API* e adicionar uma permissão a partir das *permissões que a sua organização utiliza*. Atribua a ***CSR.Request.Db*** permissão de ***SCEPman-api*** como uma *permissão de aplicação*.

#### Application.Read.All (Opcional)

*Service Principals* também exigirá a permissão do Graph ***Application.Read.All*** para permitir a obtenção automática do âmbito da API do SCEPman para autenticação.

A permissão pode ser adicionada manualmente assim:

<figure><img src="https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FDcTPqAoP7o03QirKhyMH%2Fimage.png?alt=media&amp;token=7233bb9a-a9c1-49aa-9cbc-21f90931c59c" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Segredo do cliente

Crie um segredo do cliente em "Certificates & Secrets". O segredo do cliente será usado como palavra-passe para autenticar a aplicação mais tarde.
{% endstep %}
{% endstepper %}

### 2. Definições do App Service

#### Configuração

*Necessário para renovação de certificado*

Configure o seu SCEPman App Service para aceitar certificados de cliente mTLS. No painel Configuration da seção Settings, verifique se o Client certificate mode em Incoming client certificates está definido como ***Utilizador interativo opcional***.

<figure><img src="https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F9UeFFxwefnV8Cb7Zz14u%2Fimage.png?alt=media&amp;token=210ea9b7-ecd5-4b2b-9641-22447246e718" alt=""><figcaption></figcaption></figure>

Não defina o Client certificate mode como Require ou Allow, pois isso quebraria o funcionamento normal do SCEPman nos endpoints SCEP!

#### Variáveis de ambiente

Para usar este cenário, você deve definir as seguintes Variáveis de Ambiente no serviço de aplicativo SCEPman.

#### [AppConfig:DbCSRValidation:Enabled](https://docs.scepman.com/advanced-configuration/application-settings/dbcsr-validation#appconfig-dbcsrvalidation-enabled)

*Necessário para inscrição e renovação de certificado*

Defina esta variável como ***true*** para ativar a validação de solicitações de assinatura de certificado (CSRs).

#### [AppConfig:DbCSRValidation:AllowRenewals](https://docs.scepman.com/advanced-configuration/application-settings/dbcsr-validation#appconfig-dbcsrvalidation-allowrenewals)

*Necessário para renovação de certificado*

Defina esta variável como ***true*** para ativar renovações de certificado.

#### [AppConfig:DbCSRValidation:ReenrollmentAllowedCertificateTypes](https://docs.scepman.com/advanced-configuration/application-settings/dbcsr-validation#appconfig-dbcsrvalidation-reenrollmentallowedcertificatetypes)

*Necessário para renovação de certificado*

Defina esta variável como uma lista separada por vírgulas de tipos de certificado para os quais você deseja permitir a renovação. Consulte a documentação da variável vinculada para ver uma lista de tipos de certificado possíveis.

Exemplo: ***Static,IntuneUser,IntuneDevice***

## Inscrição de certificados

Depois de preparar os pré-requisitos, pode fazer POST de um PKCS#10/CMS para o seu SCEPman com o caminho HTTP *api/csr*. A resposta HTTP será o certificado recém-emitido em codificação DER.

O SCEPman armazenará automaticamente todos os certificados emitidos na sua Storage Account, para que possa listá-los e revogá-los facilmente através do componente Certificate Master.

Um método conveniente para enviar esses pedidos é o nosso módulo PowerShell SCEPmanClient:

{% content-ref url="/pages/2aae8b86d34060f6dfbcb6513b3b49e3570aadb3" %}
[SCEPmanClient](/pt/gestao-de-certificados/api-certificates/scepmanclient.md)
{% endcontent-ref %}

## Outros exemplos

Veja a nossa [biblioteca de exemplos de código aberto no GitHub](https://github.com/scepman/csr-request) para saber como usar a API REST do SCEPman.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.scepman.com/pt/gestao-de-certificados/api-certificates/api-enrollment.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
