14 a 16 de dezembro - desenvolvendoapis públicas ......2017 -@babadopulos autenticação...
TRANSCRIPT
![Page 1: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/1.jpg)
www.tail.digital
Desenvolvendo APIs públicas:exposição de serviços
com escalabilidade e segurança
Fernando Babadopulos@babadopulos
![Page 2: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/2.jpg)
2017- @babadopulos www.tail.digital
motivação
FRONT-ENDBACK-ENDANÁLISEDENEGÓCIO
![Page 3: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/3.jpg)
2017- @babadopulos www.tail.digital
motivação
MANTERASAPISATUALIZADAS
![Page 4: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/4.jpg)
2017- @babadopulos www.tail.digital
motivação
FUTUREPROOF
![Page 5: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/5.jpg)
2017- @babadopulos www.tail.digital
api first
VANTAGENS
![Page 6: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/6.jpg)
2017- @babadopulos www.tail.digital
api first
CORE APIs
DASHBOARD
SISTEMASINTERNOS
APLICAÇÕESEXTERNAS
![Page 7: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/7.jpg)
2017- @babadopulos www.tail.digital
api first
CORE API
DASHBOARD
SISTEMASINTERNOS
APLICAÇÕESEXTERNAS
CORE
APIs
DASHBOARD
SISTEMASINTERNOS
APLICAÇÕESEXTERNAS
![Page 8: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/8.jpg)
2017- @babadopulos www.tail.digital
mock
MOCKSERVER
FRONT-END BACK-END
ANÁLISEDENEGÓCIO
![Page 9: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/9.jpg)
2017- @babadopulos www.tail.digital
mock
http://www.mock-server.com/new MockServerClient("127.0.0.1", 1080)
.when(request()
.withMethod("POST")
.withPath("/login")
.withBody(exact("{username: 'foo', password: 'bar'}"))).respond(
response().withStatusCode(200).withHeaders(
new Header("Content-Type", "application/json; charset=utf-8"),).withBody("{ code: 200 }")
);
![Page 10: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/10.jpg)
2017- @babadopulos www.tail.digital
URL:GET/api/v3/users/10
CustomRequestHeader:GET/api/users/10”api-version: 3”
AcceptHeader:GET/api/users/10”Accept:application/vnd.mycompany.api.v3+json”
versionamento
![Page 11: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/11.jpg)
2017- @babadopulos www.tail.digital
Login/Senha
OAUTH
HMAC + Tokens
autenticação
![Page 12: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/12.jpg)
2017- @babadopulos www.tail.digital
autenticação
Aplicaçãodeterceiro
{API}
autenticarousuárioeaaplicaçãodeterceiro
![Page 13: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/13.jpg)
2017- @babadopulos www.tail.digital
autenticação
UsuárioUsernamePassword
Application IDApplication Secret
Aplicaçãodeterceiro
![Page 14: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/14.jpg)
2017- @babadopulos www.tail.digital
HMAC: Hash-based Message Authentication Code
/api/v3/security/authenticate?hmac={HMAC}
POST:{
"credential":{"applicationId":"a8e6db30-xxxx-xxxx-xxxx-xxxxxxxc9a66”"username":"[email protected]","utcTimestamp":1481252820
}}
autenticação
![Page 15: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/15.jpg)
2017- @babadopulos www.tail.digital
SALTED_SECRET=sha512(password)+applicationSecret
HMAC=hash_hmac_sha1(SALTED_SECRET,POST)
/api/v3/security/authenticate?hmac={HMAC}
RETURN:{
"status": 200,"message": ”ok","accessToken": "fe13xxxx-xxxx-xxxx-xxxx-xxxxd69f7834”
}
autenticação
![Page 16: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/16.jpg)
2017- @babadopulos www.tail.digital
Sempre utilizeSSLem suas APIS.
Não redirecione chamadas httpparahttps.
segurança
![Page 17: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/17.jpg)
2017- @babadopulos www.tail.digital
verbos http
POST GET PUT PATCH DELETE
curl -X GET https://example.com/api/v3/something
![Page 18: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/18.jpg)
2017- @babadopulos www.tail.digital
Aproveite os códigos HTTP!
códigos de retorno
{"code":200,"message":"ok","data":[…]
}
{"code":404,"message":"notfound","data":[]
}
![Page 19: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/19.jpg)
2017- @babadopulos www.tail.digital
200
códigos de retorno
OK
![Page 20: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/20.jpg)
2017- @babadopulos www.tail.digital
404
códigos de retorno
Not Found
![Page 21: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/21.jpg)
2017- @babadopulos www.tail.digital
503
códigos de retorno
ServiceUnavailable
![Page 22: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/22.jpg)
2017- @babadopulos www.tail.digital
418
códigos de retorno
I’m ateapot
![Page 23: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/23.jpg)
2017- @babadopulos www.tail.digital
json
{API}POST JSON RESPONSE JSON
![Page 24: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/24.jpg)
2017- @babadopulos www.tail.digital
limite o retorno de sua API
?fields=id,description,size,color
{"id":1597,"description":"T-Shirt","size":"medium","color":"orange”
}
![Page 25: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/25.jpg)
2017- @babadopulos www.tail.digital
Teste unitáriovs
Teste de integração
testando a api
![Page 26: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/26.jpg)
2017- @babadopulos www.tail.digital
![Page 27: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/27.jpg)
2017- @babadopulos www.tail.digital
teste com docker
$docker-compose up
![Page 28: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/28.jpg)
2017- @babadopulos www.tail.digital
docker-compose
![Page 29: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/29.jpg)
2017- @babadopulos www.tail.digital
documentação
![Page 30: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/30.jpg)
2017- @babadopulos www.tail.digital
auto coding
![Page 31: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/31.jpg)
2017- @babadopulos www.tail.digital
java client
![Page 32: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/32.jpg)
2017- @babadopulos www.tail.digital
sandbox
Facilite a vida do desenvolvedorque vai consumir a sua API.
![Page 33: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/33.jpg)
2017- @babadopulos www.tail.digital
deploy
{API}:8080 {API}:8081
![Page 34: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/34.jpg)
2017- @babadopulos www.tail.digital
deploy
{API}:8080 {API}:8081
http {upstream app_pool {
server localhost:8080fail_timeout=1m;server localhost:8081fail_timeout=1m;
}server {
listen 80;location / {
proxy_pass http://app_pool;}
}}
![Page 35: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/35.jpg)
2017- @babadopulos www.tail.digital
monitoramento
Quanto mais sucesso tiver a sua API,mais sistemas você pode quebrar!
![Page 36: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/36.jpg)
2017- @babadopulos www.tail.digital
escalabilidade
{API}:8080 {API}:8081 {API}:8080 {API}:8081 {API}:8080 {API}:8081
AWSLOADBALANCER
![Page 37: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/37.jpg)
2017- @babadopulos www.tail.digital
limitando as requisições
{API}:8080 {API}:8081
http {limit_req_zone $binary_remote_addr zone=one:10mrate=1r/s;upstream app_pool {
server localhost:8080fail_timeout=1m;server localhost:8081fail_timeout=1m;
}server {
listen 80;location / {
limit_req zone=oneburst=5;proxy_pass http://app_pool;
}}
}
![Page 38: 14 a 16 de dezembro - DesenvolvendoAPIs públicas ......2017 -@babadopulos autenticação Aplicação de terceiro {API} autenticar o usuário e a aplicação de terceiro 2017 -@babadopulos](https://reader034.vdocuments.net/reader034/viewer/2022052104/603fb1e9d67a4026121e8d5a/html5/thumbnails/38.jpg)
www.tail.digital
Desenvolvendo APIs públicas:exposição de serviços
com escalabilidade e segurança
Fernando Babadopulos@babadopulos
OBRIGADO!