Configure a autenticação: obtendo uma sessão
A API SuiteCRM requer que um cliente tenha uma sessão ativa para consumir a API. As sessões são adquiridas por meio da autenticação no servidor OAuth 2, usando um dos tipos de concessão disponíveis.
Configurar Tipos de Concessão
Antes de consumir a API, você deve primeiro configurar o SuiteCRM para conceder acesso a um cliente. SuiteCRM 7.10 fornece um painel administrativo, através do qual você pode adicionar clientes e revogar tokens. Para configurar os tipos de concessão, selecione o painel de administração e selecione Clientes e Tokens OAuth2:
Tipos de bolsas disponíveis
Versão SuiteCRM | Tipo de bolsa disponível |
---|---|
7,10,0 | Concessão de senha. |
7.10.2 | Concessão de senha, concessão de credenciais de cliente. |
Concessão de credenciais de cliente
Uma concessão de credenciais de cliente é o mais simples de todos os tipos de concessão; essa concessão é usada para autenticar uma máquina ou serviço. Selecione o novo cliente de credenciais do cliente:
Comece configurando a concessão:
Campo | Descrição |
---|---|
Nome | Isso facilita a identificação do cliente. |
Segredo | Define o client_secret que é postado no servidor durante a autenticação. |
Confidencial | Um cliente confidencial é um aplicativo capaz de manter a senha de um cliente confidencial para o mundo. |
Usuário Associado | Limita o acesso do cliente ao CRM, associando o cliente aos privilégios de segurança de um usuário. |
O ‘segredo’ será criptografado quando salvo e não estará acessível mais tarde. O ‘id’ é criado pelo SuiteCRM e ficará visível assim que o cliente for salvo.
Autenticação com credenciais de cliente
POST / Api / access_token
Parâmetros necessários
Parâmetro | Valor |
---|---|
grant_type | client_credentials |
client_id | ExemploDeNomeDeCliente |
client_secret | ExemploDeSenhaSecreta |
Solicitação de exemplo (PHP):
$ch = curl_init();
$header = array(
'Content-type: application/vnd.api+json',
'Accept: application/vnd.api+json',
);
$postStr = json_encode(array(
'grant_type' => 'client_credentials',
'client_id' => '3D7f3fda97-d8e2-b9ad-eb89-5a2fe9b07650',
'client_secret' => 'client_secret',
));
$url = 'https://path-to-instance/Api/access_token';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$output = curl_exec($ch);
Resposta de exemplo:
{
“token_type”:”Bearer”,
“expires_in”:3600,
“access_token”:”eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjdkOTEyODNhMjc1NDdkNDRlMzNmOTc5ZjVmMGRkYzQwNzg1ZGY5NGFhMWI5MDVlZGNmMzg3NWIxYjJkZDMzNDljZWEyNjZhMTQ2OTE5OWIzIn0.eyJhdWQiOiJzdWl0ZWNybV9jbGllbnQiLCJqdGkiOiI3ZDkxMjgzYTI3NTQ3ZDQ0ZTMzZjk3OWY1ZjBkZGM0MDc4NWRmOTRhYTFiOTA1ZWRjZjM4NzViMWIyZGQzMzQ5Y2VhMjY2YTE0NjkxOTliMyIsImlhdCI6MTUxODE5NTEwMiwibmJmIjoxNTE4MTk1MTAyLCJleHAiOjE1MTgxOTg3MDIsInN1YiI6IjEiLCJzY29wZXMiOltdfQ.EVGuRisoMxSIZut3IWtgOYISw8lEFSZgCWYCwseLEfOuPJ8lRMYL4OZxhu9gxJoGF0nj3yc6SYDPxovrsoj8bMoX38h4krMMOHFQLoizU0k2wAceOjZG1tWKPhID7KPT4TwoCXbb7MqAsYtVPExH4li7gSphJ8wvcWbFdS5em89Ndtwqq3faFtIq6bv1R4t0x98HHuT7sweHUJU40K9WQjbAfIOk8f5Y6T2wassN2wMCBB8CC6eUxLi14n2D6khHvkYvtPbXLHpXSHZWvEhqhvjAeSR5MmMrAth9WDSWUx7alO-ppsZpi8U7-g9Be5p6MRatc25voyTI2iTYbx02FQ”,
}
token_type | the Bearer token value |
---|---|
expires_in | um número inteiro que representa o TTL do token de acesso. |
access_token | um JWT assinado com a chave privada do servidor de autorização. É necessário que você inclua isso nos cabeçalhos HTTP, cada vez que você fizer uma solicitação à API. |
Você pode armazenar o token do portador em um banco de dados e usá-lo em suas solicitações como esta:
Exemplo:
$header = array(
'Content-type: application/vnd.api+json',
'Accept: application/vnd.api+json',
'Authorization: Bearer ' . $your_saved_access_token
);
Concessão de senha
A concessão de senha é usada para permitir que os usuários façam login no SuiteCRM com um nome de usuário e uma senha. Selecione a nova senha do cliente:
Comece configurando a concessão:
Nome
Isso facilita a identificação do cliente.
Segredo
Define o client_secret que é postado no servidor durante a autenticação.
Confidencial
Um cliente confidencial é um aplicativo capaz de manter a senha de um cliente confidencial para o mundo.
O ‘segredo’ será criptografado quando salvo e não estará acessível mais tarde. O ‘id’ é criado pelo SuiteCRM e ficará visível assim que o cliente for salvo.
Autenticação com concessão de senha
POST /Api/access_token
Parâmetros necessários
Parâmetro | Valor |
---|---|
grant_type | Senha |
client_id | ExemploDeNomeDeCliente |
client_secret | ExemploDeSenhaSecreta |
username | Admin |
password | Secreto |
Altere os valores em negrito para corresponder aos detalhes de autenticação escolhidos.
Solicitação de exemplo (PHP):
$ch = curl_init();
$header = array(
'Content-type: application/vnd.api+json',
'Accept: application/vnd.api+json',
);
$postStr = json_encode(array(
'grant_type' => 'password',
'client_id' => '3D7f3fda97-d8e2-b9ad-eb89-5a2fe9b07650',
'client_secret' => 'client_secret',
'username' => 'admin',
'password' => 'admin',
));
$url = 'https://path-to-instance/Api/access_token';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$output = curl_exec($ch);
Resposta de exemplo:
{ "token_type":"Bearer", "expires_in":3600, "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjdkOTEyODNhMjc1NDdkNDRlMzNmOTc5ZjVmMGRkYzQwNzg1ZGY5NGFhMWI5MDVlZGNmMzg3NWIxYjJkZDMzNDljZWEyNjZhMTQ2OTE5OWIzIn0.eyJhdWQiOiJzdWl0ZWNybV9jbGllbnQiLCJqdGkiOiI3ZDkxMjgzYTI3NTQ3ZDQ0ZTMzZjk3OWY1ZjBkZGM0MDc4NWRmOTRhYTFiOTA1ZWRjZjM4NzViMWIyZGQzMzQ5Y2VhMjY2YTE0NjkxOTliMyIsImlhdCI6MTUxODE5NTEwMiwibmJmIjoxNTE4MTk1MTAyLCJleHAiOjE1MTgxOTg3MDIsInN1YiI6IjEiLCJzY29wZXMiOltdfQ.EVGuRisoMxSIZut3IWtgOYISw8lEFSZgCWYCwseLEfOuPJ8lRMYL4OZxhu9gxJoGF0nj3yc6SYDPxovrsoj8bMoX38h4krMMOHFQLoizU0k2wAceOjZG1tWKPhID7KPT4TwoCXbb7MqAsYtVPExH4li7gSphJ8wvcWbFdS5em89Ndtwqq3faFtIq6bv1R4t0x98HHuT7sweHUJU40K9WQjbAfIOk8f5Y6T2wassN2wMCBB8CC6eUxLi14n2D6khHvkYvtPbXLHpXSHZWvEhqhvjAeSR5MmMrAth9WDSWUx7alO-ppsZpi8U7-g9Be5p6MRatc25voyTI2iTYbx02FQ", "refresh_token":"def50200d2fb757e4c01c333e96c827712dfd8f3e2c797db3e4e42734c8b4e7cba88a2dd8a9ce607358d634a51cadd7fa980d5acd692ab2c7a7da1d7a7f8246b22faf151dc11a758f9d8ea0b9aa3553f3cfd3751a927399ab964f219d086d36151d0f39c93aef4a846287e8467acea3dfde0bd2ac055ea7825dfb75aa5b8a084752de6d3976438631c3e539156a26bc10d0b7f057c092fce354bb10ff7ac2ab5fe6fd7af3ec7fa2599ec0f1e581837a6ca2441a80c01d997dac298e1f74573ac900dd4547d7a2a2807e9fb25438486c38f25be55d19cb8d72634d77c0a8dfaec80901c01745579d0f3822c717df21403440473c86277dc5590ce18acdb1222c1b95b516f3554c8b59255446bc15b457fdc17d5dcc0f06f7b2252581c810ca72b51618f820dbb2f414ea147add2658f8fbd5df20820843f98c22252dcffe127e6adb4a4cbe89ab0340f7ebe8d8177ef382569e2aa4a54d434adb797c5337bfdfffe27bd8d5cf4714054d4aef2372472ebb4" }
token_type | the Bearer token value |
---|---|
expires_in | um número inteiro que representa o TTL do token de acesso. |
access_token | um JWT assinado com a chave privada do servidor de autorização. É necessário que você inclua isso nos cabeçalhos HTTP, cada vez que você fizer uma solicitação à API. |
refresh_token | uma carga criptografada que pode ser usada para atualizar o token de acesso quando ele expira. |
um número inteiro que representa o TTL do token de acesso
Exemplo:
$header = array(
‘Content-type: application/vnd.api+json’,
‘Accept: application/vnd.api+json’,
‘Authorization: Bearer ‘ . $your_saved_access_token
);