> 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).

# Inscrição via API

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

{% hint style="warning" %}
Apenas SCEPman Enterprise Edition
{% endhint %}

O SCEPman apresenta uma API REST para registar certificados. Esta é uma alternativa aos endpoints SCEP, que exigem o estilo de autenticação 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 de aplicação

Criar um novo *Registo de aplicação* que descreve o seu caso de utilização. A sua aplicação irá autenticar-se como esta aplicação junto do SCEPman.
{% endstep %}

{% step %}

### Permissões da API

#### CSR.Request.Db

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

Exemplo:&#x20;

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

*ServicePrincipalId*

O ***ID do objeto*** do complementar ***Aplicação empresarial*** do Registo de 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 da API* e adicionar uma permissão a partir das *permissões que a sua organização utiliza*. Atribua a função ***CSR.Request.Db*** permissão de ***SCEPman-api*** como uma *permissão de aplicação*.

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

*Service Principals* também exigirão a permissão 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 da seguinte forma:

<figure><img src="/files/c6645f9ba9b45010fc1fdb2ba70d1a99a25e4289" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Segredo do cliente

Crie um segredo do cliente em "Certificados & Segredos". 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 a renovação do certificado*

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

<figure><img src="/files/e31b8e4f8eba4e835913ea2e756ef55d5ee35fd2" alt=""><figcaption></figcaption></figure>

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

#### Variáveis de ambiente

Para poder utilizar este cenário, tem de definir as seguintes variáveis de ambiente no SCEPman app service.

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

*Necessário para o registo e a renovação de certificados*

Defina esta variável como ***true*** para permitir a validação de pedidos de assinatura de certificados (CSRs).

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

*Necessário para a renovação do certificado*

Defina esta variável como ***true*** para permitir renovações de certificados.

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

*Necessário para a renovação do certificado*

Defina esta variável como uma lista de tipos de certificados separada por vírgulas que pretende اجازه renovações. Consulte a documentação da variável ligada para obter uma lista dos possíveis tipos de certificados.

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

## Registo de certificados

Depois de ter preparado os pré-requisitos, pode enviar um 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 os possa listar e revogar convenientemente através do componente Certificate Master.

Um método conveniente para enviar esse pedido é o nosso módulo PowerShell SCEPmanClient:

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

## Outros Exemplos

Consulte a nossa [Biblioteca de Exemplos Open Source no GitHub](https://github.com/scepman/csr-request) para descobrir 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.
