Seguridad
Por defecto Searchpe no incluye ningún tipo de seguridad; es decir, puedes consumir sus servicios REST sin autenticación ni autorización.
- Javascript
- Java
- PHP
fetch('http://localhost:8180/api/contribuyentes/{numeroDocumento}', {
method: "GET"
})
.then(response => console.log(response));
.catch(error => console.log(error));
HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
.setUri("http://localhost:8180/api/contribuyentes/{numeroDocumento}")
.setHeader("Content-type", "application/json")
.build();
client.execute(request);
$httpClient = HttpClient::create();
$response = $httpClient->request('GET', 'http://localhost:8180/api/contribuyentes/{numeroDocumento}', [
'headers' => [
'Content-type' => 'application/json',
'Authorization' => 'Basic bXlVc2VybmFtZTpteVBhc3N3b3Jk'
]
]);
Basic Auth
Esta capa de seguridad está basada en Quarkus - Security built in Authentication
Searchpe puede activar authenticación y autorización a travéz del paso de una variable de entorno:
Variable de entorno | valor |
---|---|
QUARKUS_PROFILE | prod,basic |
- Si usas Windows utiliza Environment variables on Windows
- Si usas Linux utiliza los archivos
~/.bashrc
o~/.profile
para incluir la lineaQUARKUS_PROFILE=prod,basic
- Si utilizas Contenedores, añade la variable de entorno
QUARKUS_PROFILE=prod,basic
.
Necesitas reiniciar Searchpe para que tus cambios tomen efecto. Una vez reinicado Searchpe tendrás HTTP Basic Access Authentication habilitado.
A partir de ahora todas tus peticiones HTTP deberán ser autenticadas y autorizadas por medio de la cabecera HTTP Authorization
, por ejemplo:
- Javascript
- Java
- PHP
fetch('http://localhost:8180/api/contribuyentes/{numeroDocumento}', {
method: "GET",
headers: {
"Content-type": "application/json",
"Authorization": "Basic bXlVc2VybmFtZTpteVBhc3N3b3Jk",
}
})
.then(response => console.log(response));
.catch(error => console.log(error));
HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
.setUri("http://localhost:8180/api/contribuyentes/{numeroDocumento}")
.setHeader("Content-type", "application/json")
.setHeader("Authorization", "Basic bXlVc2VybmFtZTpteVBhc3N3b3Jk")
.build();
client.execute(request);
$httpClient = HttpClient::create();
$response = $httpClient->request('GET', 'http://localhost:8180/api/contribuyentes/{numeroDocumento}', [
'headers' => [
'Content-type' => 'application/json',
'Authorization' => 'Basic bXlVc2VybmFtZTpteVBhc3N3b3Jk'
]
]);
Authorization: Basic <credentials>
: <credentials>
contiene el usuario y contraseña separados por :
y cifrado en Base 64. Por ejemplo, si el usuario es myUsername
y la contraseña es myPassword
entonces:
- Unir el usuario y contraseña separados por
:
. Tomando nuestro ejemplomyUsername:myPassword
- Cifrar
myUsername:myPassword
en Base64. Tomando nuestro ejemplobXlVc2VybmFtZTpteVBhc3N3b3Jk
- Consumir Searchpe incluyendo el HTTP Header
Authorization: Basic bXlVc2VybmFtZTpteVBhc3N3b3Jk
OIDC: Keycloak
Esta capa de seguridad está basada en Quarkus - OIDC
Searchpe puede ser integrado con Keycloak. Para activar authenticación y autorización OIDC configura las siguientes variable de entorno:
Variable de entorno | valor |
---|---|
QUARKUS_PROFILE | prod,oidc |
QUARKUS_OIDC_AUTH_SERVER_URL | URL del servidor, por ejemplo: http://localhost:8080/auth/realms/openubl |
QUARKUS_OIDC_CLIENT_ID | ID del cliente Keycloak, por ejemplo searchpe |
QUARKUS_OIDC_CREDENTIALS_SECRET | Secret del cliente Keycloak, por ejemplo secret |
A partir de ahora todas tus peticiones HTTP deberán ser autenticadas y autorizadas por un Token en la cabecera HTTP Authorization: Bearer token
, por ejemplo:
- Javascript
- Java
- PHP
fetch('http://localhost:8180/api/contribuyentes/{numeroDocumento}', {
method: "GET",
headers: {
"Content-type": "application/json",
"Authorization": "Bearer my_token",
}
})
.then(response => console.log(response));
.catch(error => console.log(error));
HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
.setUri("http://localhost:8180/api/contribuyentes/{numeroDocumento}")
.setHeader("Content-type", "application/json")
.setHeader("Authorization": "Bearer my_token",)
.build();
client.execute(request);
$httpClient = HttpClient::create();
$response = $httpClient->request('GET', 'http://localhost:8180/api/contribuyentes/{numeroDocumento}', [
'headers' => [
'Content-type' => 'application/json',
'Authorization' => 'Bearer my_token'
]
]);