Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERÍA
Curso
Alumno
Tema
Docente
Trujillo – Perú
2022
INDICE: Método de securizacion de API
S
HTTP-based authentication scheme (basic and bearer token)..................3
¿Qué es?...................................................................................................................................3
Cuáles son las características...................................................................................................3
Cómo es el esquema de securización.......................................................................................3
Ejemplo de implementación....................................................................................................4
API keys..................................................................................................................................6
¿Qué es?...................................................................................................................................6
¿Cuáles son las características?................................................................................................6
Cómo es el esquema de securización.......................................................................................6
Código de implementación......................................................................................................6
OAuth2 (access token and refresh token), and..................................................7
¿Qué es?...................................................................................................................................7
Cuáles son las características...................................................................................................7
Cómo es el esquema de securización.......................................................................................7
Ejemplo de implementación....................................................................................................8
OpenID (e.g., Keycloak OpenID, BankID)...............................................................9
¿Qué es?...................................................................................................................................9
Cuáles son las características...................................................................................................9
Cómo es el esquema de securización.......................................................................................9
Ejemplo de implementación de c/u (código de ejemplo).......................................................10
Bibliografía...........................................................................................................................13
HTTP-based authentication scheme (basic and bearer token)
¿Qué es?
la autenticación de acceso básica es un método diseñado para
permitir a un navegador web, u otro programa cliente, proveer
credenciales en la forma de usuario y contraseña cuando se le solicita
una página al servidor.
Ejemplo de implementación
Authorization: Bearer <token> # al portador solo debe usarse a través de HTTPS (SSL).
Authorization
openapi: 3.0.0
...
1) Definir el tipo de esquema de seguridad(HTTP bearer)
components:
securitySchemes:
bearerAuth: #nombre arbitrario para el esquema de seguridad
type: http
scheme: bearer
bearerFormat: JWT # optional, arbitrary value for documentation purposes
# 2) Apply the security globally to all operations
security:
- bearerAuth: [] # use the same name as above
paths:
/something:
get:
security:
- bearerAuth: []
aths:
/something:
get:
...
responses:
'401':
$ref: '#/components/responses/UnauthorizedError'
...
post:
...
responses:
'401':
$ref: '#/components/responses/UnauthorizedError'
...
components:
responses:
UnauthorizedError:
description: Access token is missing or invalid
También puede definir la respuesta 401 "No autorizada" devuelta para las solicitudes
que no contienen un token de portador adecuado. Dado que la respuesta 401 será
utilizada por múltiples operaciones, puede definirla en la sección global y hacer
referencia en otro lugar a través de. components/responses$ref
API keys
¿Qué es?
es un identificador que sirve como el medio de autenticación de un
usuario para el uso de los servicios proporcionados por Sovos en los
Web Services o en el API Rest.
Código de implementación
Ejemplo de implementación
https://cliente.ejemplo.com/cb?code=AbCdEfGHiJK12345&state=xyz
Con ese código podemos hacer una petición de tipo POST con esta estructura:
grant_type=authorization_code
&code=AbCdEfGHiJK12345
&redirect_uri=https://cliente.ejemplo.com/cb
&client_id=the-client-id
&client_secret=qwepuirqewipor09748nmenads
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-caché
{
“access_token”:”2YotnFZFEjr1zCsicMWpAA”,
“token_type”:”example”,
“expires_in”:3600,
“refresh_token”:”tGzv3JOkF0XG5Qx2TIKWIA”,
“example_parameter”:”example_value”
}
Con este token obtenido, se podría hacer, en nombre del cliente, todas las
cosas para lo que se hubiera dado el consentimiento.
OpenID (e.g., Keycloak OpenID, BankID).
¿Qué es?
es una capa de identidad sobre el protocolo OAuth 2.0, el cual permite
a los clientes verificar la identidad de un usuario basado en la
autenticación realizada por un servidor de autorización, así como para
obtener información de perfil del usuario utilizando un esquema REST.
Explicación:
La aplicación solicita al usuario que se autentique.
{
"account_id": "1234567890001",
"client_id": "30ff0909-0909-33d3-ae88-c9887777a7b7",
"client_secret": "mzKKjZZyeW5YgsdfBD37c5730g397agU35-Dsgeox6-
73giehbeihgleh659dhgjhdegessDge0s0ynegg987t0996nQ"
}
"""
sys.exit("System error: " + str(e) );
def getAuthToken(creds):
conn = httplib.HTTPSConnection("oauth.brightcove.com")
url = "/v4/access_token"
params = {
"grant_type": "client_credentials"
}
client = creds["client_id"];
client_secret = creds["client_secret"];
authString = base64.encodestring('%s:%s' % (client, client_secret)).replace('\n', '')
requestUrl = url + "?" + urllib.urlencode(params)
headersMap = {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Basic " + authString
};
conn.request("POST", requestUrl, headers=headersMap)
response = conn.getresponse()
if response.status == 200:
data = response.read()
result = json.loads( data )
return result["access_token"]
def getVideoViews( token , account ):
conn = httplib.HTTPSConnection("data.brightcove.com")
url = "/analytics-api/videocloud/account/" + account + "/report/"
params = {
"dimensions": "video",
"limit": "10",
"sort": "video_view",
"fields": "video,video_name,video_view",
"format": "json"
}
requestUrl = url + "?" + urllib.urlencode(params)
headersMap = {
"Authorization": "Bearer " + token
};
conn.request("POST", requestUrl, headers=headersMap)
response = conn.getresponse()
if response.status == 200: data = response.read()
result = json.loads( data )
return result
elif response.status == 401:
raise AuthError
else:
raise Exception('API_CALL_ERROR' + " error " + str(response.status) )
def getVideos( token , account ):
conn = httplib.HTTPSConnection("cms.api.brightcove.com")
url = "/v1/accounts/" + account + "/counts/videos/"
requestUrl = url
print "GET " + requestUrl
headersMap = {
"Authorization": "Bearer " + token
};
conn.request("GET", requestUrl, headers=headersMap)
response = conn.getresponse()
if response.status == 200:
data = response.read()
result = json.loads( data )
return result
elif response.status == 401:
raise AuthError
else:
raise Exception('API_CALL_ERROR' + " error " + str(response.status) )
def demo():
creds = loadSecret()
token = getAuthToken(creds)
account = creds["account"];
try:
results = getVideos( token , account )
except AuthError, e:
token = getAuthToken(creds)
results = getVideoViews( token , account )
print results
if __name__ == "__main__":
demo();
Bibliografía
(24 de 9 de 2020). Obtenido de https://help.conekta.com/hc/es-419/articles/360018086434--
Qu%C3%A9-son-las-API-Keys-y-d%C3%B3nde-las-encuentro-